前面提到,X Window 直接处理了键盘的输入输出端口,因此,在 Linux 虚拟控制台下和 X Window 下使用不同的键盘映射方法。在 Lin

对于英语来说,键盘上的字母键直接和英语字母表中的字母对应,但是对于非英语的语种来说,情况就不太一样了。例如,德语中的“”字母就没有直接的键和它对应,为此,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键盘映射默认,Linux 中的键盘映射相关推荐

  1. android外接键盘打汉字,Android中外接键盘的检测的实现

    今天来了一个问题:软键盘无法弹出.分析后是因为系统判断当前有外接硬键盘,就会隐藏软键盘.但实际情况并不是这么简单,该问题只有在特定条件下偶现,具体分析过程就不说了,就是软硬键盘支持上的逻辑问题.借着这 ...

  2. java语言中实现键盘输入_Java程序设计中的键盘输入数据的方法分析

    1. 引言 高校中很多学校开设了Java语言程序设计课程,这是一门实践性很强的语言,在程序设计中经常需要从键盘随机输入所需要的数据,Java语言中的键盘输入数据没有像C语言给我们提供的scanf(), ...

  3. java 获取键盘点击_Java中获取键盘输入值的三种方法介绍

    程序开发过程中,需要从键盘获取输入值是常有的事,但Java它偏偏就没有像c语言给我们提供的scanf(),C++给我们提供的cin()获取键盘输入值的现成函数!Java没有提供这样的函数也不代表遇到这 ...

  4. linux设置ip默认,Linux设置ip地址与默认网关

    1. 设置ip地址 打开终端,取得root权限(sudo su).输入命令: # ifconfig eth0 192.168.0.20 netmask 255.255.255.0 详解:ifconfi ...

  5. 易 键盘读取,识别键盘代码,程序中响应键盘,键盘输入等,详细例子,手把手教会你!

    写桌面程序,通常会需要用到键盘输入,比如,你写一个小小的计算器,也需要键盘快捷输入会比较方便,经过摸索,这里对于易语言响应键盘事件,即易语言读取键盘输入,作比较详细的讲解,希望可以帮助到有需要的朋友. ...

  6. java键盘输入整数_Java中从键盘输入多个整数的方法

    例题:求数列的和 分别输入两个整数n,m,中间以空格隔断,n 为数列第一项,后面各项均为前一项的开根号,求前m项的和. 第一种从键盘输入并读取的方式:sc.hasnextint() 函数和sc.nex ...

  7. android 虚拟键盘高度,获取Android中虚拟键盘的高度

    您可以使用此示例代码.它是肮脏的解决方案,但它的工作 Thread t = new Thread(){ public void run() { int y = mainScreenView.getHe ...

  8. linux的消息机制,linux消息机制的过程是什么啊,请赐教

    LINUX的安装过程很简单,按照它的提示进行就可以了.重点就是分区那里.通常我们使用双系统,那样我们在LINUX分区的时候不要把WIN分区跟格掉就好,然后要记得分一个SWAP分区,然后根据您的需要进行 ...

  9. linux安全服务管理,Linux系统安全管理服务配置方法与技巧

    任何计算机安全措施的一个重要方面是维持实际控制服务的运行.本文向你展示了在Linux操作系统的PC机上如何配置安全服务管理. 任何计算机安全措施的一个重要方面是维持实际控制服务的运行,让不必要的网络服 ...

  10. Cortex-M3中的存储器映射

    文章目录 1 Cortex-M3中的存储器映射 1 Cortex-M3中的存储器映射 Cortex-M3中的预定义的存储器映射,如下图,注意,这里指的是规范,实际厂家并不一定完全按照这个规范做. SR ...

最新文章

  1. 黄金矿工-收益最大化
  2. 限制php解析、user_agent、php相关配置
  3. 组策略 从入门到精通 (一) 组策略的还原与备份和汇入
  4. mac下Android开发环境配置
  5. 【安全漏洞】DedeCMS-5.8.1 SSTI模板注入导致RCE
  6. C# 2.0 套接字编程实例初探
  7. JavaScript数据结构与算法——数组详解(下)
  8. 通过Spring Boot使用MySQL JDBC驱动程序
  9. 【推荐】 女人愁嫁时代终于来临
  10. 微软将开源查询处理工具Trill,怎么下载部署?
  11. oracle rac 创建ocr,转:Oracle RAC 添加和删除OCR(10g)
  12. live555 分析—— OpenRtsp
  13. wps解密excel表格xlsx文件,excel表格xlsx权限密码多少?
  14. 查找与清除线程插入式木马(转)
  15. 【VRP问题】基于模拟退火算法改进狼群算法求解带时间窗的车辆路径VRPTW问题附matlab代码
  16. c语言程序的执行起点是,c语言试题及答案
  17. Sunday算法特征码搜索C++(支持通配符)
  18. vscode配置和快捷键
  19. 用计算机画画的意义,浅谈电脑绘画在美术教学中的意义.doc
  20. 面试-JVM-类加载-类加载器--自定义类加载器-JVM调优

热门文章

  1. visio 取消跨线
  2. 自己动手用麦咖啡(mcafee)打造自己的安全网站!安全系统(服务器)!
  3. 各种文件类型对应 contentType
  4. 树形表格插件 - vue-table-with-tree-grid
  5. 南网elink文件保存位置_ELINK使用说明
  6. sony手机刷linux,索尼Z3 Z3C 5.0系统刷recovery教程_Sony Z3第三方recovery
  7. Java TCP实现文件传输
  8. 一个珊瑚虫倒下了,千万个珊瑚虫站起来!欢呼吧QQ****下载,不断更新
  9. 51单片机对GPS卫星信号的解码并通过LCD1602或12864显示
  10. Rhadoop的安装