mac 使用Karabiner配置键盘映射(2)-核心标签的解读


声明:本文转载自https://my.oschina.net/huangweiindex/blog/1786668,转载目的在于传递更多信息,仅供学习交流之用。如有侵权行为,请联系我,我会及时删除。

 mac 使用Karabiner配置键盘映射(2)-核心标签的解读

KeyOverlaidModifier

使用场景:一般用在 改变Modifier(控制键,例如ctrl,command,alt等)的行为.

例如正常情况下,单独按下control或command 是没有反应(动作的),

但是我们可以通过KeyOverlaidModifier 增加反应.

实例:

目标:单独按下右边的command 触发Alfred

所以单独按下右边的command,触发F17就行:

<item>         <!--  右边的command,单独按下相当于F17,用于触发Alfred -->         <name>COMMAND_R to F17</name>         <appendix>(COMMAND_R Only, send F17)</appendix>         <identifier>private.command_r_only2f17</identifier>         <autogen>             --KeyOverlaidModifier--             KeyCode::COMMAND_R,             KeyCode::COMMAND_R,             KeyCode::F17         </autogen> </item>

为什么使用F17?因为F17不占用实体键

解说:

对KeyOverlaidModifier 下的行逐行解释:

第一行:原始按键;

第二行:和其他键组合按下时要映射的键(先按下该键,hold住,再按下其他键);

第三行:单独按下要映射的键.

单独按下右边的command,相当于按下F17,

和其他键组合按下时不变.

 

2.实例解说

 <item>         <!-- 左边的Option/Alt,单独按下相当于 command+T,用于IDEA中通过接口路径搜索 ,          (if no other modifiers pressed) -->         <name>OPTION_L to PAGEUP</name>         <appendix>(OPTION_L Only, send PAGEUP)</appendix>         <identifier>private.option_l2pageup</identifier>         <autogen>             --KeyOverlaidModifier--             KeyCode::OPTION_L, ModifierFlag::OPTION_L | ModifierFlag::NONE,             KeyCode::OPTION_L,             KeyCode::T,ModifierFlag::COMMAND_L         </autogen> </item>

第一行多了 ModifierFlag::OPTION_L | ModifierFlag::NONE

什么意思呢?

表示按下左边的option时,不能按下其他控制键.

先按下command(不松开),再按下左边的option 会触发;

先按下右边的option,再按下左边的option 会触发;

 

如果去掉ModifierFlag::OPTION_L | ModifierFlag::NONE,会是什么效果呢?

先按下command(不松开),再按下左边的option 会触发;

先按下右边的option,再按下左边的option 会触发;

 

3.__KeyOverlaidModifier__的高级用法

目标:把space映射成为右边的command,但是单独按下时仍然是space.

按下space,不松开(hold住),再按下其他键,那么space映射成为command;

space+C:复制

space+V:黏贴

松开space时,在没有其他键按下的情况下,space的效果就是空格

源码:

<!-- 单独按下space,就是space; 组合按下space,相当于按下command_left -->         <autogen>             __KeyOverlaidModifier__             KeyCode::SPACE, ModifierFlag::NONE,              <!--                 You need to put "KeyCode"s between @begin and @end                 when you want to specify multiple KeyCode.             -->             @begin             <!-- hold 'SPACE' ,即组合键 -->             KeyCode::COMMAND_R,             @end              @begin             <!-- release 'SPACE' -->             KeyCode::SPACE,             @end              Option::KEYTOKEY_AFTER_KEYUP,             KeyCode::VK_CONFIG_FORCE_OFF_notsave_samples_keyoverlaidmodifier_use_separator_1,             KeyCode::VK_CONFIG_FORCE_OFF_notsave_samples_keyoverlaidmodifier_use_separator_2,         </autogen>

 

4,进阶:为什么要使用ModifierFlag::<xxx> | ModifierFlag::NONE

解说:

(1)第一个autogen 的效果:

单独按下左边的option,触发IDEA中通过接口路径搜索(原始快捷键:command+T)

(2)第二个autogen的效果:

先按下space(hold住),再按下左边的option,触发:

option+space(先按下option,再按下space)

说白了,我要达到的目的是:option_left和space,不管哪个先按下(为了兼容手误),效果都是一样的.

重点:去掉上图标红1的ModifierFlag::OPTION_L | ModifierFlag::NONE 之后,

实现第二个autogen时,会触发第一个autogen,

因为第二个autogen 中也是单独按下了左边的option,

在按下左边的option之后还有按下其他键吗?没有,见上面的先按下space(hold住),再按下左边的option

源码:

<item>         <!-- 左边的Option/Alt,单独按下相当于 command+T,用于IDEA中通过接口路径搜索 ,          (if no other modifiers pressed) -->         <name>OPTION_L to PAGEUP</name>         <appendix>(OPTION_L Only, send PAGEUP)</appendix>         <identifier>private.option_l2pageup</identifier>         <autogen>             --KeyOverlaidModifier--             KeyCode::OPTION_L, ModifierFlag::OPTION_L | ModifierFlag::NONE,             KeyCode::OPTION_L,             KeyCode::T,ModifierFlag::COMMAND_L         </autogen>          <!--  同时按下space(实际已经映射成为COMMAND_R,见152行 )和option_left,触发OPTION_L+space,打开浏览器 -->         <autogen>             --KeyOverlaidModifier--             KeyCode::OPTION_L, ModifierFlag::OPTION_L |ModifierFlag::COMMAND_R | ModifierFlag::NONE,             KeyCode::OPTION_L,             KeyCode::SPACE,ModifierFlag::OPTION_L         </autogen>     </item>

 

参考:

https://github.com/tekezo/Karabiner/blob/version_10.22.0/src/core/server/Resources/include/checkbox/samples.xml

https://my.oschina.net/huangweiindex/blog/1649219

本文发表于2018年03月29日 22:38
(c)注:本文转载自https://my.oschina.net/huangweiindex/blog/1786668,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如有侵权行为,请联系我们,我们会及时删除.

阅读 1831 讨论 0 喜欢 0

抢先体验

扫码体验
趣味小程序
文字表情生成器

闪念胶囊

你要过得好哇,这样我才能恨你啊,你要是过得不好,我都不知道该恨你还是拥抱你啊。

直抵黄龙府,与诸君痛饮尔。

那时陪伴我的人啊,你们如今在何方。

不出意外的话,我们再也不会见了,祝你前程似锦。

这世界真好,吃野东西也要留出这条命来看看

快捷链接
网站地图
提交友链
Copyright © 2016 - 2021 Cion.
All Rights Reserved.
京ICP备2021004668号-1