È possibile rimappare il sistema di chiavi CapsLock in modo tale che quando si preme il pulsante CapsLock da solo agisce da tasto di escape e quando viene premuto con un altro tasto funge da tasto di controllo?
È possibile rimappare il sistema di chiavi CapsLock in modo tale che quando si preme il pulsante CapsLock da solo agisce da tasto di escape e quando viene premuto con un altro tasto funge da tasto di controllo?
Risposte:
Ho trovato un'ottima soluzione chiamata xcape . Dal README:
xcape viene eseguito come demone e intercetta il tasto Control. Se il tasto Control viene premuto e rilasciato da solo, genererà un evento tasto Escape.
Questo ha più senso se hai rimappato il tasto BLOC MAIUSC su Control. Le versioni future di questo programma potrebbero fare questa mappatura per te, ma per ora questo è qualcosa che devi fare tu stesso.
Ho mappato Caps to Escape in modo che mi sentissi più a mio agio a scrivere in Vim. L'ho usato xmodmap
e l' ho inserito ~/.Xmodmap
.
clear Lock
keycode 0x42 = Escape
Per applicare: xmodmap ~/.Xmodmap
. Puoi inserirlo in un file come ~ / .bash_profile (l'ho inserito in ~ / .xinitrc, perché non utilizzo un gestore di accesso.
Per mappare CapsLock + [un'altra chiave], considerare l'utilizzo xbindkeys
.
Una soluzione solo per Linux per rimappare le chiavi a livello di sistema è scrivere una semplice regola udev. Non dipenderà da X, funzionerà su qualsiasi terminale o app ed è portatile tra le recenti installazioni Linux semplicemente copiando due file.
È necessario scrivere 2 file: uno contenente la regola udev che dice al kernel di rimappare le chiavi e uno contenente i mapping effettivi necessari.
Usando questo metodo ho rimappato tutta la mia tastiera, forse il codice è utile come ispirazione http://git.adirat.com/carpalx-keyboard
Ho creato uno strumento in C appositamente per questo scopo che risolve molti problemi con la soluzione xcape / xmodmap :
Ho incontrato una domanda diversamente formulata su AskUbuntu che aveva una buona risposta , ma ho dovuto modificarla leggermente per funzionare sui miei sistemi.
I commenti di Per Louis e Sergiy laggiù ho trovato questa soluzione che funziona per me su Ubuntu 16.04 (Xenial) e la porterò con me negli altri sistemi Linux che uso.
Ho installato xcape e ho inserito le seguenti righe di codice nel mio .profile
file nella mia directory home.
A causa dei vari gestori di display (gdm / kdm / sddm / etc) che si comportano in modi strani e che ripristinano setxbmap
dopo la sospensione / ripresa o il blocco / sblocco, ho scoperto come impostare le opzioni in modo tale da ereditarle e non t ripristinarlo continuamente. Poiché sospendo e riprendo molto, avevo bisogno di assicurarmi di non avere molte copie della xcape
corsa risolte nel nuovo script di seguito.
Prima modifica la configurazione della tastiera con sudo gedit /etc/default/keyboard
e imposta XKBOPTIONS="ctrl:nocaps"
e poi ~/.xprofile
inserisci la riga seguente di seguito.
ps aux | grep -i '[x]cape' && killall -9 xcape; hash xcape 2>&1 >/dev/null && xcape -e 'Control_L=Escape' -t 100 &
Speriamo che le varie sezioni dello script ti facciano risparmiare tempo / problemi e impediscano accessi bloccati. Prima controlla se c'è già un'istanza in esecuzione e la uccide, poiché l'unica cosa che xcape
fa è mappare Ctrl su Esc, questo è sicuro, quindi la hash
parte assicura che tu abbia xcape
installato altrimenti il tuo sistema potrebbe bloccarsi quando tenti di accedere perché tutto l'avvio gli script dovrebbero uscire in modo pulito.
setxkbmap -option 'caps:ctrl_modifier'; xcape -e '#66=Escape'
Sergiy:
Ho usato gnome-tweak-tool per mappare Caps Lock su Ctrl poiché non c'è layout di tastiera in Impostazioni di sistema su Ubuntu 14.04. Quindi xcape -e 'Control_L = Escape' non ha funzionato, ma dopo aver usato xcape -d ho scoperto che Caps Lock genera il keycode 66 e lo ha rimappato rispettivamente: xcape -e '# 66 = Escape'. - Sergiy Byelozyorov, 4 settembre 14 alle 10:08
Louis:
Come da questo post del blog, è possibile farlo solo con xcape: setxkbmap -option 'caps: ctrl_modifier'; xcape -e 'Caps_Lock = Escape' setxkbmap -option 'caps: ctrl_modifier'; xcape -e 'Caps_Lock = Escape; Control_L = Escape; Control_R = Escape' - Louis Simoneau 4 agosto 15 alle 10:06