一.下面这部分可以将capslock与ctrl互换

将下面的代码放入~/.Xmodmap中,

remove Lock = Caps_Lock
remove Control = Control_L
keysym Control_L = Caps_Lock
keysym Caps_Lock = Control_L
add Lock = Caps_Lock
add Control = Control_L

注意大小写

二.看到知乎一个网友的回答后,可以通过以下方法进行修改

作者:lee moo
链接:http://www.zhihu.com/question/28643416/answer/41668224
来源:知乎

add Control = Caps_Lock
remove Lock = Caps_Lock
keysym Caps_Lock = Escape

以上是xmodmap的方法。 这个实现的不怎么好! 不过本着“只要能让自己用着爽,宁愿奋斗到天亮”的精神 找到了另一个方法 不过好像也只能在X下使用。 要借助系统的键盘映射

1.把Capslock 映射为Esc,

2.再用xcape -e 'Escape=Control_L' 这样就实现了。

下面是收藏的C链接: https://github.com/ICEleemoo/xcape

我总觉得还可能有其他的实现方式。比如修改一些keymap的相关文件等……,不过还是希望大神们能找出更好的方法。

感谢作者
 
但是在感受了一下后发现,capslock键按下后即触发,所以有些情况下退出后无法使用组合键,所以我将esc绑定到了shift键
大写按键capslock与右ctrl功能互换,这样左ctrl还能正常使用,左shift普通状态下为esc键,组合使用时仍为shift键

remove Lock = Caps_Lock
remove Control = Control_R
keysym Control_R = Caps_Lock
keysym Caps_Lock = Control_R
add Lock = Caps_Lock
add Control = Control_R
keysym Shift_L = Escape

http://www.programgo.com/article/49642670420/

基于“授人以鱼不如授人以渔”的观念,本文在给出结论的同时还会给出结论得来的方法。
Linux程序员在Linux哲学的熏陶下,往往会有一些特殊的想法,来提高工作效率。比如将重复性机械劳动写进脚本,或者是本文的内容——改变键位。
HHKB是Linux下vimer的首选键盘,不谈电容键盘的手感,其键位就是为vim设计的:拉近了ESC,BackSpace,把Ctrl放到了A的左边,而vimer一天到晚需要按Ctrl,这样的设计会大大的降低小指的劳累程度。但是这个拉风的键盘,价格高达2000RMB,而且很容易被同事说“装B”。
在买HHKB之前,我尝试着用KBC POKER来实现HHKB的键位;在买了HHKB之后,哇,这一套配置就更加必不可少了,因为我已经用不了普通键盘了。
 
接下去就讲讲具体的实现,我的OS是Ubuntu 10.04 LTS,通过xmodmap来实现,对整个X桌面都有效。
 
1.如何实现
首先查看系统当前的键位(还有各个键的表示方法):
# xmodmap -pke > /tmp/map
编辑/tmp/map文件,找到下面4行:
#----------------------------------------------------------------------
keycode   9 = Escape NoSymbol Escape
keycode  37 = Control_L NoSymbol Control_L
keycode  49 = grave asciitilde grave asciitilde
keycode  66 = Caps_Lock NoSymbol Caps_Lock
#----------------------------------------------------------------------
就是对应的ESC,左CTRL,重音符和CAPS_LOCK的键位。
 
我的目的是交换ESC和重音符,CAPS_LOCK映射到左CTRL,修改
~/.xmodmaprc
#----------------------------------------------------------------------
!
! Swap Caps_Lock and Control_L
!
remove Lock = Caps_Lock
!remove Control = Control_L
!keysym Control_L = Caps_Lock
keysym Caps_Lock = Control_L
!add Lock = Caps_Lock
add Control = Control_L
!
!  keycode   9 = grave asciitilde grave asciitilde
!  keycode  49 = Escape NoSymbol Escape
keysym Escape = grave asciitilde grave asciitilde
keysym grave = Escape
#----------------------------------------------------------------------
然后重新启动xserver登录到当前用户。
 
gnome桌面启动时会检测匹配 ~/.xmodmap* 的配置文件,如果发现有新的配置文件,就会自动弹出对话框选择载入哪些配置文件。
然后,大功告成!
具体脚本的用法可以man xmodmap,不过依葫芦画瓢应该不会太难。
 
 
2.如果你动过Ubuntu的键盘选项里面有某些键位映射的选项
如果步骤1就成功了,你也许没有必要看下去了。但是,如果没有成功,可能就是以下的原因。
但是Ubuntu的键盘选项里面有某些键位映射的选项(比如,系统-首选项-键盘-布局-选项-"Ctrl Key Position"里面选择"Make CapsLock an additional Ctrl"),而且应用这些选项会比xmodmap更晚,导致它们会覆盖左CTRL和CAPS_LOCK的设置。
而且,更可恶的是,如果曾经在desktop/gnome/peripherals/keyboard(系统-首选项-键盘)里面设置过键盘首选项"Ctrl Key Position"就没有办法通过图形界面将这个设置取消了。即使将其设置成"默认",系统也会在启动gnome桌面的时候进行重设键位,然后把我在.xmodmaprc里面的配置覆盖掉。此时需要将这个选项清除。
 
a)修改
~/.gconf/desktop/gnome/peripherals/keyboard/kbd/%gconf.xml
删除以下节点
#----------------------------------------------------------------------
<li type="string">
<stringvalue>ctrl ctrl:swapcaps</stringvalue>
</li>
#----------------------------------------------------------------------
 
b)修改
~/.gconfd/saved_state
删除所有带 "keyboard" 的行。
 
c)写入.xmodmaprc ,然后重新启动xserver(Ctrl+Alt+Backspace,如果启用了该快捷键的话),将会自动把配置写入 ~/.gconfd/saved_state 。然后每次开机都能应用了。
 
 
3.如果.xmodmaprc没有被载入配置怎么办
一不小心禁用了.xmodmaprc,或者是修改了.xmodmaprc却没有反应的时候,可以尝试:
修改
~/.gconf/desktop/gnome/peripherals/keyboard/general/%gconf.xml
删除以下节点
#----------------------------------------------------------------------
<entry name="known_file_list" mtime="1315277419" type="list" ltype="string">
<li type="string">
<stringvalue>.xmodmaprc</stringvalue>
</li>
<li type="string">
<stringvalue>xmodmaprc</stringvalue>
</li>
</entry>
#----------------------------------------------------------------------
下次开机就能重新选择是否载入配置了。
 
下图为HHKB(Delete实际是Backspace,方块实际是Alt)和KBC POKER
 
 
 最后的配置是这样的
remove Lock = Caps_Lock
remove Control = Control_R
keysym Control_R = Caps_Lock
keysym Caps_Lock = Control_R
add Lock = Caps_Lock
add Control = Control_R
keysym Escape = grave asciitilde grave asciitilde
keysym grave = Escape asciitilde

esc键改为`~键,原来的`~键改为tab~键

ubuntu修改capslock键,单独使用为esc,组合使用时为ctrl+的更多相关文章

  1. tqdm和zip组合使用时无法显示进度条-解决办法

    问题 单独对于可迭代对象iterator使用tqdm时,结合循环就可以在终端显示进度条, 以直观展示程序进度,如下: from tqdm import tqdm textlist = [] for i ...

  2. (原创)spring mvc和jersey rest 组合使用时单例对像实例化两次的BUG及解决办法

    项目中没用spring 的restTemplate 而是采用 jersey来做rest 的实现,一直用着,也没发现有什么不对,后来加入了,以quartz用硬编码方式实现,结果启动项目的时候报错 ,具体 ...

  3. 让你的Capslock键变废为宝

    Capslock 键的劣性 如果你是 Windows 系统用户,就会发现,很多时候我们是用不到 Capslock 键的.Capslock 键是切换大小写的锁定,而在平常工作中,只要摁住 Shift 键 ...

  4. ubuntu修改键盘映射

    code {margin: 0;padding: 0;font-size: 100%;word-break: normal;background: transparent;border: 0;}ol ...

  5. 创建和修改主键 (SQL)

    添加主键, ALTER TABLE [表名:OrderInfo] Add PRIMARY KEY ([列名:ProductID, UserID...])  多个列则是组合主键 删除主键, ALTER ...

  6. 《Entity Framework 6 Recipes》中文翻译系列 (29) ------ 第五章 加载实体和导航属性之过滤预先加载的实体集合和修改外键关联

    翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 5-13  过滤预先加载的实体集合 问题 你想过滤预先加载的实体集合,另外,你想使用 ...

  7. ubuntu修改主机名

    ubuntu修改主机名   主机名在/etc/hostname文件中了,只在打开这个文件进行修改,重启计算机即可.     一.查看主机名 $ hostname  #查看主机名 cdyemail   ...

  8. hibernate 联合主键生成机制(组合主键XML配置方式)

    hibernate 联合主键生成机制(组合主键XML配置方式)   如果数据库中用多个字段而不仅仅是一个字段作为主键,也就是联合主键,这个时候就可以使用hibernate提供的联合主键生成策略. 具体 ...

  9. linux 和 ubuntu 修改主机名

    原始主机名:jeepend-VirtualBox linux 修改方法: 1.使用secure CRT或其他方式 用root用户 登入系统.2.在终端输入: #hostname [修改后的主机名]3. ...

随机推荐

  1. 使用GetInvocationList对委托链进行更多的控制

    委托链中所有项都会被调用,因为委托类型的 Invoke 方法包含了对数组中的所有项进行遍历的代码.这是一个很简单的算法.尽管这个简单的算法足以应付很多情形,但也有它的局限性.例如,除了最后一个返回值, ...

  2. 5.14JDBC

    一.##JDBC 1. 概念:Java DataBase Connectivity  Java 数据库连接, Java语言操作数据库. JDBC本质:其实是官方(sun公司)定义的一套操作所有关系型数 ...

  3. 【PostgreSQL-9.6.3】log参数的设置

    编辑数据目录中的postgresql.conf参数文件,我的数据目录是/usr/local/pgsql/data vi postgresql.conf 找到如下内容: ... #----------- ...

  4. VHDL之code structure

     1 VHDL units VHDL code is composed of at least 3 fundamental sections: 1) LIBRARY declarations: Con ...

  5. boost::mutex::scoped_lock

    在三维重建过程中,世界地图 Map &world作为唯一 访问/更新 对象,可以使用boost::mutex::scoped_lock . 一:boost::mutex::scoped_loc ...

  6. 在jboss上部署web应用

    1.JBoss介绍 JBoss完全实现了J2EE的服务栈: EJB (Enterprise JavaBeans) JMS (Java Message Service) JTS/JTA (Java Tr ...

  7. hadoop spark 总结

    yarn  由,资源管理器rm,应用管理器am appMaster,节点管理器nm 组成! 图侵删 yarn 的设计,是为了代替hadoop 1.x的jobtracker 集中式一对多的资源管理「资源 ...

  8. 【剑指Offer】61、序列化二叉树

      题目描述:   请实现两个函数,分别用来序列化和反序列化二叉树.   解题思路:   序列化是指将结构化的对象转化为字节流以便在网络上传输或写到磁盘进行永久存储的过程.反序列化是指将字节流转回结构 ...

  9. 【剑指Offer】21、栈的压入、弹出序列

      题目描述:   输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2 ...

  10. MAC下redis的安装和配置

    1.下载 打开官网:https://redis.io/ 选择下载你要的版本压缩包 2.安装 打开终端,cd - 将下载的压缩包拷贝到local目录下:sudo cp Downloads/redis-4 ...