>>>>> "Ivan" == Ivan Pascal <[EMAIL PROTECTED]> writes:

>> What I cannot find is *where* those fake scancodes are generated
>> and how they are mapped to 0x81-0x84....

Ivan> xc/programs/Xserver/hw/xfree86/common/xf86Events.c
Ivan> xf86PostKbdEvent() subroutine

Ok.  From that it looks like I need e0/01 thru e0/04, but as far as I
can tell, X does not see real raw codes from linux, but must reverse
engineer them.  

There is no general pattern from actual raw codes received by linux,
the value linux covnerts the raw code to, and X's keycode.

Eg, the 3 inet keys that still work are:

 Key     Raw   atk  X11
-----   -----  ---  ---
VolUp   e0/32  115  176
VolDn   e0/21  114  174
Mute    e0/23  113  160

If xf86PostKbdEvent() is adding 0x78 to the 2nd octet of a e0/xx
sequence and keycode=scanCode + MIN_KEYCODE (aka 8), that means
0x80 is getting added to the 2nd octet to make the keycode, so
X is seeing a scanCode of e0/48, e0/46 & e0/32 for those three.

So where does 113,114,115 turn into e0/32, e0/46, e0/48 ?

And what would turn into e0/01 thru e0/04 ?

Apologies for being confused by this code.  

>> How do I get both us(pc105) and inet(inspiron)?

Ivan> Simply use the second way.  If the model name is the same as one
Ivan> of inet file sections name, XKB uses us(pc105) map and _adds_
Ivan> inet(model_name) to it.  (I mean XFree86 4.3.0.  In previous
Ivan> versions it uses us(pc104). )

Cool.  Good to know.


Devel mailing list

Reply via email to