From e020ff93508aadc6f3727f715f5f7a88a5938afb Mon Sep 17 00:00:00 2001 From: Fredrik Roubert Date: Mon, 26 Jun 2006 00:24:35 -0700 Subject: [PATCH] --- yaml --- r: 30179 b: refs/heads/master c: d2be8ee53856c3c510d4d38f534979747db65d96 h: refs/heads/master i: 30177: e58af5f3714f473cf2548f9c2a6a44074c08e285 30175: 21c38ba34b697e4322c90f0ec175e2b9372409ca v: v3 --- [refs] | 2 +- trunk/drivers/char/keyboard.c | 10 ++++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index 50ef06c41572..cb3398f55498 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 0c6856f702732d3cfc33eb59303e998ad6961de8 +refs/heads/master: d2be8ee53856c3c510d4d38f534979747db65d96 diff --git a/trunk/drivers/char/keyboard.c b/trunk/drivers/char/keyboard.c index edd996f6fb87..13e3126c1de5 100644 --- a/trunk/drivers/char/keyboard.c +++ b/trunk/drivers/char/keyboard.c @@ -151,6 +151,7 @@ unsigned char kbd_sysrq_xlate[KEY_MAX + 1] = "230\177\000\000\213\214\000\000\000\000\000\000\000\000\000\000" /* 0x50 - 0x5f */ "\r\000/"; /* 0x60 - 0x6f */ static int sysrq_down; +static int sysrq_alt_use; #endif static int sysrq_alt; @@ -1143,7 +1144,7 @@ static void kbd_keycode(unsigned int keycode, int down, kbd = kbd_table + fg_console; if (keycode == KEY_LEFTALT || keycode == KEY_RIGHTALT) - sysrq_alt = down; + sysrq_alt = down ? keycode : 0; #ifdef CONFIG_SPARC if (keycode == KEY_STOP) sparc_l1_a_state = down; @@ -1163,9 +1164,14 @@ static void kbd_keycode(unsigned int keycode, int down, #ifdef CONFIG_MAGIC_SYSRQ /* Handle the SysRq Hack */ if (keycode == KEY_SYSRQ && (sysrq_down || (down == 1 && sysrq_alt))) { - sysrq_down = down; + if (!sysrq_down) { + sysrq_down = down; + sysrq_alt_use = sysrq_alt; + } return; } + if (sysrq_down && !down && keycode == sysrq_alt_use) + sysrq_down = 0; if (sysrq_down && down && !rep) { handle_sysrq(kbd_sysrq_xlate[keycode], regs, tty); return;