les*_*ana 31 linux keyboard console magic-sysrq
在神奇的 sysrq键组合中,有一个组合alt+sysrq+r,根据维基百科,它执行以下操作:
将键盘从原始模式(X11 和 svgalib 等程序使用的模式)切换到 XLATE 模式
什么是原始模式?什么是 XLATE 模式?
切换到 XLATE 模式后,我可以切换回原始模式吗?
我如何知道我的键盘处于哪种模式?
Gil*_*il' 29
当您按下键盘上的某个键时,它会向计算机发送一个数字代码,称为扫描代码。扫描码告诉计算机按下了哪个键;例如,在典型的美式键盘上,A按键会在您按下时发送扫描代码 30(松开时发送 158)。当键盘处于原始模式时,键盘驱动程序将这些代码直接报告给应用程序(“原始”表示未处理的、直接脱离键盘的)。一些程序使用原始模式并进行自己的键盘处理;在X服务器是最突出的一个。
大多数程序都希望当您按下A键时,程序读取字符a(ASCII 97),当您按下Shift+ 时A,程序读取A(ASCII 65),当您按下Ctrl+ 时A,程序读取Ctrl+A字符 (ASCII 1)。没有关联字符的键发送转义序列,例如\e[Afor 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 模式,您可以在其中键入字符。
您可以定义键盘发送的代码类型。这是通过键盘模式完成的。您可以使用 更改键盘的模式kbd_mode。
这些是联机帮助页中的选项:
-s: scancode mode (RAW),
-k: keycode mode (MEDIUMRAW),
-a: ASCII mode (XLATE),
-u: UTF-8 mode (UNICODE).
Run Code Online (Sandbox Code Playgroud)
如果开发人员可以简单地获取按下键的扫描码,那么他更容易捕获诸如按下左移键之类的按键事件。