web-dev-qa-db-fra.com

Comment désactiver temporairement la clé AA sur le clavier après avoir appuyé sur elle?

J'ai renversé la bière dans mon clavier mécanique et depuis que cela a tendance à répéter la touche "A" chaque fois que je l'appuie (oui, je l'ai nettoyé plusieurs fois, utilisé AA Logohol, etc.). J'ai essayé d'atténuer ce problème à l'aide de "touches de rebond", mais cette fonctionnalité désactive temporairement Toutes les clés Après aa reproché. En d'autres termes, "Key Keys" interfère avec ma capacité à taper rapidement chaque fois que je dois taper un mot avec une lettre répétée (<comme "T" dans le mot "lettre") ou la répétition AAA Appuyez rapidement sur BackSpace.

(Ok je ne laisserai pas les répétitions dans le texte restant, mais vous pouvez voir qu'il se produit avec M AA Fréquence Denning)

Si cela aide, j'ai utilisé Xev pour déterminer exactement la séquence de commandes que le système d'exploitation reçoit et on dirait que chaque fois que "A" se répète elle-même, c'est parce que le clavier envoie la séquence souhaitée plusieurs fois (KeyPress suivi de KeyRelease, puis suivi de KeyRelease à nouveau). En d'autres termes, la clé ne colle pas dans l'état "KeyPress". Il se répète comme si J'ai appuyé et le libéré plusieurs fois.

J'ai vu d'autres personnes poser cette même question, mais les solutions ne sont pas vraiment celle que je cherche. Par exemple, la solution proposée dans la première réponse à cette question désactive AutOutpeat, mais cela ne fonctionnera pas pour moi car "A" ne se coince pas dans l'état "pressé". La deuxième réponse dans la même question ne fonctionne pas non plus, car elle désactive le clavier entier après pression sur la touche Problème. Je veux juste désactiver temporairement la clé "a" et seule la clé "a" pendant une très brève période de temps (~ 50ms).

Heureusement, j'ai rarement besoin de répéter la lettre "A" lors de la frappe, donc même une solution qui utilise quelque chose comme AutoCorrect fonctionnerait pour moi. De préférence, j'aimerais utiliser une solution qui utilise Xbindkeys, car je suis déjà en train d'utiliser ce paquet pour remapper mes boutons de la souris.

Edit: En réponse à un commentaire ci-dessous, voici les sorties de 'Xinput Liste' et 'Xev':

$ xinput list
⎡ Virtual core pointer                      id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ SINOWEALTH Game Mouse                     id=9    [slave  pointer  (2)]
⎜   ↳ EST Gaming keyboard                       id=12   [slave  pointer  (2)]
⎣ Virtual core keyboard                     id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Power Button                              id=6    [slave  keyboard (3)]
    ↳ Power Button                              id=7    [slave  keyboard (3)]
    ↳ SINOWEALTH Game Mouse Keyboard            id=10   [slave  keyboard (3)]
    ↳ EST Gaming keyboard                       id=11   [slave  keyboard (3)]
    ↳ EST Gaming keyboard                       id=13   [slave  keyboard (3)]
    ↳ Eee PC WMI hotkeys                        id=15   [slave  keyboard (3)]
    ↳ EST Gaming keyboard                       id=16   [slave  keyboard (3)]

$ xev
KeyPress event, serial 37, synthetic NO, window 0x7c00001,
    root 0x4e5, subw 0x0, time 188722500, (165,-16), root:(4636,676),
    state 0x10, keycode 38 (keysym 0x61, a), same_screen YES,
    XLookupString gives 1 bytes: (61) "a"
    XmbLookupString gives 1 bytes: (61) "a"
    XFilterEvent returns: False

KeyRelease event, serial 37, synthetic NO, window 0x7c00001,
    root 0x4e5, subw 0x0, time 188722576, (165,-16), root:(4636,676),
    state 0x10, keycode 38 (keysym 0x61, a), same_screen YES,
    XLookupString gives 1 bytes: (61) "a"
    XFilterEvent returns: False

En essayant de mettre en œuvre la suggestion de @RAFFA, j'ai utilisé "3" pour l'ID de clavier et j'ai quitté le code-clés comme 38. Cependant, la clé est encore des doublons.

2
Jdclark

Essayez ceci dans un fichier de script bash:

#!/bin/bash

xinput test 11 |

while read pkc

        do
                if [[ "$pkc" =~ "key press   38" ]]
                        then
                                xmodmap -e 'keycode 38 = ';
                                sleep 0.5;
                                xmodmap -e 'keycode 38 = a A';
                fi

done
  • Changer le nombre 11 dans xinput test 11 à votre numéro de périphérique de clavier. Vous pouvez trouver ce numéro en exécutant xinput list. Vous devrez peut-être vérifier si le numéro id est le bon pour votre clavier. Pour ce faire, choisissez le clavier id numéros avec slave keyboard en face d'eux puis vérifiez le id dans le terminal en exécutant xinput test id_number et appuyez sur la a sur votre clavier. Si vous obtenez une sortie comme key press 38 Ensuite, c'est le bon numéro id pour votre clavier actuel et si aucune sortie, continuez à tester les autres id numéros jusqu'à ce que vous voyiez la sortie.

  • Changer le NUBER 38 dans "key press 38" et xmodmap -e 'keycode 38 = '; et xmodmap -e 'keycode 38 = a A'; au code clé du a clé. Vous pouvez trouver ce numéro en exécutant xev et en appuyant sur la touche a clé.

  • Changer le nombre 0.5 dans sleep 0.5; à la période souhaitée en quelques secondes pour le a clé pour être désactivé.


étapes pour créer et utiliser le fichier de script :

  1. Créez et ouvrez le fichier dans un éditeur en exécutant la commande suivante dans le terminal:
nano ~/no_aa.sh
  1. Copiez et collez le code ci-dessus (((après le modifier) dans l'éditeur.

  2. Enregistrez le fichier de script et quittez l'éditeur en appuyant sur CtrlX puis appuyez Y.

  3. Rendre le fichier de script exécutable en exécutant la commande suivante dans le terminal:

chmod +x ~/no_aa.sh
  1. Exécutez le script en exécutant la commande suivante dans le terminal:
bash ~/no_aa.sh
  1. Gardez le terminal ouvert et testez le a Touche dans d'autres applications telles que l'écriture dans l'écrivain de LibreOffice.
2
Raffa