Fai scorrere il cursore dello zoom di Microsoft Natural Ergonomic Keyboard 4000 e 7000 su e giù, in 14.04 (Trusty)


29

Ho provato a usare questo tutorial per far funzionare l'interruttore di scorrimento sulla mia tastiera Microsoft Natural Ergonomic 4000. Ma ho riscontrato il seguente errore:

sudo: /lib/udev/keymap: command not found

Ho la versione udev 204-5ubuntu20.2(la versione trovata in Trusty)

Ho notato che questa versione non include lo keymapstrumento. Ma noto che le udevversioni maggiori ( che sono disponibili per Debian, per esempio ) includono questo strumento.

Qualcuno potrebbe spiegare questa differenza per me? =) E cosa devo fare in questo caso: installare il pacchetto dal repository Debian?


Vuoi risolvere questo problema usando udev o stai bene con le alternative? Sarei un po 'riluttante a installare pacchetti debian udev non compressi su Ubuntu.
— Jobin

eventuali alternative sono benvenute =)
— Dmitry Belaventsev

Fa questo aiuto?
— jobin

Cosa fa comunque l' keymaputilità non più spedita ?
— opaco

Ho aggiornato il mio tutorial (a cui sei collegato) per includere la risposta di seguito. Grazie :-)
— Terence Eden,

Risposte:


27

Se guardi /lib/udev/rules.d/60-keyboard.rulesvedrai che tutto è stato rovinato. Questa è solo una parte della fusione udev in systemd che è andata avanti.

Tutte le regole hardware sono compilate in un database hardware binario. Seguono un formato davvero strano. Le regole esistenti per le tastiere fornite con udev sono presenti /lib/udev/hwdb.d/60-keyboard.hwdb. Guardalo ma non modificarlo (gli aggiornamenti probabilmente lo sovrascriveranno).

Per aggiungere le tue regole personalizzate, creeremo un nuovo file /etc/udev/hwdb.d/eseguendo sudoedit /etc/udev/hwdb.d/61-keyboard-local.hwdb. Tutto quello che devi fare è incollare quanto segue -

Se si utilizza il modello 4000:

keyboard:usb:v045Ep00DB*
 KEYBOARD_KEY_0c022d=pageup
 KEYBOARD_KEY_0c022e=pagedown

Se si utilizza il modello 7000:

keyboard:usb:v045Ep071D*
 KEYBOARD_KEY_0c022d=pageup
 KEYBOARD_KEY_0c022e=pagedown

Questo è adattato dal tutorial che hai pubblicato, quindi potrebbe essere necessario modificare in base alla tastiera. Guarda lsusbe assicurati che il vendor:productcodice sopra (come v####p####) sia corretto. Non funzionerà se non corrispondono.

Una volta terminata la modifica, ricompila hwdbciò che udev utilizza:

sudo udevadm hwdb --update

E quindi potrebbe essere necessario ricollegarlo. Se si tratta di una tastiera PS / 2, potrebbe essere necessario riavviare. In alcuni casi è inoltre necessario riavviare.


Grazie per la risposta! hwdb.ddir è vuoto, rules.dcontiene solo 3 file ( 70-persistent-cd.rules, 70-persistent-net.rules, README). Quindi, intendevi dire che dovevo creare un nuovo file? O devo averne alcuni da modificare?
— Dmitry Belaventsev,

Sì, dovresti creare un nuovo file. Le regole della tastiera esistenti sono presenti /lib/udev/hwdb.d/60-keyboard.hwdbma le modifiche ad essa andranno perse dopo gli aggiornamenti di udev.
— Oli

2
sfortunatamente, il pulsante obiettivo non funziona
— Dmitry Belaventsev,

1
@matt, puoi mettere più alias come qui
— user.dz

1
Invece di collegare | scollegare si può usare udevadm trigger /dev/input/by-id/usb-Microsoft-*per innescare l'aggiornamento
— Alexandr Priymak,

37

Ubuntu 15.10 : non ho avuto successo con le risposte precedenti.

Ho usato con successo un approccio simile ai precedenti - le istruzioni sono state menzionate in /lib/udev/hwdb.d/60-keyboard.hwdb.

Ho creato un nuovo file hwdb usando sudo nano /etc/udev/hwdb.d/70-keyboard.hwdb contenente:

# Microsoft Natural Ergonomic Keyboard 4000 - rimappa lo zoom avanti / indietro alla pagina su / giù
evdev: Ingresso: b0003v045Ep00DB *
 KEYBOARD_KEY_c022d = PageUp
 KEYBOARD_KEY_c022e = PageDown

dopo che ho corso

sudo udevadm hwdb: aggiornamento
sudo udevadm control --Reload

e ha ricollegato la tastiera e ha funzionato.

Per il modello 7000 utilizzare evdev:input:b003v045Ep071D*


9
Questa è la risposta corretta per Ubuntu 16.04
— Greg Dan,

2
Grazie. Sembra infatti che le keyboard:definizioni non funzionino più su Ubuntu 1604 e debba esserlo evdev:. Esiste anche una mappatura predefinita /lib/udev/hwdb.d/60-keyboard.hwdbper il modello 4000 che li mappa su zoomin/ zoomout- tuttavia X ignora completamente gli eventi (xev non mostra nulla) quindi è ancora necessario un cambiamento di configurazione come questo.
— wump

2
Le b0003sembra che sia bus-specifici (quindi potrebbe funzionare solo in alcune porte USB). Se qualcosa di simile b*v045Ep071D*funziona, potrebbe essere migliore.
— Oli

3
Grazie, funziona in Ubuntu 16.04 ( evdev:input:XXXinvece di keyboard:usb:YYY). È inoltre possibile utilizzare una mappatura diversa anziché pageup/ pagedown. Ad esempio, sto usando scrollupe scrolldownper eseguire lo scorrimento reale.
— Martin Grůber,

1
Funziona anche in Kubuntu 17.10
— OOPMan il

7

La soluzione originale pubblicata da Oli non ha funzionato per me, ma funziona dopo che ho cambiato i numeri chiave "0c022d"e "0c022e"in "c022d"e "c022e". Sto usando un modello 4000, quindi non posso verificare se la stessa modifica è necessaria per il modello 7000.

Per ripetere la risposta di Oli, ecco cosa ho fatto: creare un nuovo file eseguendo sudo nano /etc/udev/hwdb.d/61-keyboard-local.hwdb. Incolla le seguenti righe nel file (per il modello 4000):

keyboard:usb:v045Ep00DB*
 KEYBOARD_KEY_c022d=pageup
 KEYBOARD_KEY_c022e=pagedown

Dopo aver modificato il file, ricompilare l'hwdb utilizzato da udev:

sudo udevadm hwdb --update

Quindi ricollegare la tastiera.


Grazie. Stranamente, avevo bisogno di eseguire questa modifica anche adesso, e dopo tutto era necessario un riavvio (non solo la sostituzione).
— opaco

ha funzionato per me su Ubuntu 15.04. Grazie!
— Pierre,

Questo ha funzionato per me su Debian Jessie 8.5.
— Nicolás,

Voglio comprare una tastiera economica e sono curioso di sapere se funziona con 16.04 LTS? O non c'è un problema come questo lì.
— Arpad Horvath,

4

Aggiungendo alla risposta di Oli, se si desidera lo scorrimento della linea come nel caso di un mouse, è possibile modificare pageup / pagedown su su / giù nella propria regola personalizzata. Piace:

keyboard:usb:v045Ep00DB*
 KEYBOARD_KEY_c022d=up
 KEYBOARD_KEY_c022e=down

A proposito: Su / Giù è predefinito in 18.04.
— LinuxLuigi,

1

La bella soluzione è qui e posso solo aggiungere che puoi mappare le chiavi su chiavi X inutilizzate in questo modo:

$ cat /lib/udev/rules.d/95-keymap.rules
...
ENV{ID_VENDOR}=="Microsoft", ENV{ID_MODEL_ID}=="00db", RUN+="keymap $name 0xc022d katakana 0xc022e katakanahiragana
...

I nomi corretti da utilizzare al posto di katakanapossono essere trovati qui .

Dopo il riavvio ;-) puoi testarlo zoomine le zoomoutchiavi sono mappate correttamente, e anche per scoprire i nomi propri delle chiavi (da usare rc.xmlper OpenBox WM, ad esempio) usando xev:

$ xev
...
KeyRelease event, serial 46, synthetic NO, window 0x3c00001,
    root 0x291, subw 0x0, time 1492891, (-261,-61), root:(573,380),
    state 0x0, keycode 101 (keysym 0xff27, Hiragana_Katakana), same_screen YES,
    XLookupString gives 0 bytes: 
    XFilterEvent returns: False
...

Ora puoi collegare nuove chiavi a un'azione completamente arbitraria. Nel mio caso del gestore di finestre OpenBox ho usato qualcosa del genere:

$ cat <whatever>/rc.xml
...
<keybind key="Katakana">
  <action name="Execute">
    <command>volume_up.sh</command>
  </action>
</keybind>
<keybind key="Hiragana_Katakana">
  <action name="Execute">
    <command>volume_down.sh</command>
  </action>
</keybind>
...
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.