修改键值映射

写博客动机:

其实这个是心血来潮,看到键盘hhkb想买ˊ_>ˋ
修改mac上的键盘映射,让键盘功能更加紧凑,顺便解决小拇指每次像瞎子一样摸来摸去的问题。。。。
App:Karabiner

A powerful and stable keyboard customizer for OS X.

  • You can easily customize from prepared settings.
  • You can also add your own settings by XML.

最后,这个博客发表之后才发现的,原来<kbd>标签在CSDN博客里面是显示不出来的,但是在编辑器里面同步显示是正常的。
并且,CSDN这个编辑器好像是仿的StackEdit,布局加使用说明都好像……
最最后想吐槽的是,每次看着同步显示的都挺好,发表之后就丑得让人不想看第二次……


正文


对于我来说,平时很少用到右侧的 commandoption,而比较多用到的是delete\,以及方向键,方向键准备用ctrlF/B/E/A/P/N来替换。

又学会了一招,<kbd>keyboard</kbd> 效果keyboard。然后一段话里如果出现两个<kbd>`</kbd>这里是测试<kbd>`</kbd>的效果是——</kbd>这里是测试<kbd>,所以最好转义一下:<kbd>\`</kbd>,效果——`这里是测试`

Ctrl+F 光标前进一个字符,相当于右键(F = Forward)
Ctrl+B 光标后退一个字符,相当于左键(B = Backward)
Ctrl+A 移动到一行的开头(A = Ahead)
Ctrl+E 移动到一行的结尾(E = End)
Ctrl+P 上移一行,相当于上键(P = Previous)
Ctrl+N 下移一行,相当于下键(N = Next)

具体需求说明:

由于ctrl在一个角落里,而caps lock属于不经常用的键,所以我将它们两个互换(这个我在系统偏好设置>键盘>修饰键里面已经换好了),换完之后记得每一个都试一下,看有没有冲突,比如我的Ctrl+N就和一个app(MiniNote)冲突了,将该快捷键删除之后(这时可能在系统偏好设置>快捷键里面找不到,在app的Preferences里面找找),方向键经测试,都可以正常使用。

接下来就要个性化定制了,因为我打字比较快,经常打错,感觉delete有点远,将它映射到不常用的右边的command-R,另外我用Markdown 编辑数学公式的时候经常会用到\,所以准备将它映射到右边的option-R,然后`换到右边大一点的delete,原来`的地方放esc。最后的键盘布局就是:
新键盘布局
ok,现在要做的就是装好Karabiner,修改映射。


好了,我要开动啦!

现有的可以直接勾选,没有的一个(将右边的option设置为\)需要自己设置。
修改设置流程: How to add your own settings
参考配置修改文档:private.xml Reference Manual

基本语法

可以通过<item>来增加一个新的设置:

<?xml version="1.0"?>
<root>

  <item>
    <name>Name of Setting</name>
    <appendix>Optional Description of Setting</appendix>
    <identifier>Unique Identifier of Setting</identifier>
    <autogen>Behavior Definition</autogen>
    <autogen>Behavior Definition</autogen>
  </item>

  <item>...</item>

  <item>...</item>

</root>

<item>标签中再用<name>, <identifier>, <autogen>

<name> <appendix>: These values are used in Preference Pane.
<identifier> : This value is used to identify setting. You need to specify a unique value. We recommend you to add a “private.” prefix to your identifier. It prevents conflicts with identifiers of prepared settings.
<autogen>: Definition of this setting behavior.
For example, __KeyToKey__, __PointingButtonToKey__.

关键在于<autogen> 标签中的映射要写对。


实施ing:

由于它给出了KeyCode和ModifierFlag两个列表,所以一开始误以为键值分为两种类型(KeyCode和ModifierFlag)映射的时候要互相对应,实际上不是。

找到相关例子:change option_r to semicolon:
change option_r to semicolon

在文件夹
/Applications/Karabiner.app/Contents/Resources/
下找到现有各种设置的XML文件,包含上述例子的这个文件在
/Applications/Karabiner.app/Contents/Resources/include/checkbox/standards/option.xml

其中option_r是我以为的KeyCode,而semicolon是我以为的ModifierFlag

从上述例子可以看出单个使用的键都标记为KeyCode,修饰键做组合用时才标记为ModifierFlag
所以将我需要的那个设置写到Preferences>Misc & Uninstall>Custom Setting下的private.xml中:

<?xml version="1.0"?>
  <item>
      <name>Option_R to Backslash</name>
      <identifier>remap.optionR2backslash</identifier>
      <autogen>__KeyToKey__ KeyCode::OPTION_R, KeyCode::BACKSLASH</autogen>
    </item>
</root>

然后在Preferences>Change KeyReload XML
勾选需要的映射,最终的设置:
最终映射

其它复杂的设置可以参考:__KeyToKey__ syntax.

另一个需要注意的地方:
key repeat部分:要选on,否则一个键长按也只相当于敲击一次,删除时要一个字母一个字母点很不方便。
至于按多久触发(Delay until repeat)和重复的灵敏度(Key repeat),这两个参数可以按自己的喜好设置。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值