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.