在里面魔法系统alt+sysrq+r
按键组合,根据维基百科,有一种组合可以执行以下操作:
将键盘从原始模式(X11 和 svgalib 等程序使用的模式)切换到 XLATE 模式
什么是原始模式?什么是 XLATE 模式?
切换到 XLATE 模式后是否可以切换回原始模式?
如何判断我的键盘处于哪种模式?
答案1
当您按下键盘上的某个键时,它会向计算机发送一个数字代码,称为扫描代码。扫描码告诉计算机按下了哪个键;例如,在典型的美式键盘上,A按下该键时会发送扫描码 30(松开该键时会发送扫描码 158)。当键盘处于原始模式时,键盘驱动程序将这些代码直接报告给应用程序(“原始”意味着未经处理、直接脱离键盘)。一些程序使用原始模式并进行自己的键盘处理;这X服务器是最突出的一个。
大多数程序期望当您按下该A键时,程序读取字符a
(ASCII 97),当您按下Shift+时A,程序读取A
(ASCII 65),当您按下Ctrl+时A,程序读取Ctrl+A
字符 (ASCII 1)。没有关联字符的键会发送转义序列,例如\e[A
for Left,其中\e
是 ESC 字符 (ASCII 27)。当键盘处于 ASCII 模式(也称为 XLATE 模式(“translate”的缩写))时,键盘驱动程序会执行此转换。 XLATE 模式允许应用程序进行字符输入,但代价是无法访问“按下左 Shift 键”或 Ctrl+Shift+A 等与 Ctrl+A 不同的细微差别。
这kbd_mode
允许您在模式之间切换,并在您不带任何参数调用它时显示当前模式。
神奇的 SysRq 组合键旨在从各种糟糕的情况中恢复。组合键之一是Alt+SysRq+K
杀死当前虚拟控制台上的所有程序;如果该程序将键盘置于原始模式,那么您将无法在登录提示符处键入(该提示符经常出现,具体取决于您的系统配置)。按Alt+SysRq+R
可恢复通常(X 之外)的 ASCII 模式,您可以在其中键入字符。
答案2
您可以定义键盘发送的代码类型。这是通过键盘模式完成的。您可以使用 更改键盘模式kbd_mode
。
这些是联机帮助页中的选项:
-s: scancode mode (RAW),
-k: keycode mode (MEDIUMRAW),
-a: ASCII mode (XLATE),
-u: UTF-8 mode (UNICODE).
如果开发人员能够简单地获取按下的按键的扫描码,那么他会更容易捕获诸如按下左 Shift 键之类的按键事件。