[PATCH] input / keyboard / Scancode Set 3 support broken

From: Knut Petersen
Date: Fri Oct 24 2003 - 02:56:14 EST


Hi everybody!

If somebody uses keyboard scancode set 3 it is necessary to explicitly
program the keyboard to send make/break codes for all keys and to set
autorepeat for all keys. I reported this bug and the suggested fix to
Vojtech Pavlik almost a month ago and he published the enclosed patch.

This patch never made it to the main kernel tree, but it is really critical
for some people. One example is the LK461/46W series of keyboards from Digital Equipment Corporations. These are VMS keyboards that are also usable
on a normal PC.

These keyboards support Scancode Set 2, but for some keys this support is
screwed up -- some function keys (e.g. F18/F20) report the same scancode sequence combined with both alt and shift keys.

Scancode Set 3 works perfectly if all keys are programmed to give make/break codes.

A lot of keyboards manufactured by Cherry only make/break for some (not all!)
modifyer keys in scancode set 3 without this fix.

I believe that this patch is nothing but a very obvious bug fix, please
include it in the linux kernel.

cu,
Knut Petersen

Below find the patch from Vojtech as published on 29-sep-2003:

===================================================================

ChangeSet@xxxxxx, 2003-09-29 12:59:49+02:00, vojtech@xxxxxxx
input: Explicitly set All-Repeat mode in Set3 on AT keyboards.


atkbd.c | 3 +++
1 files changed, 3 insertions(+)

===================================================================

diff -Nru a/drivers/input/keyboard/atkbd.c b/drivers/input/keyboard/atkbd.c
--- a/drivers/input/keyboard/atkbd.c Mon Sep 29 19:36:59 2003
+++ b/drivers/input/keyboard/atkbd.c Mon Sep 29 19:36:59 2003
@@ -111,6 +111,7 @@
#define ATKBD_CMD_SETREP 0x10f3
#define ATKBD_CMD_ENABLE 0x00f4
#define ATKBD_CMD_RESET_DIS 0x00f5
+#define ATKBD_CMD_SETALL_MBR 0x00fa
#define ATKBD_CMD_RESET_BAT 0x02ff
#define ATKBD_CMD_RESEND 0x00fe
#define ATKBD_CMD_EX_ENABLE 0x10ea
@@ -519,6 +520,8 @@
if (atkbd_command(atkbd, param, ATKBD_CMD_SSCANSET))
return 2;
}
+
+ atkbd_command(atkbd, param, ATKBD_CMD_SETALL_MBR);

return 3;
}


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