什么是原始键盘模式?


27

根据Wikipedia的介绍,在魔术sysrq组合键中,存在以下组合alt+sysrq+r

将键盘从原始模式(X11和svgalib等程序使用的模式)切换到XLATE模式

什么是原始模式?什么是XLATE模式?

一旦切换到XLATE模式,是否可以切换回原始模式?

如何知道键盘处于哪种模式?

Answers:


23

当您按下键盘上的某个键时,它会向计算机发送一个数字代码,称为扫描代码。扫描代码告诉计算机按下了哪个键。例如,在典型的美国键盘上,A按键会在您按下时发送扫描代码30(在释放时发送158)。当键盘处于原始模式时,键盘驱动程序会将这些代码直接报告给应用程序(“原始”表示未经处理的直接在键盘上显示)。一些程序使用原始模式并进行自己的键盘处理。在X服务器是最突出的一个。

大多数程序期望在按下A键时,程序读取字符a(ASCII 97),在按下Shift+时A,程序读取A(ASCII 65),而当按下Ctrl+时A,程序读取Ctrl+A字符(ASCII 1)。没有关联字符的键发送转义序列,例如,\e[A对于Left,其中\eESC字符(ASCII 27)。当键盘处于ASCII模式(也称为XLATE模式)(“ translate”的缩写)时,键盘驱动程序执行此转换。XLATE模式允许应用程序进行字符输入,但代价是无法访问“ Ctrl + A”以外的“按下左移键”或Ctrl + Shift + A这样的细微差别。

使用kbd_mode,您可以在模式之间进行切换,并在不带任何参数的情况下调用它即可显示当前模式。

神奇的SysRq组合键旨在从各种讨厌的情况中恢复。按键组合之一是Alt+SysRq+K杀死当前虚拟控制台上的所有程序。如果该程序将键盘置于原始模式,则您将无法在登录提示符下键入(该提示符通常会出现,具体取决于您的系统配置)。按下Alt+SysRq+R可恢复通常的(X外部)ASCII模式,您可以在其中键入字符。


9

您可以定义键盘发送的代码类型。这是通过键盘模式完成的。您可以使用更改键盘的模式kbd_mode

这些是手册页中的选项:

   -s: scancode mode (RAW),
   -k: keycode mode (MEDIUMRAW),
   -a: ASCII mode (XLATE),
   -u: UTF-8 mode (UNICODE).

如果开发人员可以简单地获取所按下键的扫描代码,则它可以更轻松地捕获按键事件,例如左移键。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.