2010-10-14 8 views
5

Possiedo un Razer Naga Mouse, Essentaly ha un piccolo tastierino numerico sul lato di esso. Voglio rimappare queste chiavi con chiavi inutilizzate diverse o comandi bash. Posso farlo facilmente usando xev per prendere il keycode (ad esempio, "1" sul mouse è keycode 87) e quindi posso usare xmodmap per associare il keycode a una chiave diversa.Mappare una chiave in base al dispositivo in cui è attiva la chiave? (Linux)

Tuttavia il tastierino numerico sulla mia tastiera erediterà anche questo come il codice di accesso è lo stesso, quello che ho notato è che il "seriale" è diverso.

Ad esempio, ecco l'output di xev quando si preme il pulsante "1" sul mio tastierino numerico del mouse.

KeyPress event, serial 34, synthetic NO, window 0x1c00001, 
root 0x1ae, subw 0x0, time 2179878, (170,-2), root:(198,345), 
state 0x0, keycode 87 (keysym 0xff9c, KP_End), same_screen YES, 
XLookupString gives 0 bytes: 
XmbLookupString gives 0 bytes: 
XFilterEvent returns: False 

KeyRelease event, serial 35, synthetic NO, window 0x1c00001, 
root 0x1ae, subw 0x0, time 2179966, (170,-2), root:(198,345), 
state 0x0, keycode 87 (keysym 0xff9c, KP_End), same_screen YES, 
XLookupString gives 0 bytes: 
XFilterEvent returns: False 

e qui è l'uscita quando si preme "1" sul mio tastiere tastierino numerico

KeyPress event, serial 35, synthetic NO, window 0x1c00001, 
root 0x1ae, subw 0x0, time 2180261, (170,-2), root:(198,345), 
state 0x0, keycode 87 (keysym 0xff9c, KP_End), same_screen YES, 
XLookupString gives 0 bytes: 
XmbLookupString gives 0 bytes: 
XFilterEvent returns: False 

KeyRelease event, serial 36, synthetic NO, window 0x1c00001, 
root 0x1ae, subw 0x0, time 2180341, (170,-2), root:(198,345), 
state 0x0, keycode 87 (keysym 0xff9c, KP_End), same_screen YES, 
XLookupString gives 0 bytes: 
XFilterEvent returns: False 

C'è qualche cosa che potrebbe mappare i tasti sul mio mouse basati su questo?

risposta

1
+0

Ho ottenuto il codice linux per il mio sistema e bloccato ora. Non vedo la funzione init_module() da nessuna parte in/drivers/hid/usbhid :( –

+0

Ho trovato/dev/input/by-id/usb-Razer_Razer_Naga-event-kbd e facendo un hexdump su questo sembra qualcosa che posso fare a destra programma per analizzare. L'interpretazione di questa rotta da parte di X per Razer Naga dovrà essere disabilitata. –

+0

Non mi sono reso conto che la domanda è quasi un anno ... spero che la mia risposta possa aiutarti, però :) –

2

Invece di xmodmap, provare a utilizzare setxkbmap e xkbcomp. Il comando xkbcomp consente di specificare un ID dispositivo di input (utilizzando l'opzione -i).

Per ottenere un elenco di ID dispositivo, eseguire xinput --list. (FWIW, la mia Razer Salmosa è stato chiaramente etichettato come "Razer Razer Salmosa".)

Ecco come ho convertito la mia tastiera USB (ID 16) per utilizzare la mappatura dei tasti tedesco, pur mantenendo la mia tastiera portatile su una mappatura degli Stati Uniti:

setxkbmap de -print | xkbcomp - -i 16 $DISPLAY 

io non so davvero come impostare xkb mappature, ma ho trovato un tutorial that looks pretty good.