Well, after several hours of debugging/testing/experimenting I found what HP could not tell straightforward. To enable the scancodes for the extra keys one should write 0x59 to port 0x64 (kbd command register) and then 0x90 to port 0x60 (kbd command parameter register). For those who are curious I debugged keyboard.exe which is part of the diagnostic tool that you get when you press F10 on power up. The file is in the hibernation partition which has a small FAT part in the beginning. All extra keys except volume up/down work (I'll try different values to port 60 to get them working too). I've attached a kernel patch (2.4.x) and key definitions for hotkeys (a program to get the newly working keys doing nice things). You also need to add to your kernel parameters "kbd-reset" because I've put the activation code in a keyboard reset function which is not invoked by default on x86 (counting that BIOS has already initialised the keyboard).
PS: Could anyone with a non-XE3 Omnibook test this too, and tell me whether it works. Pavel
--- pc_keyb.c.org Sat Feb 23 01:06:54 2002 +++ pc_keyb.c Sat Feb 23 01:08:40 2002 @@ -879,6 +879,10 @@ kbd_wait_for_input(); } + printk("HP Omnibook multimedia keys enabled.\n"); + kbd_write_command_w(0x59); + kbd_write_output_w(0x90); + if (kbd_write_output_w_and_wait(KBD_CMD_ENABLE) != KBD_REPLY_ACK) return "Enable keyboard: no ACK";
<?xml version="1.0"?> <CONFIG model="HP Omnibook XE3"> <PrevTrack keycode="144"/> <Play keycode="162"/> <Stop keycode="164"/> <NextTrack keycode="153"/> <VolUp keycode="241" adj="5"/> <VolDown keycode="242" adj="5"/> <WebBrowser keycode="243"/> <Email keycode="244"/> </CONFIG>