# # Patch managed by http://www.holgerschurig.de/patcher.html # --- linux/drivers/char/corgi_keyb.c~enable-sysrq +++ linux/drivers/char/corgi_keyb.c @@ -23,7 +23,7 @@ #include #include #include -#include +#include #include #include #include @@ -46,6 +46,18 @@ #endif /* + * This is the KeyCode [not ScanCode!] to ASCII Code mapping table + */ + +#ifdef CONFIG_MAGIC_SYSRQ +static unsigned char corgi_sysrq_xlate[128] = + "\000abcdefghijklmno" /* 00-0f */ + "pqrstuvwxyz\000\000\000\000\000" /* 10-1f */ + " \000\000\000\000\000\000\000\0001234567" /* 20-2f */ + "890\000\000\000\000\000\000\000\000\000\000\000\000\000"; /* 30-3f */ +#endif + +/* * common logical driver definition */ extern void sharppda_kbd_press(int keycode); @@ -251,7 +263,13 @@ corgi_wakeup_button_init(); #endif // USE_WAKEUP_BUTTON - printk("keyboard initilaized.\n"); + printk("keyboard initialized.\n"); +#ifdef CONFIG_MAGIC_SYSRQ + k_sysrq_key = 0x28; // KEY_HOME + k_sysrq_xlate = corgi_sysrq_xlate; + printk("magic_sysrq initialized.\n"); +#endif + } int corgi_kbd_translate(unsigned char scancode, unsigned char *keycode_p) --- linux/drivers/char/keyboard.c~enable-sysrq +++ linux/drivers/char/keyboard.c @@ -366,7 +366,7 @@ #ifdef CONFIG_MAGIC_SYSRQ /* Handle the SysRq Hack */ if (keycode == SYSRQ_KEY) { sysrq_pressed = !up_flag; - goto out; + // goto out; } else if (sysrq_pressed) { if (!up_flag) { handle_sysrq(kbd_sysrq_xlate[keycode], kbd_pt_regs, kbd, tty);