Come posso rimappare in modo persistente le chiavi in ​​Ubuntu 16.04?


23

Questo funziona per la sessione corrente:

costales@dev:~/Desktop$ xmodmap -e "keycode 166 = less"
costales@dev:~/Desktop$ xmodmap -e "keycode 167 = greater"

Quindi ho creato questo file di configurazione:

costales@dev:~/Desktop$ cat ~/.Xmodmap 
keycode 166 = less
keycode 167 = greater
costales@dev:~/Desktop$ 

Ma non funziona dopo un riavvio. Come potrei forzare il rimappare per sopravvivere al riavvio?


Ho appena risposto usando xkbqui: askubuntu.com/a/960097/554991 .
danwild,

Risposte:


15

Sto usando 16.04 da un po 'e sembra usare sddm come desktop manager. Prima era LightDM e GDM. È documentato che entrambi i suoi predecessori si caricano ~/.Xmodmapautomaticamente ma non riesco a trovare nulla che dica esplicitamente sddm.

Pertanto, potrebbe essere consigliabile forzare il caricamento con un nuovo script. Devi solo correre xmodmap ~/.Xmodmape puoi farlo in diversi modi:

  • Aggiungendolo tramite gli strumenti grafici di avvio
  • Modifica ~/.xinitrcper eseguirlo.
  • Aggiunta di una nuova .desktopconfigurazione in~/.config/autostart/

Probabilmente ci sono alcune altre dozzine di modi per gestirlo, essenzialmente facendo la stessa cosa.


2
Grazie per il consiglio! Aggiungi per l'avvio non ha funzionato e ~ / .xinitrc non si chiude. Ma aggiungere "xmodmap ~ / .Xmodmap" a ~ / .bashrc ha funzionato! :)
Costales,

1
L'aggiunta tramite gli strumenti grafici di avvio (che crea una nuova voce ~/.config/autostart) funziona circa la metà delle volte. Ho riavviato circa 10 volte e 5 volte il comando è stato eseguito e le altre 5 volte no. :-(
Alexander Rechsteiner,

1
@Alexander Rechsteiner: questo sembra essere un problema in Ubuntu 16.04. Ho avuto problemi con i comandi di avvio e il remapping dei tasti e il comportamento sembra molto incoerente. Non sono un esperto in questo tipo di cose, ma sembra assolutamente ridicolo che accada ...
Nicorellius,

6

Ho aggiunto un file /etc/X11/Xsession.d/80_xmodmapcon questi contenuti:

#!/bin/sh
# Set custom keycodes
#
# This file is sourced by Xsession(5), not executed.
# The "|| true" is to ensure that the Xsession script does not terminate on error

USRMODMAP="$HOME/.Xmodmap"

if [ -x /usr/bin/xmodmap ]; then
        if [ -f "$USRMODMAP" ]; then
                /usr/bin/xmodmap "$USRMODMAP" || true
        fi
fi

Funziona sempre.


Sembra funzionare, ma questi sono i messaggi che ottengo in .xsessions-errors: .Xmodmap: 1: keysym errato nella lista dei modificatori 'Caps_Lock', nessun codice chiave corrispondente questo è il mio .Xmodmap: $ cat .Xmodmap remove Lock = Caps_Lock keycode 9 = Escape keycode 66 = Escape
MaikoID

4

apri gnome-session-properties. aggiungi comando e nome. il file desktop verrà creato in ~ / .config / avvio automatico.

ricordo: usa il percorso assoluto , ad es. /home/xxx/.Xmodmap. non usare mai '~' come dir home.


2

Nella mia lunga esperienza con la rimappatura chiavi in Ubuntu, la soluzione definitiva è quella di modificare un file chiamato evdevin /usr/share/X11/xkb/keycodes.

Esegui questo comando nel prompt dei comandi.

sudo gedit /usr/share/X11/xkb/keycodes/evdev

Ricorda che gedit è un editor di testo Ubuntu, quindi puoi usare nano o vim invece di gedit.

Il file è nel formato: ALIAS: CODICE. È possibile scambiare i pulsanti scambiando codici di chiavi diverse. Ad esempio, per scambiare RCONTROL con INVIO, modifica due righe in evdev in questo:

<RTRN> = 105;

<RCTL> = 36;

Per conoscere il codice numerico per un pulsante eseguito xevsul terminale.

Fare riferimento alla documentazione per ulteriori informazioni. https://buildmedia.readthedocs.org/media/pdf/python-evdev/latest/python-evdev.pdf


1

Navigare verso

/usr/share/X11/xkb/symbols

Con i privilegi di sudo, in un editor, apri il layout che desideri modificare. Sostituisci i valori.

Dopo il riavvio, le modifiche verranno applicate.


Ecco un esempio che utilizzo per rimappare la tastiera a causa di problemi hardware della tastiera.

esempio di rimappatura della tastiera


2
Tali modifiche verranno sovrascritte al successivo aggiornamento dei pacchetti proprietari di tali file.
muru,

Questo può essere vero, ma dubito che questi in particolare vengano aggiornati molto spesso. Sono soddisfatto di questa soluzione da alcuni mesi da quando ho risolto il problema e non una volta ho dovuto fare qualcosa in più. E per evitare ciò, è possibile salvare il file e sostituirlo nel caso di tale evento o (che sembra più sicuro) semplicemente ricreare il processo.
Chiesò il

1

Dopo aver cercato su Google, sono stato in grado di risolvere la rimappatura delle chiavi difettose del mio laptop. Tutti i tasti difettosi sul mio Thinkpad T400 funzionano correttamente dopo il rimappatura. Inoltre, è permanente senza un carico aggiuntivo sul core della CPU.

  • Per prima cosa trova il layout della tastiera o il codice chiave usando il comando seguente.

    xevv -event keyboard 
    
  • Ad esempio, sul mio codice Thinkpad T400 trovato come segue:

    Keycode of "z" key is 52
    Keycode of "x" key is 53
    Keycode of "c" key is 54
    Keycode of "v" key is 55
    Keycode of "F6" key is 72
    Keycode of "F10" key is 76
    Keycode of "F11" key is 95
    Keycode of "F12" key is 96 
    
  • Rimappatura dei tasti carattere "z" "x" "c" "v" assegnando i tasti funzione "F6" "F10" "F11" "F12".

  • Modifica le righe come di seguito (file di backup prima di apportare facilmente modifiche al rollback in caso di problemi).

    sudo vi /usr/share/X11/xkb/keycodes/evdev
    
  • Trova le righe e modifica il valore come di seguito:

    <AB01> = 72;
    <AB02> = 76;
    <AB03> = 95;
    <AB04> = 96;
    
  • Commenta queste righe o rimuovi le righe:

    //  <FK06> = 72;
    //  <FK10> = 76;
    //  <FK11> = 95;
    //  <FK12> = 96;
    
  • Salva ed esci.

  • Rimappatura di tasti speciali.

  • File di backup prima di apportare modifiche al rollback in caso di problemi.

    cd /usr/share/X11/xkb/symbols/
    
    sudo vi pc
    
  • Aggiungi o modifica le righe sottostanti nella funzione "xkb_symbols" editing "{"

    key [SCLK] {    [  Prior        ]   };
    key [PAUS] {    [  Next         ]   };
    
  • Salva ed esci.

  • Cancella cache.

    sudo rm -rf /var/lib/xkb/*
    
  • Reboot.


Ho rimappato un tasto freccia (cursore) rotto su un altro tasto usando questa tecnica. È semplicemente (xev) e premi il nuovo tasto per ottenere lo scancode, quindi modifica / usr / share / X11 / xkb / keycodes / evdev per sostituire il codice chiave originale del tasto freccia con il nuovo codice chiave e rimuovere la nuova linea del tasto freccia con l'originale scancode. Ho commentato ovunque ho apportato una modifica e mantenuto un backup del file. Dopo un riavvio funziona perfettamente, comprese le combinazioni shift / ctrl / alt con il nuovo tasto freccia. E la modifica dovrebbe essere lasciata in atto anche quando si aggiornano i pacchetti e gli aggiornamenti della versione del sistema operativo.
Matteo,

1

Editor grafico

gnome-tweaks > Tastiera e mouse> Opzioni di layout aggiuntive

Mappe chiave


0

Poiché i file .Xmodmap sono molto più facili da modificare rispetto a xkb, uso .Xmodmap come file 'sorgente', quindi lo converto in xkb (lo standard attuale) e il caricamento automatico all'avvio con il metodo .bashrc.

Sono pochi semplici passaggi pubblicati qui .

Funziona perfettamente e utilizza xkb a prova di futuro contro quando viene eliminato il supporto per .Xmodmap.

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.