come far funzionare il dispositivo di scorrimento (e altri pulsanti) di Microsoft Natural Ergonomic Keyboard 4000?


21

Uso una tastiera Microsoft Natural Ergonomic 4000 su Ubuntu 10.10. I tasti multimediali (Volume, Riproduci / Pausa) funzionano, anche il pulsante Posta e Calcolatrice.

Ora mi piacerebbe usare il dispositivo di scorrimento dello zoom, se fosse possibile mi piacerebbe usare lo scorrimento della pagina con quello. C'è un modo per abilitarlo?


2
Vedi askubuntu.com/questions/471802/… . Le risposte precedenti qui potrebbero essere obsolete.
matt

Risposte:


18

Creare il file /etc/udev/rules.d/98-ms-ergo.rulescon i seguenti contenuti:

ACTION=="remove", GOTO="keyboard_end"
KERNEL!="event*", GOTO="keyboard_end"
ENV{ID_INPUT_KEY}=="", GOTO="keyboard_end"
SUBSYSTEMS!="usb", GOTO="keyboard_end"

SUBSYSTEMS=="usb", IMPORT{builtin}="usb_id"

ENV{ID_VENDOR}=="Microsoft", ENV{ID_MODEL_ID}=="00db", RUN+="keymap $name 0xc022d pageup 0xc022e pagedown"

GOTO="keyboard_end"

In questo modo il tasto di zoom verrà mappato su pagina su / pagina giù senza modificare i file installati /lib/udev.

Una volta aggiunto, è sufficiente scollegare e ricollegare la tastiera affinché funzioni.


Per me ha funzionato perfettamente con Fedora 19.
Rubens Mariuzzo,

Per Microsoft Ergonomic 7000, il modello sembra essere 071d (come ottenuto da lsusb) piuttosto che 00db - quindi se qualcuno lo prova per 7000 probabilmente dovrebbe sostituire 00db con 071d nel file sopra. Comunque nel mio caso (Ubuntu 14.04), che non funziona, forse è legato al fatto evtestche il dispositivo di scorrimento dello zoom non attiva alcun evento, a differenza della maggior parte degli altri tasti della tastiera Ergonomic 7000 che funzionano. Non ne sono sicuro poiché il pulsante Web / Home non mostra alcun output in evtestentrambi - sebbene Ubuntu lo raccolga.
matt

1
Non riesco nemmeno a far funzionare il 4000 il 14.04. Non vedere eventi in xev.
Michael,

Ho provato questo il 14.10 e non ha funzionato.
Rubens Mariuzzo,

@Cocoabean xevnon funziona neanche per me. Quello che fa è evtest /dev/input/event3. Se event3non ha alcuna reazione a questa chiave, prova con altri eventi ( event[0..9]).
Nicolás,

9

Su Xubuntu 13.10 (forse anche su Ubuntu 13.10) lo stesso può essere fatto come segue:

Modifica i mapping dei tasti in /lib/udev/hwdb.d/60-keyboard.hwdb:

###########################################################
# Microsoft
###########################################################

# Microsoft Natural Ergonomic Keyboard 4000
keyboard:usb:v045Ep00DB*
 KEYBOARD_KEY_c022d=pageup
 KEYBOARD_KEY_c022e=pagedown

Correre sudo udevadm hwdb --update

Reboot.


1
Ho lavorato il 14.04 per me
Amir Uval il

Il mio 60-keyboard.hwdb aveva una voce esistente per MNEK4K, con tastiera: usb: b0003v045Ep00DB *. La modifica delle azioni non ha funzionato. L'aggiunta di una nuova voce con tali azioni ha funzionato.
Alrekr,

Ha funzionato come un incanto il 16.04. Ho usato "su" e "giù" (anziché resp. "Pageup" e "pagedown") per ottenere uno scorrimento più fluido durante la navigazione delle pagine web. Molte grazie!
Pierre,

Puoi mappare katakanae katakanahiragana(o qualsiasi altro codice chiave inutilizzato da hal.freedesktop.org/quirk/quirk-keymap-list.txt ) piuttosto che alias a chiavi esistenti. In questo modo puoi riconoscere e usare i tasti in combinazione con modificatori per attivare volume, lingua, dimensioni, ecc. (Configura il tuo window manager per goderti due nuovi super tasti).
dmitry_romanov

4

Per configurare la tastiera ergonomica Microsoft 4000 dobbiamo creare un file di configurazione che contenga la dichiarazione della tastiera e i record per la mappatura dei tasti.

Per fare ciò ci sono tre tipi di informazioni che dobbiamo determinare:

  • Tipo di tastiera
  • Il tasto scancodeche è il tasto reale sulla tastiera
  • Il tasto nameper assegnare la funzionalità desiderata al tasto selezionato

Per prima cosa trova il tipo di tastiera:

Nel terminale eseguire il comando seguente:

lsusb 

l'output determina il tipo di tastiera:

...
Bus 004 Device 022: ID 045e:00db Microsoft Corp. Natural Ergonomic Keyboard 4000 V1.0
...    

Appare dopo ID. In questo caso lo è045e:00db

In secondo luogo trovare lo scancode e il nome della chiave.

Per determinarli, utilizziamo il evtestprogramma che disconnette le informazioni sull'evento di un dispositivo specifico sul terminale:

evtest

Se non si dispone del programma, installarlo eseguendo il comando seguente:

sudo apt-get install evtest

Eseguendo il evtestprogramma otteniamo il seguente output:

No device specified, trying to scan all of /dev/input/event* Available devices: 
/dev/input/event0:    Power Button     
/dev/input/event1:    Power Button     
/dev/input/event2:    PixArt USB Optical Mouse   
/dev/input/event3:    Microsoft Natural® Ergonomic Keyboard 4000   
/dev/input/event4:    Microsoft Natural® Ergonomic Keyboard 4000   
/dev/input/event5:    HDA Intel Front Headphone     
/dev/input/event6:    HDA Intel Line Out     
/dev/input/event7:    HDA Intel Line   
/dev/input/event8:    HDA Intel Rear Mic     
/dev/input/event9:    HDA Intel Front Mic     
/dev/input/event10:   HDA ATI HDMI HDMI/DP,pcm=3
Select the device event number [0-10]:

L'output è praticamente autoesplicativo, inserisci il numero appropriato per la tastiera, che qui è il numero 3quindi premi invio:

In questo modo, verranno emesse molte informazioni sul terminale e termina nelle seguenti righe:

... 

Testing ... (interrupt to exit)
Event: time 1472203902.240594, type 17 (EV_LED), code 0 (LED_NUML), value 0
Event: time 1472203902.240594, -------------- SYN_REPORT ------------
Event: time 1472203902.281456, type 4 (EV_MSC), code 4 (MSC_SCAN), value 70058
Event: time 1472203902.281456, type 1 (EV_KEY), code 96 (KEY_KPENTER), value 0
Event: time 1472203902.281456, -------------- SYN_REPORT ------------

Ora con ogni pressione del tasto sulla tastiera scarica le informazioni sul tasto. Ad esempio il tasto Barra accanto a Maiusc destro mostra:

Event: time 1472205062.294078, type 4 (EV_MSC), code 4 (MSC_SCAN), value 70038
Event: time 1472205062.294078, type 1 (EV_KEY), code 12 (KEY_SLASH), value 0
Event: time 1472205062.294078, -------------- SYN_REPORT ------------

La prima riga del registro contiene le informazioni sul tasto effettivo sulla tastiera, ad esempio scancodeche segue il valore. In questo caso è 70038

La seconda riga contiene le informazioni sulla funzionalità assegnate come il nome della chiave. In questo caso è SLASH . Esamina le altre chiavi per trovare i nomi appropriati.

Quindi in breve:

  • Il nostro tipo di tastiera è: 045e: 00db
  • Lo scancode del tasto Slash è: 70038
  • Il nome della chiave per l'assegnazione è SLASH

Dopo aver raccolto le informazioni necessarie creiamo il file di configurazione:

sudoedit /etc/udev/hwdb.d/61-keyboard-local.hwdb

Premi iper attivare la modalità Inserisci e digita quanto segue:

keyboard:usb:v045Ep00DB*
 KEYBOARD_KEY_70038=minus      

Salvare ed uscire premendo, escapequindi digitando :wqe premendo invio .

Quindi eseguire i due comandi seguenti per rendere effettiva la configurazione:

sudo udevadm hwdb --update
sudo udevadm control --reload

Scollegare infine la tastiera e ricollegarla.

Alcune note sul file di configurazione:

  • Il formato del file dovrebbe essere esattamente come mostrato, lo spazio prima della mappatura dei record è critico.
  • Invece di sudoeditutilizzare qualsiasi altro editor di testo, ricorda di seguire l'esatto formato del file come spiegato sopra.
  • Esistono due caratteri aggiunti al tipo di tastiera: ve pche rappresentano fornitore e prodotto. Sono anche importanti.
  • Il tipo di tastiera è scritto in maiuscolo nel file di configurazione. Il nostro tipo di tastiera era 045e: 00db ma nella configurazione inseriamo v045Ep00DB *
  • Lo scancode della chiave viene subito dopo KEYBOARD_KEY_
  • Il nome della chiave appare in minuscolo nel file di configurazione
  • Puoi personalizzare praticamente ogni tasto della tastiera seguendo questo tutorial.

3

Il problema è che il driver evdev ignora i codici chiave> 255 .
La soluzione, grazie a Marco Chiappero :

1) devi definire tutti i rimappaggi di cui hai bisogno (sotto forma di 
"scancode keycode" list) e inseriscili in un file in "/ lib / udev / keymaps /" 
(ad esempio ho creato logitech-lx710-cordless lì). Puoi trovare il
scancodes usando evtest ("sudo evtest / dev / input / eventX", dove X è tuo 
dispositivo tastiera. Fai attenzione, a volte queste chiavi extra sono esposte
un dispositivo diverso o l'interfaccia del mouse: ad es. event3 -> kbd, event4 ->
mouse e chiavi extra). Ecco alcuni esempi di output:

Evento: tempo 1294153475.909379, tipo 4 (Misc), codice 4 (ScanCode), valore c1028
"c1028" è il valore scancode che inserirai nel tuo file keymap, quindi 
raccogliere un numero da input.h come descritto in precedenza e convertirlo in 
esadecimale. Quindi scrivi la coppia di rimappatura nel tuo file, magari con un descrittivo
commenta così:

0xC1028 0x9a # pulsante di rotazione

Iterate per ogni chiave> 255.

2) devi dire a udev di applicare questo file di rimappatura ogni volta che incontra 
la tua tastiera, quindi modifica il file "/lib/udev/rules.d/95-keymap.rules" aggiungendo 
la regola udev che corrisponde al tuo HW. Per favore, non chiedermi di definire una regola per
tu. 
NOTA: è possibile applicare immediatamente il file keymap digitando da soli 
"sudo / lib / udev / keymap / dev / input / eventX / lib / udev / keymaps / $ YOUR_FILE" e 
verificalo nuovamente con evtest.

Ora puoi usare l'editor delle scorciatoie di Gnome per vedere che i tasti sono adesso 
utilizzabile all'interno di X e crea nuove scorciatoie. Tuttavia potrebbe accadere che no
keysym è assegnato a quel codice chiave (quindi vedrai 0xXY invece di XF86Foo). 
È possibile visualizzare i mapping correnti tramite xmodmap -pke, salvare l'output in a 
file e modificarlo se necessario (un elenco completo di codici keysym è disponibile in
"/ Usr / lib / X11 / XKeysymDB").
Dopo aver aggiunto le chiavi della palestra a quelle chiavi rimappate, è possibile salvare questo file
come ~ / .Xmodmap (o come / etc / X11 / Xmodmap se si desidera applicare a tutti gli utenti).

Capisco che i pulsanti che voglio sono c022d e c022e, ma non riesco a trovare l'input.h.
Martin Ueding,

Mi pare di capire (ma non posso test perché non ho questo hardware) non si ha realmente bisogno input.h, è solo bisogno di modificare questo file: /lib/udev/rules.d/95-keymap.rules. (Può essere qui al launchpad puoi trovare persone con lo stesso hardware, quindi più in grado di aiutare bugs.launchpad.net/ubuntu/+source/xorg-server/+bug/313514 ). Hai modificato il file che ho menzionato sopra?
desgua,

1
Questa è una risposta troppo tecnica e disorganizzata per la maggior parte delle persone. Alcune lacune gravi: nessun aiuto per determinare l'appropriato / dev / input / eventX, passaggi poco chiari mescolati con informazioni contestuali e richieste di non chiedere istruzioni per la creazione di keymap.
Alain O'Dea,

1
evtest non è nemmeno installato di default, peggiorando ulteriormente la situazione.
Alain O'Dea,

Attraverso tentativi ed errori ho scoperto che la mia tastiera è / dev / input / event3 e evtest non rileva alcun evento dal cursore dello zoom.
Alain O'Dea,

0

Sulla mia macchina, i tasti extra (HomePage, Cerca, Calc, ecc.) E l'input di zoom sono stati inviati tramite / dev / input / event5 mentre i normali tasti sono stati inviati tramite / dev / input / event4. Il valore della chiave zoom corrisponde a quello di queueoverflow.

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.