# # 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)