Committing atkbd.c additional keycodes patch for Zephaniah.
Chris Ball
cjb at laptop.org
Tue Nov 7 22:38:39 EST 2006
Commit: 76303b1d2132ae33e31ba928f27fc54e1869ad52
Parent: 6a94be8adce907b459ed6232f03e7db1543873e2
commit 76303b1d2132ae33e31ba928f27fc54e1869ad52
Author: Chris Ball <cjb at laptop.org>
AuthorDate: Tue Nov 7 13:52:30 2006 -0500
Commit: Chris Ball <cjb at laptop.org>
CommitDate: Tue Nov 7 13:52:30 2006 -0500
Committing atkbd.c additional keycodes patch for Zephaniah.
---
drivers/input/keyboard/atkbd.c | 54 +++++++++++++++++++++++-----------------
1 files changed, 31 insertions(+), 23 deletions(-)
diff --git a/drivers/input/keyboard/atkbd.c b/drivers/input/keyboard/atkbd.c
index cbb9366..c367a99 100644
--- a/drivers/input/keyboard/atkbd.c
+++ b/drivers/input/keyboard/atkbd.c
@@ -67,12 +67,25 @@ __obsolete_setup("atkbd_set=");
__obsolete_setup("atkbd_reset");
__obsolete_setup("atkbd_softrepeat=");
+#define ATKBD_KEY_UNKNOWN 0
+#define ATKBD_KEY_NULL 0xFF0000FF
+
+#define ATKBD_SCR_1 0xFF0000FE
+#define ATKBD_SCR_2 0xFF0000FD
+#define ATKBD_SCR_4 0xFF0000FC
+#define ATKBD_SCR_8 0xFF0000FB
+#define ATKBD_SCR_CLICK 0xFF0000FA
+#define ATKBD_SCR_LEFT 0xFF0000F9
+#define ATKBD_SCR_RIGHT 0xFF0000F8
+
+#define ATKBD_SPECIAL 0xFF0000F8
+
/*
* Scancode to keycode tables. These are just the default setting, and
* are loadable via an userland utility.
*/
-static unsigned char atkbd_set2_keycode[512] = {
+static unsigned int atkbd_set2_keycode[512] = {
#ifdef CONFIG_KEYBOARD_ATKBD_HP_KEYCODES
@@ -91,11 +104,17 @@ #else
82, 83, 80, 76, 77, 72, 1, 69, 87, 78, 81, 74, 55, 73, 70, 99,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 217,100,255, 0, 97,165, 0, 0,156, 0, 0, 0, 0, 0, 0,125,
+
+ 217,100,ATKBD_KEY_NULL, 0, 97,165, 0, 0,
+ 156, 0, 0, 0, 0, 0, 0,125,
+
173,114, 0,113, 0, 0, 0,126,128, 0, 0,140, 0, 0, 0,127,
159, 0,115, 0,164, 0, 0,116,158, 0,150,166, 0, 0, 0,142,
157, 0, 0, 0, 0, 0, 0, 0,155, 0, 98, 0, 0,163, 0, 0,
- 226, 0, 0, 0, 0, 0, 0, 0, 0,255, 96, 0, 0, 0,143, 0,
+
+ 226, 0, 0, 0, 0, 0, 0, 0,
+ 0,ATKBD_KEY_NULL, 96, 0, 0, 0,143, 0,
+
0, 0, 0, 0, 0, 0, 0, 0, 0,107, 0,105,102, 0, 0,112,
110,111,108,112,106,103, 0,119, 0,118,109, 0, 99,104,119, 0,
@@ -154,19 +173,6 @@ #define ATKBD_RET_HANJA 0xf1
#define ATKBD_RET_HANGEUL 0xf2
#define ATKBD_RET_ERR 0xff
-#define ATKBD_KEY_UNKNOWN 0
-#define ATKBD_KEY_NULL 255
-
-#define ATKBD_SCR_1 254
-#define ATKBD_SCR_2 253
-#define ATKBD_SCR_4 252
-#define ATKBD_SCR_8 251
-#define ATKBD_SCR_CLICK 250
-#define ATKBD_SCR_LEFT 249
-#define ATKBD_SCR_RIGHT 248
-
-#define ATKBD_SPECIAL 248
-
#define ATKBD_LED_EVENT_BIT 0
#define ATKBD_REP_EVENT_BIT 1
@@ -178,7 +184,7 @@ #define ATKBD_XL_HANGEUL 0x10
#define ATKBD_XL_HANJA 0x20
static struct {
- unsigned char keycode;
+ unsigned int keycode;
unsigned char set2;
} atkbd_scroll_keys[] = {
{ ATKBD_SCR_1, 0xc5 },
@@ -204,7 +210,7 @@ struct atkbd {
char phys[32];
unsigned short id;
- unsigned char keycode[512];
+ unsigned int keycode[512];
unsigned char set;
unsigned char translated;
unsigned char extra;
@@ -354,7 +360,7 @@ static irqreturn_t atkbd_interrupt(struc
unsigned int code = data;
int scroll = 0, hscroll = 0, click = -1, add_release_event = 0;
int value;
- unsigned char keycode;
+ unsigned int keycode;
#ifdef ATKBD_DEBUG
printk(KERN_DEBUG "atkbd.c: Received %02x flags %02x\n", data, flags);
@@ -847,9 +853,11 @@ static void atkbd_set_keycode_table(stru
atkbd->keycode[i | 0x80] = atkbd_scroll_keys[j].keycode;
}
} else if (atkbd->set == 3) {
- memcpy(atkbd->keycode, atkbd_set3_keycode, sizeof(atkbd->keycode));
+ for (i = 0; i < ARRAY_SIZE(atkbd_set3_keycode); i++)
+ atkbd->keycode[i] = atkbd_set3_keycode[i];
} else {
- memcpy(atkbd->keycode, atkbd_set2_keycode, sizeof(atkbd->keycode));
+ for (i = 0; i < ARRAY_SIZE(atkbd_set2_keycode); i++)
+ atkbd->keycode[i] = atkbd_set2_keycode[i];
if (atkbd->scroll)
for (i = 0; i < ARRAY_SIZE(atkbd_scroll_keys); i++)
@@ -915,8 +923,8 @@ static void atkbd_set_device_attrs(struc
}
input_dev->keycode = atkbd->keycode;
- input_dev->keycodesize = sizeof(unsigned char);
- input_dev->keycodemax = ARRAY_SIZE(atkbd_set2_keycode);
+ input_dev->keycodesize = sizeof(unsigned int);
+ input_dev->keycodemax = ARRAY_SIZE(atkbd->keycode);
for (i = 0; i < 512; i++)
if (atkbd->keycode[i] && atkbd->keycode[i] < ATKBD_SPECIAL)
More information about the Commits-kernel
mailing list