Re: [PATCH] SMM BIOS on Dell i8100

From: Stephane Jourdois (stephane@tuxfinder.org)
Date: Mon Nov 05 2001 - 12:01:24 EST


On Mon, Nov 05, 2001 at 01:09:54PM +0100, Marcel J.E. Mol wrote:
> I have an i8000 too. I tried some info to use the 'multimedia' buttons
> next to the power button. Do you know if these are also managed through
> smm? Or are thre other ways/tools to access these buttons?
In fact, the two buttons next to the power button only are supported by
the SMM BIOS. The 4 others buttons send e0 keyboard scancodes, and are
fully supported by every kernel (Respectively e0 01, e0 02, e0 03, and
e0 04, from left to right).
Here is a patch to prove what I'm saying :

--- drivers/char/pc_keyb.c.orig Mon Nov 5 17:41:54 2001
+++ drivers/char/pc_keyb.c Mon Nov 5 17:45:56 2001
@@ -227,9 +227,18 @@
 #define E0_MSLW 125
 #define E0_MSRW 126
 #define E0_MSTM 127
+/*
+ * Multimedia Keys on Dell Inspiron i8x00
+ * (from left to right : play, stop, previous, next)
+ */
+#define E0_DELL_PLAY 120
+#define E0_DELL_STOP 121
+#define E0_DELL_PREVIOUS 122
+#define E0_DELL_NEXT 123

 static unsigned char e0_keys[128] = {
- 0, 0, 0, 0, 0, 0, 0, 0, /* 0x00-0x07 */
+ E0_DELL_PLAY, E0_DELL_STOP, E0_DELL_PREVIOUS, E0_DELL_NEXT, /*
0x00-0x03 */
+ 0, 0, 0, 0, /* 0x04-0x07 */
   0, 0, 0, 0, 0, 0, 0, 0, /* 0x08-0x0f */
   0, 0, 0, 0, 0, 0, 0, 0, /* 0x10-0x17 */
   0, 0, 0, 0, E0_KPENTER, E0_RCTRL, 0, 0, /* 0x18-0x1f */

Then edit your /etc/console/bootime.kmap.gz (package console-common in
debian) to add for example :

----
keycode 120 = F70 F71
keycode 121 = Last_Console
keycode 122 = Decr_Console
keycode 123 = Incr_Console
string F70 = "Hello World !"
string F71 = "Dell Inspiron Powah !"
----

then issue the command /etc/init.d/keymap.sh (or loadkeys if you do not use debian) *under console*, and you'll then believe me :-)

To support those keys under X, that's more complicated, because AFAIK we have to create X keysyms before assigning them to keycodes. but try that in your ~/.xmodmap : ---- keycode 129 = a b c d keycode 130 = a b c d keycode 131 = a b c d keycode 132 = a b c d ---- then xmodmap ~/.xmodmap, and try <PLAY>, SHIFT-<PLAY>, ALT-<PLAY>, CTRL-<PLAY>, etc. (In fact, I really don't remember why I used 129-132 here... try with 120-123 if it doesn't work :-) I think I used those values to test if keycodes are 8bits clean, they are not.)

Hope this helps, and if anybody knows how to implement keysyms, I'm interested... as long as I don't have to patch XFree86 !

Please do not hesitate to contact me if you have any other questions.

To finish, SMM BIOS implements supoprt for the two big buttons next to the power button (try to press them both at the same time to have mute ;-), and the three blue Fn-keys for sound (PgUp, PgDown, and End)

Stephane.

-- /// Stephane Jourdois /"\ ASCII RIBBON CAMPAIGN \\\ ((( Ingénieur développement \ / AGAINST HTML MAIL ))) \\\ 6, av. de la Belle Image X /// \\\ 94440 Marolles en Brie / \ +33 6 8643 3085 ///


- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Wed Nov 07 2001 - 21:00:26 EST