Riassegna i tasti Ctrl e Alt - errore "BadValue" xmodmap


13

Sto tentando di rimappare la tastiera per rendere utilizzabili emacs. La mia tastiera ergonomica mette il suo singolo tasto Control in un'isola isolata a 4 tasti a sinistra.

Il sistema operativo è la compressione Debian.

Ecco le righe che sto tentando di alimentare xmodmap, le inserisco in un file ~ / .Xmodmap:

chiaro controllo
cancella Mod1
! I tasti Alt sono etichettati "Opzione" sulla mia tastiera,
! usando xev mostra loro di inviare rispettivamente i tasti Alt_L e Alt_R
keysym Alt_L = Control_L
keysym Alt_R = Control_R
! I tasti Super_L e Super_R sono i tasti di Windows
keysym Super_L = Alt_L
keysym Super_R = Alt_R
aggiungi Control = Control_L Control_R
aggiungi Mod1 = Alt_L Alt_R

Il mio obiettivo è far sì che i miei Alttasti Opzione (aka ) si comportino come i tasti di controllo e far sì che i miei tasti Windows (aka Super) si comportino come Alt.

Ecco i codici chiave e i keyms emessi da xev per le chiavi in ​​questione. Nota, la mia tastiera (una tastiera ergonomica Goldtouch) ha solo un tasto di controllo.

keycode 37 (keysym 0xffe3, Control_L)
keycode 64 (keysym 0xffe9, Alt_L)
codice chiave 133 (keysym 0xffeb, Super_L)
codice chiave 134 (keysym 0xffec, Super_R)
keycode 108 (keysym 0xffea, Alt_R)

Ecco cosa viene visualizzato xev durante l'esecuzione xmodmap .Xmodmap

MappingNotify event, serial 34, NO sintetico, finestra 0x0,
    richiesta MappingKeyboard, first_keycode 204, conteggio 1

MappingNotify event, serial 34, NO sintetico, finestra 0x0,
    richiesta MappingKeyboard, first_keycode 64, conteggio 1

MappingNotify event, serial 34, NO sintetico, finestra 0x0,
    richiesta MappingKeyboard, first_keycode 108, conteggio 1

MappingNotify event, serial 34, NO sintetico, finestra 0x0,
    richiesta MappingKeyboard, first_keycode 206, conteggio 1

MappingNotify event, serial 34, NO sintetico, finestra 0x0,
    richiesta MappingKeyboard, first_keycode 133, conteggio 1

MappingNotify event, serial 34, NO sintetico, finestra 0x0,
    richiesta MappingKeyboard, first_keycode 134, conteggio 1

Ed ecco l'errore restituito da xmodmap:

X Errore della richiesta non riuscita: BadValue (parametro intero fuori intervallo per l'operazione)
Codice operativo principale della richiesta non riuscita: 118 (X_SetModifierMapping)
Valore nella richiesta non riuscita: 0x17
Numero di serie della richiesta non riuscita: 17
Numero seriale corrente nel flusso di output: 17

qualche suggerimento su come posso risolvere questo?


Su quale sistema operativo e versione? Quale ampio tipo di tastiera (PC / Mac / Sun / ...)? Prova a correre xevin un terminale, quindi xmodmapin un altro terminale. Dovresti vedere alcune MappingNotifystanze xev, aggiungerle alla tua domanda. Inoltre, nella xevfinestra, premi i vari tasti coinvolti e dicci a quale codice chiave e keyym corrispondono (la parte “keycode 37 (keysym 0xffe3, Control_L)” dell'output xev).
Gilles 'SO- smetti di essere malvagio' il

Risposte:



7

Guardando la soluzione alternativa collegata da Giles, questo è ciò che ha funzionato per me:

clear Mod1
clear Mod4

keycode 204 = NoSymbol NoSymbol NoSymbol NoSymbol
keycode 206 = NoSymbol NoSymbol NoSymbol NoSymbol

keycode 64 = Control_L Control_L Control_L Control_L
keycode 133 = Alt_L Alt_L Alt_L Alt_L
keycode 134 = Alt_R Alt_R Alt_R Alt_R
keycode 108 = Control_R Control_R Control_R Control_R

add Control = Control_L Control_R
add Mod1 = Alt_L Alt_R

I miei tasti Opzione ora funzionano come i tasti Controllo e i tasti Windows come i tasti Alt.


3

Il problema sorge quando si tenta di aggiungere un keysym a un modificatore che è già stato aggiunto a un'altra chiave del modificatore. È fondamentale sapere che se si aggiunge un keysym a un modificatore tutte le altre palestre che accompagnano il keysym nel caso vengano aggiunte anche a quel modificatore.

Per esempio:

clear mod5
add mod5    = ISO_Level3_Shift Mode_switch

può provocare

mod5        backslash (0x33),  Caps_Lock (0x42),  ISO_Level3_Shift (0x5c),  Mode_switch (0xcb)

perché hai qualcosa del genere

keycode  66 = Caps_Lock NoSymbol ISO_Level3_Shift

nella tua ~ / .Xmodmap (Visualizza il codice chiave corrente per mappare i tasti tramite xmodmap -pke)

che produrrà l'errore BadValue in questione quando provi anche a fare qualcosa del genere

add lock    = Caps_Lock

perché Caps_Lock è già stato aggiunto al modificatore mod5.


2

Questa è un'altra soluzione al tuo problema, anche se in realtà non risponde alla tua domanda. Modifica xorg.conf, inserendo quanto segue nella sezione "InputDevice":

 Option "XkbOptions" "ctrl:swapcaps"
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.