keyboard hook?
I'm beginning the process of writing a driver for the "Qoder" keyboard-fob barcode scanner made by InterMec. It communicates with the host computer using the PS/2 port by way of a "dock" that sits in between the keyboard and the computer.
The dock does handshaking with the host computer, which means that it listens for specific signals sent from the host. One of them is "turn numlock light on," which I can do with an ioctl from userspace (as root, anyway), but also caps lock, num lock and carriage-return scancodes.
I will have to modify the keyboard driver to capture and process data from the barcode scanner cleanly, and without requiring root access for the client programs.
The CueCat driver written by Pierre Coupard also modifies the keyboard driver. It would be nice if it was possible to load modules that hook into keyboard processing without requiring a kernel patch. And perhaps there is, but I haven't run across it yet.
I just need to scan the keystroke stream for an attention signal (shift,shift,shift,alt,ctrl) and then respond ("turn on numlock light") to initiate the data transfer; then, of course, capture and format that data and make it available via /proc, or something.
Does anyone have any suggestions before I go ugly-up the keyboard driver?
Thanks,
--
Michael Rothwell
[email protected]
Hi!
Your best bet for a kernel driver is to use the linux input api like
the usb keyboard do. The drivers are pretty simple to write and since all the keyboard drivers will be port over to this api it will save a lot of work done the road. If you need help let me know. I will be glad to help. It sounds alot alike the p2 to serial driver just placed in our CVS. You can access our CVS by doing
cvs -d:pserver:[email protected]:/cvsroot/linuxconsole login
cvs -z3 -d:pserver:[email protected]:/cvsroot/linuxconsole co ruby
The driver is in ruby/linux/drivers/input as ps2serkbd.c.
Quoted 8 lines
I'm beginning the process of writing a driver for the "Qoder" keyboard-fob barcode scanner made by InterMec. It communicates with the host computer using the PS/2 port by way of a "dock" that sits in between the keyboard and the computer.
One of them is "turn
numlock light on," which I can do with an ioctl from userspace (as root, anyway), but also caps lock, num lock and carriage-return scancodes.
EV_LED
Quoted 4 lines
The CueCat driver written by Pierre Coupard also modifies the keyboard driver. It would be nice if it was possible to load modules that hook into keyboard processing without requiring a kernel patch. And perhaps there is, but I haven't run across it yet.
input api :-)
Thanks, I'm loking through your driver now. Does the input api already/currently support ps2 keyboards?
-M
Quoted 34 lines · James Simmons
Hi!
Your best bet for a kernel driver is to use the linux input api like
the usb keyboard do. The drivers are pretty simple to write and since all the keyboard drivers will be port over to this api it will save a lot of work done the road. If you need help let me know. I will be glad to help. It sounds alot alike the p2 to serial driver just placed in our CVS. You can access our CVS by doingcvs -d:pserver:[email protected]:/cvsroot/linuxconsole login
cvs -z3 -d:pserver:[email protected]:/cvsroot/linuxconsole co ruby
The driver is in ruby/linux/drivers/input as
ps2serkbd.c.Quoted 8 lines
I'm beginning the process of writing a driver for the "Qoder" keyboard-fob barcode scanner made by InterMec. It communicates with the host computer using the PS/2 port by way of a "dock" that sits in between the keyboard and the computer.
One of them is "turn
numlock light on," which I can do with an ioctl from userspace (as root, anyway), but also caps lock, num lock and carriage-return scancodes.
EV_LEDQuoted 4 lines
The CueCat driver written by Pierre Coupard also modifies the keyboard driver. It would be nice if it was possible to load modules that hook into keyboard processing without requiring a kernel patch. And perhaps there is, but I haven't run across it yet.
input api :-)
Quoted 3 lines
Thanks, I'm loking through your driver now. Does the input api already/currently support ps2 keyboards?
With the current tree no. The work around is to make input api keyboards behave as PS/2 keyboards. In 2.5.X ps2 keyboards will be input api based. As you can see we already have PS/2 input api driver (i8042.c and atkbd.c). I have been using it for several months now. It is just a matter of making sure it works on other platforms besides intel.
P.S
I also need to port other keyboard drivers on other platforms over to
the input api and test these drivers. If anyone would like to help out contact me.
Input API looks nice. For now, I'll write a patch against pc_keyb.c to add a hook for my qoder stuff, and a loadable module for the meat of the driver. Then I'll port up to the input API. The Qoder is strictly ps/2 keyboard, as far as its interface goes, so I cannot use the input API for now. I have a Sparc here; does it have drivers you wish to have ported?
Quoted 14 lines · James Simmons
Quoted 3 lines
Thanks, I'm loking through your driver now. Does the input api already/currently support ps2 keyboards?
With the current tree no. The work around is to make input api keyboards behave as PS/2 keyboards. In 2.5.X ps2 keyboards will be input api based. As you can see we already have PS/2 input api driver (
i8042.candatkbd.c). I have been using it for several months now. It is just a matter of making sure it works on other platforms besides intel.
P.S
I also need to port other keyboard drivers on other platforms over to
the input api and test these drivers. If anyone would like to help out contact me.
Quoted 4 lines
Input API looks nice. For now, I'll write a patch against
pc_keyb.cto add a hook for my qoder stuff, and a loadable module for the meat of the driver.
Okay.
Quoted 1 line
Then I'll port up to the input API.
Just send me the code and I will place it into CVS.
Quoted 1 line
I have a Sparc here; does it have drivers you wish to have ported?
Alot of work has to be done their :-/ If you are up to it I would be happy to work with you.