J'essaie de transformer un Minitel en ordinateur avec un Raspberry Pi.
Ceci est un minitel:
J'ai donc soudé la matrice du clavier minitel à un pcb clavier usb, comme ceci:
Tout fonctionne bien, je reçois quelques touches de mon clavier personnalisé. J'ai juste besoin de remapper les clés de manière appropriée.
J'essaie donc de créer un programme qui me demandera d'appuyer a
et de piéger le code clé correspondant, puis avec toutes les touches de mon clavier personnalisé, pour produire finalement un fichier xmodmap.
Le seul problème que j'ai, c'est que je ne peux pas comprendre comment puis-je obtenir ce code clé (et seulement cela!). J'ai essayé xev
mais il y a trop de données affichées pour le filtrer.
Je sais que je pourrais suivre tous les codes clés à la main, mais je vais transformer 10 Minitels, donc je préférerais un moyen plus rapide!
la source
Réponses:
Je suppose que vous essayez de le faire en shell ou similaire (sinon, vous utiliseriez simplement les bibliothèques X directement). Si tel est le cas, vous pouvez trouver
xinput --test «device-name»
beaucoup plus facile à analyser.Malheureusement, ce n'est vraiment pas compatible avec les scripts shell. Mais vous pouvez le faire fonctionner avec
stdbuf
. Il s'exécute jusqu'à ce que vous le tuiez, mais votre script shell pourrait le diriger versread
.Vous pouvez donc faire quelque chose comme ceci:
Vous devrez utiliser le nom de clavier correct à la place de "Clavier AT Translated Set 2". Vous pouvez le trouver avec
xinput list
:Malheureusement, vous devez utiliser un appareil spécifique - vous ne pouvez pas utiliser le clavier principal.
(De plus, vous devrez trouver un moyen de tuer le xinput ci-dessus, ou simplement vous contenter d'appuyer sur Control-C lorsque vous aurez entré toutes les clés. Et vous voudrez probablement lister plus de clés que qwerty. )
la source
id
clavier au lieu de son nom, car j'avais des conflits avec 2 mêmes noms. Alorsxinput test 18
où 18 est l'identifiant de mon clavier.test.c
, on dirait que la fonction pertinente estprint_events
. Peut-être que xorg prendrait un patch pour ajouter un drapeau pour s'arrêter après n événements?xinput --query-state
donne l'état actuel, et sort immédiatement. Vous pouvez l'occuper en boucle.