In ritardo alla festa, ma anche questo mi ha fatto impazzire; e, testardo come me, rinunciare non era un'opzione.
Fondamentalmente questo è quello che ho provato, (come il mio utente o root, se necessario)
- ~ / .Xmodmap
- ~ / .xsession, ~ / .xsessionrc
- ~ / .Gnomerc
- ~ / .Xprofile
- ~ / .Xinitrc
- /etc/X11/Xsession.d/myscript
- /usr/share/X11/xorg.conf.d/ ( file di configurazione, non toccarlo )
(In realtà, aggiungendo il xmodmap
comando a ~/.bashrc
funzionato, ma richiede di avviare un terminale ogni volta dopo il login)
Alcuni anni fa (?), È xkb
stato scelto per occuparsi della mappatura e della configurazione dei tasti (interfacciamento con X), ma xmodmap
potrebbe anche richiedere modifiche relative ai tasti a X, dopo che xkb
ha funzionato durante l'inizializzazione della sessione X.
Il problema è quando dovrebbero verificarsi queste impostazioni xmodmap?
E sembra quei file di cui sopra sono trattati troppo presto nel processo, e sia X non era pronta ad accettare xmodmap modifiche o xkb li sovrascriverà.
Nota: ho aggiunto un po 'di "tracciamento" a questi file per assicurarmi che fossero effettivamente in esecuzione in qualche momento!
Una soluzione che sembra funzionare
.desktop
Inizialmente non volevo aggiungere un file (un semplice script di una riga doveva essere sufficiente), ma funziona, quindi eccolo qui.
La soluzione viene da Come rimappare o scambiare i tasti speciali della tastiera in Linux? "soluzione 1"
Fondamentalmente creare un ~/.config/autostart/my-xmodmap.desktop
file e inserirlo:
[Desktop Entry]
Name=MyXmodmap
Exec=/usr/bin/xmodmap /home/me/.Xmodmap
Terminal=false
Type=Application
X-GNOME-Autostart-enabled=true
sostituisci me
con il tuo nome utente (nota che non mi sono preoccupato di provare ~/
o $HOME
che potrebbe funzionare altrettanto bene al posto di /home/me
, e il percorso completo di xmodmap probabilmente non è necessario ...), e aggiungi il bit exec
chmod +x ~/.config/autostart/my-xmodmap.desktop
I comandi xmodmap devono essere in un ~/.Xmodmap
file in questo caso (o utilizzare l' -e
opzione o scegliere un altro nome file!). Esci e rientra.
Si noti che è possibile creare il programma di avvio da "Applicazioni di avvio".
Un'altra soluzione sarebbe quella di dimenticare xmodmap e imparare a configurare xkb
!
Modifica (di nuovo)
A volte, forse il 25% degli accessi, xmodmap
sembra che non funzioni, mentre il comando viene effettivamente eseguito (un tracker lo dimostra). L'unica conclusione a cui potrei arrivare in questo momento è che il xkb
processo viene eseguito in ritardo nel processo di accesso e può terminare dopo l' xmodmap
esecuzione. Sembra una condizione di gara ... Quindi, finalmente, ho cambiato la exec
riga del file desktop di avvio automatico in
Exec=$HOME/bin/mystart &
(nota &
)
mystart
è uno script in una nuova directory che bin
ho creato che contiene
#!/bin/bash
sleep 5
/usr/bin/xmodmap /home/me/.Xmodmap &
date >> /tmp/xmodmap-has-run
e
chmod u+x ~/bin/mystart
Lo script ha dormito 5 secondi prima di eseguire xmodmap e tiene traccia di quando è stato eseguito (nel file /tmp/xmodmap-has-run
).
Spero che sia tutto!