mirror of
git://projects.qi-hardware.com/openwrt-xburst.git
synced 2024-11-25 14:24:03 +02:00
137 lines
3.4 KiB
Diff
137 lines
3.4 KiB
Diff
|
diff --git a/arch/mips/jz4740/platform.c b/arch/mips/jz4740/platform.c
|
||
|
index 5859589..ddd7d3f 100644
|
||
|
--- a/arch/mips/jz4740/platform.c
|
||
|
+++ b/arch/mips/jz4740/platform.c
|
||
|
@@ -242,11 +242,11 @@ static struct platform_device jz_nand_device = {
|
||
|
* don't define this. the keyboard and keyboard both work
|
||
|
*/
|
||
|
|
||
|
-#define KEY_QI_QI KEY_F13
|
||
|
-#define KEY_QI_UPRED KEY_RIGHTCTRL
|
||
|
+#define KEY_QI_QI KEY_RIGHTCTRL
|
||
|
+#define KEY_QI_UPRED KEY_RIGHTSHIFT
|
||
|
#define KEY_QI_VOLUP KEY_F15
|
||
|
#define KEY_QI_VOLDOWN KEY_F16
|
||
|
-#define KEY_QI_FN KEY_F17
|
||
|
+#define KEY_QI_FN KEY_RIGHTCTRL
|
||
|
|
||
|
static const uint32_t qi_lb60_keymap[] = {
|
||
|
KEY(0, 0, KEY_F1), /* S2 */
|
||
|
diff --git a/drivers/char/defkeymap.map b/drivers/char/defkeymap.map
|
||
|
index 25d05b4..497cfc2 100644
|
||
|
--- a/drivers/char/defkeymap.map
|
||
|
+++ b/drivers/char/defkeymap.map
|
||
|
@@ -113,9 +113,9 @@ keycode 43 = backslash bar
|
||
|
control keycode 43 = Control_backslash
|
||
|
alt keycode 43 = Meta_backslash
|
||
|
keycode 44 = z
|
||
|
- altgr keycode 43 = nine
|
||
|
+ altgr keycode 44 = nine
|
||
|
keycode 45 = x
|
||
|
- altgr keycode 43 = zero
|
||
|
+ altgr keycode 45 = zero
|
||
|
keycode 46 = c
|
||
|
altgr keycode 46 = Hex_C
|
||
|
keycode 47 = v
|
||
|
@@ -133,7 +133,7 @@ keycode 52 = period greater
|
||
|
keycode 53 = slash question
|
||
|
control keycode 53 = Delete
|
||
|
alt keycode 53 = Meta_slash
|
||
|
-keycode 54 = Shift
|
||
|
+keycode 54 = AltGr
|
||
|
keycode 55 = KP_Multiply
|
||
|
keycode 56 = Alt
|
||
|
keycode 57 = space space
|
||
|
@@ -240,7 +240,7 @@ keycode 93 =
|
||
|
keycode 94 =
|
||
|
keycode 95 =
|
||
|
keycode 96 = KP_Enter
|
||
|
-keycode 97 = AltGr
|
||
|
+keycode 97 = Control
|
||
|
keycode 98 = KP_Divide
|
||
|
keycode 99 = Control_backslash
|
||
|
control keycode 99 = Control_backslash
|
||
|
diff --git a/drivers/char/keyboard.c b/drivers/char/keyboard.c
|
||
|
index 737be95..4cdd9ac 100644
|
||
|
--- a/drivers/char/keyboard.c
|
||
|
+++ b/drivers/char/keyboard.c
|
||
|
@@ -121,6 +121,8 @@ struct vt_spawn_console vt_spawn_con = {
|
||
|
.sig = 0,
|
||
|
};
|
||
|
|
||
|
+static int ctrlr = 0;
|
||
|
+
|
||
|
/*
|
||
|
* Variables exported for vt.c
|
||
|
*/
|
||
|
@@ -1133,6 +1135,60 @@ static int emulate_raw(struct vc_data *vc, unsigned int keycode, unsigned char u
|
||
|
}
|
||
|
#endif
|
||
|
|
||
|
+static int qi_keymap(int keysym, int keycode, int up_flag)
|
||
|
+{
|
||
|
+ int ret;
|
||
|
+ ret = keysym;
|
||
|
+
|
||
|
+ if (up_flag && keycode == KEY_RIGHTCTRL) {
|
||
|
+ ctrlr = 0;
|
||
|
+ return ret;
|
||
|
+ }
|
||
|
+
|
||
|
+ if (ctrlr) {
|
||
|
+ switch (keycode) {
|
||
|
+ case KEY_SLASH: /* 0 */
|
||
|
+ ret = 61488;
|
||
|
+ break;
|
||
|
+ case KEY_N: /* 1 */
|
||
|
+ ret = 61489;
|
||
|
+ break;
|
||
|
+ case KEY_M: /* 2 */
|
||
|
+ ret = 61490;
|
||
|
+ break;
|
||
|
+ case KEY_B: /* 3 */
|
||
|
+ ret = 61491;
|
||
|
+ break;
|
||
|
+ case KEY_J: /* 4 */
|
||
|
+ ret = 61492;
|
||
|
+ break;
|
||
|
+ case KEY_K: /* 5 */
|
||
|
+ ret = 61493;
|
||
|
+ break;
|
||
|
+ case KEY_L: /* 6 */
|
||
|
+ ret = 61494;
|
||
|
+ break;
|
||
|
+ case KEY_U: /* 7 */
|
||
|
+ ret = 61495;
|
||
|
+ break;
|
||
|
+ case KEY_I: /* 8 */
|
||
|
+ ret = 61496;
|
||
|
+ break;
|
||
|
+ case KEY_O: /* 9 */
|
||
|
+ ret = 61497;
|
||
|
+ break;
|
||
|
+ default:
|
||
|
+ break;
|
||
|
+ }
|
||
|
+ }
|
||
|
+
|
||
|
+ if (keycode == KEY_RIGHTCTRL) {
|
||
|
+ ctrlr = 1;
|
||
|
+ }
|
||
|
+
|
||
|
+ return ret;
|
||
|
+}
|
||
|
+
|
||
|
static void kbd_rawcode(unsigned char data)
|
||
|
{
|
||
|
struct vc_data *vc = vc_cons[fg_console].d;
|
||
|
@@ -1284,6 +1340,8 @@ static void kbd_keycode(unsigned int keycode, int down, int hw_raw)
|
||
|
if (raw_mode && type != KT_SPEC && type != KT_SHIFT)
|
||
|
return;
|
||
|
|
||
|
+ keysym = qi_keymap(keysym, keycode, !down);
|
||
|
+
|
||
|
(*k_handler[type])(vc, keysym & 0xff, !down);
|
||
|
|
||
|
param.ledstate = kbd->ledflagstate;
|