Reading Keyboard Scan Codes

François Pinard pinard at iro.umontreal.ca
Wed Jul 23 18:10:25 EDT 2003


[Michael Bendzick]

> Is there a simple way in python to read a keyboard scan code?  I'm working
> on a shell script that interfaces with a proprietary keyboard device
> (extra buttons) and need to be able to distinguish between those keys.

Within Linux in console mode, you merely do:

    os.system('kbd_mode -k')

to read key codes, which might be what you want, or:

    os.system('kbd_mode -s')

to really read raw scan codes.  To get back on your feet, do:

    os.system('kbd_mode -a')

Beware that you can easily burn yourself if your program fails to restore
normal mode, as per last example.  Use try/finally!  You should probably use
the `curses' module for preparing to read codes one byte at a time.[1]

However, I do not know if reading scan codes or key codes is easily done
within X, nor on MS-Windows.  I would like finding or discovering recipes in
this area.  So, please share your tricks in this area, if any! :-)

--------------------
[1] I was given two different C programs written originally for QNX and its
own special `term' library, to be quickly ported to Linux, without rewriting
them if possible.  To achieve this, I wrote a compatibility module in C, and
a more bulky keyboard driver module in Python, meant for key code assembly
into curses key events, and for any special keyboard processing.  The link
between all parts was made using Pyrex, and a bit of Makefile trickery...

-- 
François Pinard   http://www.iro.umontreal.ca/~pinard





More information about the Python-list mailing list