Obtenir le code d'une key, à partir d'un keyboard personnalisé

J'essaie de transformer un Minitel en ordinateur avec un Raspberry Pi.

C'est un minitel:

entrer la description de l'image ici

J'ai donc soudé la masortingce du keyboard minitel à un PCB keyboard USB, comme ceci: entrer la description de l'image ici

Tout fonctionne bien, je reçois quelques keys de mon keyboard personnalisé. J'ai juste besoin de remapper les keys de façon appropriée.

J'essaie donc de créer un programme qui me requestra d'appuyer sur a et de piéger le keycode correspondant, puis avec toutes les touches de mon keyboard personnalisé, pour produire un file xmodmap.

Le seul problème que j'ai est que je ne peux pas comprendre comment puis-je get ce keycode (et seulement ça!). J'ai essayé xev mais il y a trop de données affichées pour le filterr.

Je sais que je peux suivre tous les keycodes à la main, mais je vais transformer 10 Minitels, donc je préférerais un moyen plus rapide!

Je suppose que vous essayez de le faire en shell ou similaire (sinon, vous utilisez les bibliothèques X directement). Si c'est le cas, vous pouvez find xinput --test «device-name» beaucoup plus facile à parsingr.

Malheureusement, ce n'est vraiment pas compatible avec les scripts shell. Mais vous pouvez le faire fonctionner avec stdbuf . Il court jusqu'à ce que vous le tuiez, mais votre script shell pourrait le read .

Donc, vous pouvez faire quelque chose comme ceci:

 stty -echo stdbuf -oL xinput test 'AT Translated Set 2 keyboard' \ | perl -nE 'BEGIN {$| = 1} m/^key press\s+(\d+)/ and say $1' \ | for key in qwerty; do echo -n "Please press $key: " read -r keycode echo "key $key = $keycode" done stty echo 

Vous devrez utiliser le bon nom du keyboard à la place de "AT Translated Set 2 keyboard". Vous pouvez le find avec la xinput list :

 anthony@Zia:~$ xinput list ⎡ Virtual core pointer id=2 [master pointer (3)] ⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)] ⎜ ↳ Logitech USB-PS/2 Optical Mouse id=8 [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)] ↳ AT Translated Set 2 keyboard id=9 [slave keyboard (3)] 

Malheureusement, vous devez utiliser un périphérique spécifique – vous ne pouvez pas utiliser le keyboard de base.

(Vous devrez également find un moyen de tuer le xinput dans ce qui précède, ou contentez-vous de toucher Control-C lorsque vous aurez entré toutes les keys. Et vous voudrez probablement listr plus de keys que qwerty. )