Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

OpenBSD, wskbd(4): demuxer et detourner les entrees clavier

4 réponses
Avatar
Benjamin Pineau
Bonjour,

J'ai des scanners de codes barre qui se présentent à l'OS comme des
claviers USB (pour detailler: ce sont en fait des scanners sans
fil bluetooth, raccordés à la machine par des adaptateurs usb-bluetooth
qui gèrent l'émulation clavier magiquement et s'occupent de l'aspect
bluetooth sans rien demander à l'OS). Les codes barres sont donc
envoyés à l'OS sous la forme de saisies clavier.

Le tout fonctionne parfaitement sous OpenBSD 3.9:

uhidev0 at uhub0 port 1 configuration 1 interface 0
uhidev0: Baracoda Baracoda HID, rev 1.10/10.77, addr 2, iclass 3/1
ukbd0 at uhidev0: 8 modifier keys, 6 key codes
wskbd1 at ukbd0 mux 1
wskbd1: connecting to wsdisplay0

Seulement, du point de vue applications censées récupérer les codes
barres scannés, ce n'est pas tres pratique: touts les scans sont
envoyés dans les consoles auxquelles sont attachées les wskbdX, et
c'est finalement getty(8) qui les reçoit.
Je pourrait me logguer physiquement sur la console et lancer
manuellement l'appli, mais ce n'est pas très pratique et cela ne
me permet pas de distinguer les entrées des divers scanners branchés.

J'ai pensé attacher mon application a un terminal via ttys(5), mais
ça ne me semble pas très propre, ça fait beaucoup de code en root,
je ne sait pas comment assigner un clavier à un tty précis, et je
voudrais brancher plusieurs scanners sur la machine.
misc/mtty et script(1) semblent ne pas convenir non plus, pour les
memes raisons (obligation de les lancer manuellement ?, discrimination
des divers claviers/wskbd ...).
Un truc du genre "tail -f /dev/wskbd1 > outfile" aurait été super ...
mais ça ne marche pas (pas mieux avec /dev/tty).

Existe-t-il une astuce pour logguer/sniffer/dupliquer/... les entrées
des claviers depuis le userland ?
Comment "dé-multiplexer" (distinguer) les saisies des différents
clavier connectés à une machine ?

4 réponses

Avatar
Miod Vallat
Comment "dé-multiplexer" (distinguer) les saisies des différents
clavier connectés à une machine ?

wsconscfg -dk 1

devrait faire l'affaire.

Avatar
Benjamin Pineau
Le 14 Jul 2006 23:37:17 GMT,
Miod Vallat écrivait:

wsconscfg -dk 1
devrait faire l'affaire.


Merci beaucoup Miod !

Une derniere question: sur mon 3.9, MAKEDEV a fait 4 /dev/wskbdX.
C'est une limite dure, ou je peut encore créer plein d'autres
devices avec un majeur 67 et un mineur > 3 ?
(je n'ai pas encore le matos pour verifier).

ps: tail(1) n'était evidement pas une bonne façon de verifier
si je pouvais lire sur le periph ... désolé.

Avatar
Miod Vallat
Une derniere question: sur mon 3.9, MAKEDEV a fait 4 /dev/wskbdX.
C'est une limite dure, ou je peut encore créer plein d'autres
devices avec un majeur 67 et un mineur > 3 ?


Il n'y a pas de limite (enfin, si, les mineurs sont sur 24 bits, donc
pas plus de 16 millions de wskd par système).

Avatar
Stéphane Zuckerman
On Sat, 15 Jul 2006, Miod Vallat wrote:

Une derniere question: sur mon 3.9, MAKEDEV a fait 4 /dev/wskbdX.
C'est une limite dure, ou je peut encore créer plein d'autres
devices avec un majeur 67 et un mineur > 3 ?


Il n'y a pas de limite (enfin, si, les mineurs sont sur 24 bits, donc
pas plus de 16 millions de wskd par système).


Je trouve ça un peu petit. Ca manque de sérieux tout ça.
--
"Je deteste les ordinateurs : ils font toujours ce que je dis, jamais ce
que je veux !"
"The obvious mathematical breakthrough would be development of an easy
way to factor large prime numbers." (Bill Gates, The Road Ahead)