对于英语来说,键盘上的字母键直接和英语字母表中的字母对应,但是对于非英语的语种来说,情况就不太一样了。例如,德语中的“ß”字母就没有直接的键和它对应,为此,Linux 提供“键盘映射”或“键盘翻译”,利用键盘映射可将某些键转换为特殊键。

前面提到,X Window 直接处理了键盘的输入输出端口,因此,在 Linux 虚拟控制台下和 X Window 下使用不同的键盘映射方法。在 Linux 虚拟控制台上,可利用 loadkeys 命令将特殊按键映射为特殊字符;而在 X Window 中,必须使用 xmodmap 命令完成键盘映射。这些命令均按照字符映射表文件(文本文件)中的规定完成相应的转换。在 X Window 启动时,它会参考 Linux 文本模式下的字符映射表,因此可获得某些一致的键映射。

字符映射表文件保存在 /usr/lib/kbd/keytables 目录下,defkeymap.map 是默认的字符映射表文件。利用命令:

$ loadkeys fr.map

可装入 fr.map 所规定的字符映射表。这时,按下“.”会显示“:”。命令

$ loadkeys –d

可装入默认字符映射表。对于非默认的键盘映射,可在启动时在 shell 脚本中装入特殊的映射表。

对X Window 而言,它对键盘的处理过程分如下两个步骤:

1.X Server 首先将键码转换为键符号名(keysym)。文件 /usr/include/X11/keysymdef.h 中包含所有的符号名。X Server 能够区分修饰键带来的不同,因为 keysymdef.h 中区分了两种不同的键,例如对“a”和“A”,分别用“KS_a”和“KS_A”定义。

2.X Server 将键符号翻译为 ASCII 字符串。对于大多数的键来说,该字符串只包含一个字符,而对于功能键等特殊按键来说,则包含多个字符。例如,F5 键对应的默认 ASCII 字符串为 “5~”。

利用 xmodmap 工具可修改键盘和键符号名之间的对应关系。例如,X Window 中“A”的键码为 30,而“Q”的键码为16。如果建立文件 maptest:

keycode 38 = A

keycode 24 = Q

在 xterm 中运行

$ xmodmap maptest

之后,将发现“A”键和“Q”键交换了过来。

上述的 maptest 文件实际就是一个简单的 X Window 映射文件。但需要注意的是,文件中的 keycode 和 Linux 内核对键值的定义是不一样的,一般而言,X Window 中的键码要比内核的键值大 8。利用 showkey 命令可以查看内核对键值的定义。例如,运行 showkey 并前后按下“A”和“Q”后,程序的输出为:

$ showkey

kb mode was RAW

...

keycode 30 press

keycode 30 press

keycode 16 press

keycode 16 press

该程序给出的是“A”和“Q”的内核键值。

在 XF86Config 文件中,Keyboard 段用来指定键盘参数,一般而言,这些参数不需要特殊设置:

Section “Keyboard”

Protocol    “Standard”

AutoRepeat 500 5

EndSection

linux方向键ascii_Linux相关推荐

  1. linux方向键ascii_Linux终端下的退格和删除键^H ^? ^[[3~ 杂记

    起源 有时候为了学好Linux, 得要懂一些Unix考古学. 比如为什么Emacs的默认快捷键那么难按, 又比如烦人的换行符 \r和\n, 以及这次的^H ^? ^[[3~. 目前我看到讲考古学讲得最 ...

  2. linux方向键ascii_上下左右 方向键的ASCII码值是多少?

    展开全部 linux下通过设置终端不回显(不用按回车即可输入),  my_getch()主要是对getchar需要按回车才显示进行的62616964757a686964616fe58685e5aeb9 ...

  3. Linux下使用Vi是方向键变乱码 退格键不能使用的解决方法

    在Linux下编辑一些文件.这就涉及到了vi这个编辑器了.在Linux下,初始使用vi的时候有点问题.就是在编辑模式下使用方向键的时候,并不会使光标移动,而是在命令行中出现[A [B [C [D之类的 ...

  4. Unix/Linux操作系统中如何在sqlplus/rman中使用方向键

    默认情况下在Unix/Linux中使用Oracle的sqlplus/rman是无法使用↑↓←→几个方向键进行操作的,要想达到Windows下使用sqlplus/rman的效果需要安装rlwrap. r ...

  5. linux下如何捕捉方向键

    最近一直在完善自己linux下shell的项目,遇到了一个难处就是如何实现方向键在shell中的功能,那么要实现这个功能首先就应该要学会如何抓取方向键的输入,毕竟方向键的输入和平常的输入不同. 首先我 ...

  6. Linux服务器出现方向键、退格键乱码等现象解决

    Linux服务器出现方向键乱码.source命令找不到.命令提示符没有用户名问题解决 存在问题 解决方案 存在问题 方向键.退格键乱码 source命令找不到 命令提示符没有用户名.路径等信息 刚刚创 ...

  7. 解决linux vi/vim或命令行出现方向键、删除出现乱码

    解决linux环境vi/vim出现方向键.删除出现乱码的问题 按如下步骤操作 使用root权限打开文件vimrc.tiny,命令如下: sudo vi /etc/vim/vimrc.tiny 解决方向 ...

  8. Linux入门——与目录相关的一些命令(pwd、ls、cd)及tab和上下方向键的使用

    终于可以感受输入命令的快乐啦!这次就先让我们来了解一些与目录相关的命令,话不多说,我们开始吧! 目录 为什么学习Linux终端命令? 与目录相关的一些命令 pwd:显示当前所处位置 ls:列出所处目录 ...

  9. Linux (Ubuntu)使用vi和vim方向键变成了ABCD

    ubuntu下 vi输入方向键会变成ABCD,这是ubuntu预装的是vim tiny版本,安装vim full版本即可解决. 首先,卸载了原有的vim $ sudo apt-get remove v ...

最新文章

  1. 为什么你写的代码糟透了?
  2. 使用 Visual Studio Online 进行协同开发
  3. irq domain介绍和代码导读
  4. WebLogic Platform 8.1 SP3 简体中文版发行
  5. linux内存管理机制
  6. 3des base64 java_java和c++中的DES\3DES\Base64
  7. whea_uncorrectable_error蓝屏代码
  8. plc应用与c语言编程区别,PLC编程与应用入门基础知识
  9. gitbook生成目录toc
  10. Linux-Ubuntu系统配置深度学习环境搭建
  11. pathon的基本语法
  12. YOLOV5训练代码train.py注释与解析
  13. html格式转换word清除格式,Word2010怎么清除格式?word清除格式(图文)教程
  14. 【技术邻】基于有限元方法的整车风噪仿真分析
  15. mac 类似matlab,10款Mac上科研人员必备的科研工具推荐和下载 | 玩转苹果
  16. 羲和能源大数据平台使用教程
  17. 中科院博士教你如何查找外文文献
  18. 在虚拟机Virtual box搭建linux环境
  19. java同一个包是什么意思_java中包到底是什么意思?包访问权限又是什么意思,有C++基础。...
  20. 去哪儿网机票搜索系统的高并发架构设计(要点节选)

热门文章

  1. 学习WPF: 创建数据绑定目录树
  2. office 在线浏览和编辑 部署 Office Web Apps Server
  3. matlab学习--语言基础
  4. 在mysql中如何添加函数库_详细讲解如何为MySQL数据库添加新函数
  5. c语言为什么运行慢,【图片】今天写几个性能测试,为什么C语言跑得这么慢呢??【c语言吧】_百度贴吧...
  6. vs2013 没有ef mysql_vs2013 EF Mysql
  7. ansible-handlers
  8. MySQL5.7.的备份恢复方案。
  9. DataTable克隆行
  10. 从零开始搭建webpack+react开发环境