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.