Pour une raison quelconque, mon ordinateur portable est bloqué dans le verrouillage majuscule. J'ai Caps Lockmappé la clé xmodmap
sur hyper_l
, je n'ai donc pas de caps_lock
clé pour la désactiver. Y a-t-il un moyen de le désactiver en ligne de commande? Ce serait bien si je pouvais réinitialiser l'état de verrouillage sans réinitialiser mon ordinateur, en particulier pour référence future. Cela s'est déjà produit auparavant, mais j'aimerais savoir comment le faire correctement cette fois-ci.
command-line
xmodmap
capslock
Échogène
la source
la source
Réponses:
Je ne connais aucun outil de ligne de commande pour cela dans Ubuntu. (Pour Num Lock, il existe numlockx .) Voici une ligne que vous pouvez copier-coller dans une fenêtre de terminal:
Le voici à nouveau sous une forme plus développée. Nous utilisons la bibliothèque ctypes Python pour appeler directement les fonctions C à partir de la bibliothèque X. La fonction modifie l'état des verrous du clavier sur le clavier principal ( = 0x0100), ce qui a une incidence sur le verrouillage des majuscules (2) en le réglant sur 0 (désactivé).
XkbLockModifiers
XkbUseCoreKbd
Si vous avez un modificateur bloqué, remplacez 2 par le masque des modificateurs que vous souhaitez désactiver. Les modificateurs sont 1 = Maj, 2 = Verrouillage (Verrouillage Majuscule), 4 = Contrôle, 8 = Mod1, 16 = Mod2, 32 = Mod3, 64 = Mod4, 128 = Mod5. Exécuter
xmodmap -pm
pour voir à quoi correspondent Mod1 à Mod5. Par exemple, pour désactiver tous les modificateurs, appelezX11.XkbLockModifiers(display, c_uint(0x0100), c_uint(255), c_uint(0))
. Pour activer le verrouillage numérique qui est sur Mod2 et en même temps désactiver le verrouillage majuscule, appelezX11.XkbLockModifiers(display, c_uint(0x0100), c_uint(2 | 16), c_uint(16))
.Voici une version C si vous voulez faire un petit binaire au lieu d’appeler Python. Compiler avec
gcc -O -Wall -o caps_lock_off caps_lock_off.c -lX11
, avec les packagesbuild-essentials
etlibx11-dev
installé.Un moyen d’ignorer temporairement le verrouillage des majuscules est peut-être également intéressant:
Après cela, Caps Lock sera définitivement désactivé jusqu'à ce que vous le réactiviez
xkbset nullify -lock
.la source
xtrace
et exécuterxtrace python -c 'from ctypes import *; X11 = cdll.LoadLibrary("libX11.so.6"); buf = (c_char*16)(); display = X11.XOpenDisplay(None); X11.XkbLockModifiers(display, c_uint(0x0100), c_uint(2), c_uint(0)); X11.XkbGetState(display, 0x0100, buf); X11.XCloseDisplay(display)'
et poster les dernières lignes, en commençant par celle qui contientQueryExtension name='XKEYBOARD'
. Je ne prétends pas que je vais comprendre le résultat, mais je vais essayer.Des outils d' automatisation X pourraient être utilisés pour envoyer les événements clés requis.
En utilisant
xdotool
Installez-le
Envoyer un événement CAPS down / up
Un autre outil est
xte
Installez-le
Envoyer un événement CAPS Lock Down / Up
Références:
man xdotool
man xte
la source
En ce qui concerne la version de Gilles python ne fonctionnant pas dans ubuntus plus récent, définir le retour correct pour l'affichage ouvert semble faire l'affaire:
(Code adapté de https://stackoverflow.com/questions/29638210/how-can-i-use-python-xlib-to-generate-a-single-keypress )
la source
Si vous ne pouvez pas accéder à CAPS parce que vous l'avez remappé dans .bashrc, comme je l'ai fait, basculer simplement vers un terminal virtuel (alt + ctl + fN), puis revenir en arrière ont fonctionné pour moi.
la source
J'ai eu ce problème et j'ai pu le résoudre en utilisant le clavier OnBoard (dans Ubuntu Mate, sous Universal Access).
Une fois allumé, vous devriez voir que la touche CapsLock est rouge, ou d'une manière ou d'une autre indiquer qu'elle est verrouillée. Ensuite, vous pouvez appuyer sur pour désactiver.
la source