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 xmodmapcomando a ~/.bashrcfunzionato, ma richiede di avviare un terminale ogni volta dopo il login)
Alcuni anni fa (?), È xkbstato scelto per occuparsi della mappatura e della configurazione dei tasti (interfacciamento con X), ma xmodmappotrebbe anche richiedere modifiche relative ai tasti a X, dopo che xkbha 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
.desktopInizialmente 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.desktopfile e inserirlo:
[Desktop Entry]
Name=MyXmodmap
Exec=/usr/bin/xmodmap /home/me/.Xmodmap
Terminal=false
Type=Application
X-GNOME-Autostart-enabled=true
sostituisci mecon il tuo nome utente (nota che non mi sono preoccupato di provare ~/o $HOMEche 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 ~/.Xmodmapfile in questo caso (o utilizzare l' -eopzione 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, xmodmapsembra 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 xkbprocesso viene eseguito in ritardo nel processo di accesso e può terminare dopo l' xmodmapesecuzione. Sembra una condizione di gara ... Quindi, finalmente, ho cambiato la execriga del file desktop di avvio automatico in
Exec=$HOME/bin/mystart &
(nota &)
mystartè uno script in una nuova directory che binho 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!