- 浏览: 623417 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
oldrat:
引用Special cases aren't special ...
武汉大学开源技术俱乐部 技术交流 第1期 -
yzsunlight:
试了试 ,不行
Android Studio SDK Manager无法正常下载如何设置 -
qianjigui:
更全面的文档:http://www.5wpc.info/it/ ...
Ruby正则表达式操作参考 -
qianjigui:
Anddy 写道Anddy 写道tag是自动创建的吗? 能手动 ...
vim的跳转 -
Anddy:
Anddy 写道tag是自动创建的吗? 能手动创建吗? 在sh ...
vim的跳转
定义一个符合自己键盘的映射关系图
作为一个Linux用户当然是要全方位的自定义自己的系统了,今天中午在期中复习的时候就拨弄了一下我的笔记本键盘布局。毕竟是个笔记本键盘,所以很多时候键盘上的那些奇怪的符号键是无法很好使用的。
系统环境 写道
Ubuntu 8.04
Linux Kernel 2.6.24-21-generic
Gnome 2.22.3
Linux Kernel 2.6.24-21-generic
Gnome 2.22.3
注意不同的内核对键盘支持还不相同。
我的状况 写道
笔记本:Acer 5583
键盘上的特殊键:
<€> 需要输出 欧元符号
<$> 需要输出 美元符号
在数字输入Lock关闭的情况下
<Fn>+<J> 需要输出 1
<Fn>+<K> 需要输出 2
<Fn>+<L> 需要输出 3
<Fn>+<U> 需要输出 4
<Fn>+<I> 需要输出 5
<Fn>+<O> 需要输出 6
<Fn>+<7> 需要输出 7
<Fn>+<8> 需要输出 8
<Fn>+<9> 需要输出 9
<Fn>+<M> 需要输出 0
<Fn>+<.> 需要输出 .
等等,还有一些超恶心的组合键,当然如果安排好的话,可以很大提高用户的使用。
键盘上的特殊键:
<€> 需要输出 欧元符号
<$> 需要输出 美元符号
在数字输入Lock关闭的情况下
<Fn>+<J> 需要输出 1
<Fn>+<K> 需要输出 2
<Fn>+<L> 需要输出 3
<Fn>+<U> 需要输出 4
<Fn>+<I> 需要输出 5
<Fn>+<O> 需要输出 6
<Fn>+<7> 需要输出 7
<Fn>+<8> 需要输出 8
<Fn>+<9> 需要输出 9
<Fn>+<M> 需要输出 0
<Fn>+<.> 需要输出 .
等等,还有一些超恶心的组合键,当然如果安排好的话,可以很大提高用户的使用。
在这里,我并不一一讲到每个的具体配置,只要大家掌握了原理就可以自行配置了。
参考资料 写道
整个思路是:
- 需要先明确键盘上的键确实有效
- 进入终端模式tty1,输入showkey
- 敲击需要定义的键位,如果屏幕上有回显则表示系统捕获了输入信号
- 记住对应的信号,当然一般是多个信号(因为有KeyPress、KeyRelease)一般记录一个就好了
- 明确需要映射到的keycode的具体值
- 启动Terminal
- 输入xmodmap -pke
- 这时候会显示详细的前后映射关系
- 如果没有理想的keysym,建议自己定义并添加进去
- 做输入信号和keycode的映射
- 假如信号为X,keycode为C
- 输入命令 sudo setkeycodes X C
- 搞定
上面的思路简单,但是说涉及的方面是绝对不少的。其中含有多个命令的使用和操作,还有一些自动化的处理。
现在我来讲讲我遇到的一些实际问题和具体的解决方式。
- 信号的捕获
- 进入showkey时,一般一敲击键盘就会有至少两个信号,我只取了第一个
- 不要担心组合键的信号,虽然会显示的又多又乱但是如果你认真观察各个信号出来的时机是可以找到需要的信号的
- 大家可以简单实验,单独输入<M>和<Fn>+<M>的对于<M>的信号是不同的。我的系统分别是:0x32和0x52
- 当然还有另外的捕获办法,在gnome中输入xev,然后在“Even Tester”可以看到一些原始的有效的对应关系信息
- keycode的存储和调用
- 在这里我使用了脚本的方式来存所有的配置调用
脚本 写道xmodmap /home/wpc/workspace/MyLib/Shell/bin/keycode-sym.confkeycode-sym.conf 写道keycode 221 = dollar
keycode 239 = EuroSign cent
! keycode 79 = KP_Home KP_7
! keycode 80 = KP_Up KP_8
! keycode 81 = KP_Prior KP_9
! keycode 82 = KP_Subtract XF86_Prev_VMode
! keycode 83 = KP_Left KP_4
! keycode 84 = KP_Begin KP_5
! keycode 85 = KP_Right KP_6
! keycode 86 = KP_Add XF86_Next_VMode
! keycode 87 = KP_End KP_1
! keycode 88 = KP_Down KP_2
! keycode 89 = KP_Next KP_3
! keycode 90 = KP_Insert KP_0
!keycode 91 = KP_Delete KP_Decimal
keycode 79 = 7
keycode 80 = 8
keycode 81 = 9
keycode 83 = 4
keycode 84 = 5
keycode 85 = 6
keycode 87 = 1
keycode 88 = 2
keycode 89 = 3
keycode 90 = 0
keycode 91 = KP_Decimal - 然后将这个东西放到Xsession中就可以了。
- 在这里我使用了脚本的方式来存所有的配置调用
- keycode的映射
- 这个很讨厌,如果你不加sudo的输入,系统提示并不是权限问题而是没有IO。
- 系统要自动调用,我们不可能在命令中间加sudo
- 不过我们又不想天天去点击启动
- 我写了一个脚本,按照第一篇的提示放在了指定的文件夹并做了一些映射
keyboard-mapping 写道#! /bin/sh
/usr/bin/setkeycodes e033 112
/usr/bin/setkeycodes e034 85 - keyboard-mapping脚本文件的具体创建:
keyboard-mapping创建过程 写道$ sudo vim /etc/init.d/keyboard-mapping大家可以注意到我前后做了映射然后又添加了可执行权限最后又映射到了rc2.d文件夹中
.........
$ sudo chmod +x /etc/init.d/keyboard-mapping
$ sudo ln -s /etc/init.d/keyboard-mapping /etc/rc2.d/S99keyfix - 只有放在这个地方才不需要输入sudo,而且系统可以成功执行
- 在第三步中大家可能很疑惑一个东西:
- /usr/bin/setkeycodes e033 112 这个112到底映射到什么地方了?在
keycode-sym.conf中我并没有定义一个112的具体sym.其实那个85
也是.确实是这个问题,我的e033就是<€>键,而e034就是<$>键,它们实际被映射到了239
和221.这个到底是怎么回事我也不清楚,这里确实很混乱。那么我们该如何去setkeycodes呢?因为85-->221, 112-->239.我没有找到规律,网上也都没有这方面的讲述。既然我们不能知道具体的映射,我就是采用了另外一个思路:先用
/usr/bin/setkeycodes e033 112来
定义信号和code,然后使用xev去捕获实际上的keycode(为239)。然后针对239来做定义。这其中大家需要注意:由于这个映射的无规律性,你很可能映射到了有效的keycode上面,你需要小心。
- /usr/bin/setkeycodes e033 112 这个112到底映射到什么地方了?在
keycode-sym.conf中我并没有定义一个112的具体sym.其实那个85
也是.确实是这个问题,我的e033就是<€>键,而e034就是<$>键,它们实际被映射到了239
和221.这个到底是怎么回事我也不清楚,这里确实很混乱。那么我们该如何去setkeycodes呢?因为85-->221, 112-->239.我没有找到规律,网上也都没有这方面的讲述。既然我们不能知道具体的映射,我就是采用了另外一个思路:先用
/usr/bin/setkeycodes e033 112来
定义信号和code,然后使用xev去捕获实际上的keycode(为239)。然后针对239来做定义。这其中大家需要注意:由于这个映射的无规律性,你很可能映射到了有效的keycode上面,你需要小心。
以上是我的小结。主要卡在了keycode的映射上面,首先是无规律的胡乱投影,然后又是不能sudo操作。
如果大家想好好配置一下,建议认真看看参考资料。
- keysyms.zip (57.9 KB)
- 描述: keysyms相关table
- 下载次数: 5
发表评论
-
Android Studio SDK Manager无法正常下载如何设置
2014-06-02 10:29 5732一方面在/etc/hosts中设置: #Google主页 ... -
Ubuntu 10.04 企业 Cisco VPN 安装与配置使用
2013-12-31 23:36 789更全的版本见: http://www.5wpc.info/ ... -
用Markdown做文档的问题
2013-12-23 18:06 864一直有想一种语言能够解决文档编写问题。 一般文档编写 ... -
Android root 原理学习
2013-12-15 23:51 2334学习资源: http://www.zhihu.com/qu ... -
Android PREBUILT APPS 运行dex preopt
2013-12-09 13:57 0主体思路是模仿package的preopt处理,对buil ... -
Android 设置/system/bin/cmd的权限遇到的问题
2013-11-25 16:17 2069Android开发的过程中,需要添加一些系统服务,而这些服 ... -
模块网络访问分析
2013-12-27 11:29 900上述工作,可以通过: 人工了解 主要是沟通成本太高 ... -
Android系统启动过程整体视图
2013-11-25 11:07 757整体如上图:分为三个系统体系: uboot Li ... -
将设备的部分分区dump出来
2013-11-20 14:25 810基本命名: dd if=/dev/block/mmcblk ... -
Android Build系统bash filename too long问题
2013-11-06 10:45 1483在对Android Build系统进行修改的过程中,可能会在 ... -
VIM diff 模式使用
2013-11-04 11:24 829vimdiff mode: do -- Get chan ... -
Linux工作基本使用
2013-11-04 11:23 1000Mount相关 sudo apt-get install ... -
Android 4.2 init: skipping insecure file '/init.rc' 问题
2013-11-01 13:13 3536一个比较完整的分析见:http://blog.csdn.ne ... -
fastboot mmc及sf,nand使用
2013-10-25 14:05 2436fastboot# mmc mmc - MMC sub ... -
OTT盒子 Hisi 通过网络进行image烧写方法总结
2013-10-25 13:40 2850整体结构如上图,通过网络进行烧写时,整体上是通过tftp ... -
Android 系统调试接口
2013-12-20 12:37 1451建议从理论学习: http://www.5wpc.in ... -
Android API兼容检查体系
2013-08-29 12:00 0系统工具 添加工具 代码对比、查看相关工具 -
global + Ruby
2012-11-16 13:07 1284http://simple-and-basic.com/200 ... -
Linux pthread线程同步相关的API学习
2012-11-12 18:43 1472原因 最近在深入理解Dalvik虚拟机的内部线程控制体系,其 ... -
MMTk代码学习(系统结构与流程)
2012-11-06 19:08 1653MMTk的整体结构和驱动模型主要由Plan, Collecto ...
相关推荐
Simultaneous Localization and Mapping for Mobile Robots: Introduction and Methods Simultaneous Localization and Mapping for Mobile Robots: Introduction and Methods
delphi 2010升级到xe8后,decodestring汉字出现:No mapping for the.mht
文章中提到的“Parallel Tracking and Mapping for Small AR Workspaces”(并行追踪与小型AR工作空间建图)方法,实际上是一种在处理手持设备追踪的场景中特别优化的SLAM技术。作者指出,实时处理相机的运动和场景...
Generic Mapping Tools (GMT) 中文手册 Generic Mapping Tools (GMT) 是一个功能强大且灵活的开源软件,用于创建地图、可视化和处理地理空间数据。GMT 的中文手册旨在帮助用户快速入门、安装和使用 GMT 软件。 GMT...
### 实用且强大的今日GPU凹凸贴图技术 #### 摘要与介绍 本文《实用且强大的今日GPU凹凸贴图技术》由NVIDIA公司的Mark J. Kilgard撰写,详细介绍了利用现代图形处理器单元(Graphics Processing Unit, GPU)实现凹凸...
MySQL database interface mapping for VisualBmysqli.vb-master.zip
### Informatica工作流Mapping Architect for Visio的批量开发 #### 一、概述 本文主要探讨如何利用Informatica的Mapping Architect for Visio插件,在Informatica平台上实现高效的工作流批量设计,尤其是在处理源...
### 实时色调映射在高分辨率HDR图像中的应用 #### 概述 本文探讨了针对高分辨率HDR(High Dynamic Range)图像的实时色调映射技术。色调映射是一种将HDR图像转换为适合LDR(Low Dynamic Range)显示设备观看的过程...
Surfel-based Mapping for 3d Laser Range Data激光测距.7z
Pose graphs have become a popular representation for solving the simultaneous localization and mapping (SLAM) problem. A pose graph is a set of robot poses connected by nonlinear constraints obtained ...
视差遮蔽映射(Parallax Occlusion Mapping)是一种纹理映射技术,它能在不显著增加多边形数量的前提下,增强表面的立体感和细节丰富度。 在介绍视差遮蔽映射技术之前,演讲者Natalya Tatarchuk首先回顾了现有的...
资源名:A mapping package for Matlab_地图工具箱_matlab 资源类型:matlab项目全套源码 源码说明: 全部项目源码都是经过测试校正后百分百成功运行的,如果您下载后不能运行可联系我进行指导或者更换。 适合人群:...
在SAP Process Integration (PI) 中,Java Mapping是一种强大的工具,用于处理和转换数据流,以确保不同系统间的数据交换准确无误。标题提到的"com.sap.aii.mapping.api PI MAPPING开发必须jar包"是Java Mapping开发...
一、solidity中,映射的关键字为mapping,首先我们先来定义两个mapping, mapping(address =>uint) idmapping和mapping(uint =>string) namemapping。idmapping用来表示地址变量和整型变量的对应关系,在注册过程中...
端口转换软件TcpMapping是一款非常实用的工具,主要用于网络中的端口映射或者称为端口转发。在深入了解TcpMapping之前,我们首先需要理解什么是端口和端口转换。 端口在计算机网络中扮演着重要的角色,它们是网络...
根据文件提供的信息,这篇论文的标题为《Hybrid mapping service for the separation solutions of routing scalability》(《路由可扩展性分离方案的异构映射服务》),其内容主要围绕当前互联网路由表快速增长所...