diff options
-rw-r--r-- | linux/opensimpad-2.4.25-vrs2-pxa1-jpm1/simpad-switches-input2.diff | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/linux/opensimpad-2.4.25-vrs2-pxa1-jpm1/simpad-switches-input2.diff b/linux/opensimpad-2.4.25-vrs2-pxa1-jpm1/simpad-switches-input2.diff index e69de29bb2..9531cf1b43 100644 --- a/linux/opensimpad-2.4.25-vrs2-pxa1-jpm1/simpad-switches-input2.diff +++ b/linux/opensimpad-2.4.25-vrs2-pxa1-jpm1/simpad-switches-input2.diff @@ -0,0 +1,52 @@ + +# +# Patch managed by http://www.holgerschurig.de/patcher.html +# + +--- drivers/misc/switches-core.c~Fooo ++++ drivers/misc/switches-core.c +@@ -66,7 +66,32 @@ + int + dummy_k_translate(unsigned char scancode, unsigned char *keycode, char raw_mode) + { +- *keycode = scancode; ++ if (scancode == KEY_UP) ++ *keycode = 144; ++ else if (scancode == KEY_LEFT) ++ *keycode = 146; ++ else if (scancode == KEY_RIGHT) ++ *keycode = 151; ++ else if (scancode == KEY_DOWN) ++ *keycode = 161; ++ else if (scancode == 144) ++ *keycode = KEY_UP; ++ else if (scancode == 146) ++ *keycode = KEY_LEFT; ++ else if (scancode == 151) ++ *keycode = KEY_RIGHT; ++ else if (scancode == 161) ++ *keycode = KEY_DOWN; ++ else if (scancode == KEY_KP8) ++ *keycode = KEY_UP; ++ else if (scancode == KEY_KP4) ++ *keycode = KEY_LEFT; ++ else if (scancode == KEY_KP6) ++ *keycode = KEY_RIGHT; ++ else if (scancode == KEY_KP2) ++ *keycode = KEY_DOWN; ++ else ++ *keycode = scancode; + return 1; + } + +@@ -174,8 +199,9 @@ + if (machine_is_simpad()) { + if (SWITCHES_COUNT(mask) > 0) + { ++// printk("st %04lx, ev: %04lx\n",mask->states[0],mask->events[0]); + if (mask->events[0] & SIMPAD_KEY_SUSPEND) +- input_report_key(&idev, KEY_POWER, (mask->states[0] & SIMPAD_KEY_SUSPEND) ? 1 : 0); ++ input_report_key(&idev, KEY_POWER, (mask->states[0] & SIMPAD_KEY_SUSPEND) ? 0 : 1); + if (mask->events[0] & SIMPAD_KEY_ENTER) + input_report_key(&idev, KEY_ENTER, (mask->states[0] & SIMPAD_KEY_ENTER) ? 1 : 0); + if (mask->events[0] & SIMPAD_KEY_UP) |