Rimappa CapsLock per sfuggire e controllare il sistema a livello


18

È 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?


5
Sembra che sarebbe molto difficile. Ad esempio, non è stato possibile generare eventi chiave giù, perché non si conosce quale tasto è stato appena premuto. Se viene rilasciato senza che sia stato premuto un altro tasto, era Escape, altrimenti era Control.
cjm

Risposte:


16

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.


Per fare questo ho creato uno script caotico
cam

6

Ho mappato Caps to Escape in modo che mi sentissi più a mio agio a scrivere in Vim. L'ho usato xmodmape 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.


4

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


il link è morto, potresti aggiornarlo? Grazie!
Qed

L'ho aggiornato, scusate il ritardo
gimmesudo

Bitbucket dice "Non hai accesso a questo repository." Puoi renderlo di nuovo pubblico? Grazie!
Tianyi Cui,

@TianyiCui controlla ora il link
gimmesudo

1
Il link è morto o bloccato per me. Qualche possibilità che tu possa inserire nella tua risposta i file attuali?
labirinto


1

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 .profilefile nella mia directory home.

METODO AGGIORNATO:

A causa dei vari gestori di display (gdm / kdm / sddm / etc) che si comportano in modi strani e che ripristinano setxbmapdopo 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 xcapecorsa risolte nel nuovo script di seguito.

Prima modifica la configurazione della tastiera con sudo gedit /etc/default/keyboarde imposta XKBOPTIONS="ctrl:nocaps"e poi ~/.xprofileinserisci 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 xcapefa è mappare Ctrl su Esc, questo è sicuro, quindi la hashparte 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.

Vecchio modo:

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

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.