éta*_*ogy 7 keyboard linux-kernel
我不了解虚拟终端设备(例如/dev/tty1
),但我知道tty1
如果按 ,我可以“切换”到ctrl + alt + f1
。
我有一个自定义键盘布局,它在/usr/share/X11/xkb/symbols/us
但只有在 X 正在运行时才“有效”。
虚拟终端和 X 似乎都以自己的方式管理键盘输入/输出,但大概它们都以某种方式与(Linux)内核接口,这必须为键盘硬件提供某种抽象。
Linux 内核如何处理键盘输入/输出?是否有一个源文件,我可以查看所有扫描码/键码/keysims/等的列表,也许还有 Linux 如何管理“键盘”的整个想法的整体逻辑?
(我正在运行 Lubuntu。)
请参阅键盘输入和文本输出如何工作?以了解该主题的概述。
更详细地说,在 Linux 下,内核从硬件接收扫描码并将它们转换为键码。(此术语并非完全标准;您可能会发现“扫描码”或“键码”用于两者。)此转换的工作方式取决于键盘驱动程序。对于 PS/2 键盘,您可以使用setkeycodes
. 对于 USB 键盘,您可以通过 udev进行配置。另请参阅Arch 维基。所有用户输入设备,包括键盘和鼠标,都通过事件设备公开/dev/input/event*
。
在 Linux 控制台中,键码根据控制台键映射映射到转义序列。由于控制台是一个文本终端,应用程序看到字节,可打印字符代表它们自己,功能键使用控制字符或转义序列编码。您可以使用 更改映射loadkeys
。映射使用两个间接级别,从键码+修饰符组合(具有三个修饰符:shift
, control
, alt
)到键符和从键符到字符串(字符或转义序列)。键符集是固定的,因此如果您想定义自定义组合,您将需要使用现有的不使用的键符,例如F13
, F14
, ...
如果您想查看实现这些转换的源代码,请查看键盘驱动程序和通用输入代码,以及udev和libudev。
X11(GUI)有自己的方式将键码映射到应用程序接收的内容。X11 应用程序可以看到键符和修饰符,因此功能键不需要进一步编码。实际上有两种方法可以在 X 下定义键映射:经典方法 xmodmap,以及更强大但更复杂的新机制 XKB。
归档时间: |
|
查看次数: |
9140 次 |
最近记录: |