1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
--- linux-2.6.16/drivers/input/keyboard/locomokbd.c.orig 2006-05-13 22:53:33.810228656 +0200
+++ linux-2.6.16/drivers/input/keyboard/locomokbd.c 2006-05-13 22:56:56.544408376 +0200
@@ -45,17 +45,20 @@
#define LOCOMOKBD_NUMKEYS 128
-#define LOCOMO_KEY_CALENDER KEY_F1
-#define LOCOMO_KEY_ADDRESS KEY_F2
-#define LOCOMO_KEY_CANCEL KEY_F4
-#define LOCOMO_KEY_CENTER KEY_F5
-#define LOCOMO_KEY_MAIL KEY_F10
-#define LOCOMO_KEY_OK KEY_F11
+#define LOCOMO_KEY_CALENDER KEY_LEFTCTRL
+#define LOCOMO_KEY_ADDRESS KEY_LEFTALT /* Needed for SysRQ */
+#define LOCOMO_KEY_HOME KEY_SYSRQ /* Needed for SysRQ */
#define LOCOMO_KEY_MENU KEY_F12
+#define LOCOMO_KEY_MAIL KEY_F10
+#define LOCOMO_KEY_OK KEY_F11 /* Don't hardwire to KEY_RETURN */
+#define LOCOMO_KEY_CANCEL KEY_POWER
+#define LOCOMO_KEY_CENTER KEY_F5 /* Don't hardwire to KEY_RETURN */
+
+#define LOCOMO_KEY_FN KEY_F9
static unsigned char locomokbd_keycode[LOCOMOKBD_NUMKEYS] = {
- 0, LOCOMO_KEY_CANCEL, LOCOMO_KEY_CALENDER, KEY_HOME, 0, 0, 0, 0, 0, 0, /* 0 - 9 */
- KEY_HOME, 0, 0, 0, 0, 0, 0, LOCOMO_KEY_MENU, KEY_HOME, LOCOMO_KEY_ADDRESS, /* 10 - 19 */
+ 0, LOCOMO_KEY_CANCEL, LOCOMO_KEY_CALENDER, LOCOMO_KEY_HOME, 0, 0, 0, 0, 0, 0, /* 0 - 9 */
+ 0, 0, 0, 0, 0, 0, 0, LOCOMO_KEY_MENU, 0, LOCOMO_KEY_ADDRESS, /* 10 - 19 */
0, 0, 0, 0, 0, LOCOMO_KEY_MAIL, 0, 0, 0, 0, /* 20 - 29 */
0, 0, 0, LOCOMO_KEY_CENTER, 0, LOCOMO_KEY_MAIL, 0, 0, 0, 0, /* 30 - 39 */
0, 0, 0, 0, 0, 0, 0, 0, 0, KEY_RIGHT, /* 40 - 49 */
@@ -65,7 +68,7 @@
0, 0, 0, 0, 0, 0, KEY_ENTER, KEY_RIGHTSHIFT, KEY_K, KEY_J, /* 80 - 89 */
KEY_G, KEY_F, KEY_X, KEY_S, 0, 0, 0, 0, 0, 0, /* 90 - 99 */
0, 0, KEY_DOT, 0, KEY_COMMA, KEY_N, KEY_B, KEY_C, KEY_Z, KEY_A, /* 100 - 109 */
- KEY_LEFTSHIFT, KEY_TAB, KEY_LEFTCTRL, 0, 0, 0, 0, 0, 0, 0, /* 110 - 119 */
+ KEY_LEFTSHIFT, KEY_TAB, LOCOMO_KEY_FN, 0, 0, 0, 0, 0, 0, 0, /* 110 - 119 */
KEY_M, KEY_SPACE, KEY_V, KEY_APOSTROPHE, KEY_SLASH, 0, 0, 0 /* 120 - 128 */
};
@@ -76,7 +79,7 @@
#define NR_SCANCODES 128
#define KB_DELAY 8
-#define SCAN_INTERVAL (HZ/10)
+#define SCAN_INTERVAL (HZ/20)
#define LOCOMOKBD_PRESSED 1
struct locomokbd {
@@ -146,6 +149,7 @@
locomokbd_charge_all(membase);
num_pressed = 0;
+
for (col = 0; col < KB_COLS; col++) {
locomokbd_activate_col(membase, col);
@@ -155,7 +159,7 @@
for (row = 0; row < KB_ROWS; row++) {
scancode = SCANCODE(col, row);
if (rowd & KB_ROWMASK(row)) {
- /* printk(KERN_ERR "locomokbd: COL [%i] ROW [%i] scancode [%i] keycode [%i]\n",col,row,scancode,locomokbd->keycode[scancode]); */
+ /* printk(KERN_ERR "locomokbd: ROW [%i] COL [%i] scancode [%i] keycode [%i]\n",row,col,scancode,locomokbd->keycode[scancode]); */
num_pressed += 1;
input_report_key(locomokbd->input, locomokbd->keycode[scancode], 1);
} else {
|