Perché il mio file ~ / .Xmodmap non verrà caricato all’accesso?

Ho creato il seguente file ~/.Xmodmap come da questa risposta .

 keysym Delete = Menu keysym Menu = Delete clear Lock keycode 0x42 = Escape 

In altre parole, scambia Delete e Menu , e fai Caps Lock un’altra Escape .

La prossima volta che ho effettuato il login, Ubuntu mi ha chiesto se volevo caricare ~/.Xmodmap come previsto. L’ho caricato, ma non è successo niente (né allora né nei successivi accessi). Se xmodmap ~/.Xmodmap manualmente xmodmap ~/.Xmodmap , funziona come previsto.

So che questo ha funzionato all’inizio della beta 10.10, ma non funziona sulla mia nuova installazione 10.10. Non ho provato niente prima del 10.10. Qualche idea?

Modifica: ho inserito alcune istruzioni di debug in /etc/gdm/Xsession per assicurarmi che ~/.Xmodmap caricando e che tutto inizi a funzionare magicamente. Non ho cambiato nulla tranne l’aggiunta di alcuni echos, e funziona ancora ora che ho ripristinato le mie modifiche e riavviato di nuovo. La cosa più strana che abbia mai visto.

Una cosa che ho capito è che la parte “remap Caps Lock to Escape” di Xmodmap funzionava sempre. Era solo lo swap Delete / Menu che non funzionava. Lascerò questa domanda aperta per ora nel caso in cui qualcun altro abbia lo stesso problema, dal momento che in realtà non so perché il problema si è fermato.

So che è sciocco, ma come soluzione alternativa puoi semplicemente xmodmap ~/.Xmodmap automaticamente xmodmap ~/.Xmodmap .

Inoltre puoi controllare /etc/gdm/Xsession per la riga usermodmap="$HOME/.Xmodmap" e se non è presente basta aggiungerla alla fine del file. Se sei l’unico utente del sistema, inserisci le tue modifiche in /etc/X11/Xmodmap .

Ecco, forse una risposta migliore allora: http://cweiske.de/howto/xmodmap/ar01s06.html

Potrebbe essere necessario modificarlo un po ‘per lavorare per te, ma le istruzioni sono tutte lì.

Forse hai un errore di syntax nel tuo file ~/.Xmodmap ?

Prova a correre:

 $ xmodmap ~/.Xmodmap 

Questo dovrebbe generare un errore se ce ne sono.

In ritardo alla festa, ma questo mi ha fatto impazzire; e, testardo come sono, rinunciare non era un’opzione.

Fondamentalmente questo è quello che ho provato, (come mio utente, o root se necessario)

  • ~ / .Xmodmap solo
  • ~ / .xsession, ~ / .xsessionrc
  • ~ / .gnomerc
  • ~ / .xprofile
  • ~ / .xinitrc
  • /etc/X11/Xsession.d/myscript
  • /usr/share/X11/xorg.conf.d/ ( file di configurazione, non lo ha toccato )

(In realtà, l’aggiunta del comando xmodmap a ~/.bashrc funzionato, ma richiede l’avvio di un terminale ogni volta dopo l’accesso)

Qualche anno fa (?), xkb stato scelto per gestire la mapping e la configurazione dei tasti (interfaccia con X), ma xmodmap potrebbe anche richiedere modifiche alla chiave relative a X, dopo che xkb fatto il suo lavoro durante l’inizializzazione della sessione X.

Il problema è quando dovrebbero accadere queste impostazioni xmodmap?
Sembra che i suddetti file siano stati elaborati troppo presto nel processo e che X non fosse pronto ad accettare le modifiche di xmodmap, altrimenti xkb le sovrascriverebbe.

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

Non volevo aggiungere inizialmente un file .desktop (un semplice script di una riga doveva essere sufficiente), ma funziona, quindi eccoci qui.
La soluzione deriva da Come rimappare o scambiare tasti della tastiera speciali in Linux? “soluzione 1”

Fondamentalmente crea il file ~/.config/autostart/my-xmodmap.desktop e inseriscilo:

 [Desktop Entry] Name=MyXmodmap Exec=/usr/bin/xmodmap /home/me/.Xmodmap Terminal=false Type=Application X-GNOME-Autostart-enabled=true 

sostituiscimi con il tuo nome utente (tieni presente 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 aggiungere il bit exec

 chmod +x ~/.config/autostart/my-xmodmap.desktop 

I comandi xmodmap devono essere in un file ~/.Xmodmap in questo caso (o usare l’opzione -e , o scegliere un altro nome di file!). Esci e torna indietro.

Si noti che è ansible creare il programma di avvio da “Applicazioni di avvio”.

Un’altra soluzione sarebbe quella di dimenticare xmodmap e imparare come configurare xkb !

Modifica (di nuovo)

A volte, forse il 25% degli accessi, la xmodmap sembra ancora non funzionare – mentre il comando è effettivamente eseguito (un tracker lo dimostra). L’unica conclusione alla quale potrei arrivare in questo momento è che il processo xkb viene eseguito in ritardo nel processo di accesso e potrebbe terminare dopo l’esecuzione di xmodmap . Sembra una condizione di competizione … Quindi, alla fine, ho cambiato la riga di exec file desktop exec

 Exec=$HOME/bin/mystart & 

(nota che & ) mystart è uno script in un nuovo bin directory che 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 dorme 5 secondi prima per eseguire xmodmap e tiene traccia quando è stato eseguito (nel file /tmp/xmodmap-has-run ).

Spero che sarà tutto!

Ho avuto lo stesso strano problema, cercando di avviare il mio Xmodmap durante l’accesso alla mia sessione (ubuntu 13.04). Finalmente l’ho fatto funzionare con un file .xinitrc nella mia cartella Home dove ho messo il mio comando, ma con percorsi assoluti ad esso, cioè:

/ usr / bin / xmodmap /home/MYNAME/.Xmodmap

Quindi ho dovuto riavviare (non solo relog) in modo che fosse eseguito.