发布于 2017-04-11 22:27:44
键盘不发送字符;它发送扫描代码。例如,当您在典型的美国键盘上按下标有"e“的键时,它会发送一个扫描代码,实质上是”主组中第二行字母数字键的左边第3键“。此扫描代码由内核(或操作系统的其他组件)转换为字符(或一般转换为键符号,例如“打印屏幕”),特别是在Linux中,可能由图形子系统转换。
通常,操作系统或图形子系统提供一个或多个实用程序来控制转换表;例如,在Windows和Linux中,您可以安装任意数量的键盘布局,并轻松地在其中切换。
应用程序得到什么取决于操作系统的约定。在Windows上,控制台应用程序得到根据命令chcp设置的当前控制台代码页编码的字符;图形应用程序获得一个键符号,该符号通常被转换为UTF-16编码字符。在Linux上,应用程序通常得到一个UTF-8编码字符.例如,如果我按键盘布局设置正确的ă键(拉丁文小写字母A带BREVE,U+0103),
chcp 1250的Windows上的控制台应用程序将获得一个字节的'\xE3' (227个小数点)。chcp 852的Windows上的控制台应用程序将获得一个字节的'\xC7' (199小数点)。'\x03' '\x01' (或短整数0x103)存储/处理。'\xC4' '\x83' ( UTF-8编码的)。'\xC4' '\x83' ( UTF-8编码中的)存储/处理。(请注意,我所说的Windows NT指的是Windows NT及其后继者,如Windows、Windows、7或10。Windows 95等操作系统完全不同,谢天谢地不再使用了。)
在Vim中,您可以得到两层新的翻译:
set keymap安装键盘转换映射;请参见:help 'keymap'和:help mbyte-keymap。这有助于在无法在操作系统级别安装键盘布局的系统上输入所需语言的文本。:map命令定义映射。见:help :map。https://unix.stackexchange.com/questions/358371
复制相似问题