Mac uses Karabiner to configure keyboard mapping

The effect after configuration:

Applicable system:

 

command_left+space : 触发IDEA search everywhere

space+command_left:触发IDEA search everywhere

option_left+space: trigger to open Google browser

space+option_left: trigger to open Google browser

Press option_left alone: ​​trigger IDEA to find the interface

Press control_left alone: ​​trigger switch window

Press command_right alone: ​​open Alfred

Press caps lock alone: ​​trigger escape

 

The content of the private.xml file is as follows:

<?xml version="1.0"?>
<root>
    <item>
        <!-- 单独按下相当于escape.和别的键组合按下, 相当于“⇧⌃⌥⌘” -->
        <name>F19 to F19</name>
        <appendix>(F19 to Hyper (ctrl+shift+cmd+opt相当于“⇧⌃⌥⌘”) + F19 Only, send escape)</appendix>
        <identifier>private.f192f19_escape</identifier>
        <autogen>
            --KeyOverlaidModifier--
            KeyCode::F19,
            KeyCode::COMMAND_L,
            ModifierFlag::OPTION_L | ModifierFlag::SHIFT_L | ModifierFlag::CONTROL_L,
            KeyCode::ESCAPE
        </autogen>
    </item>
    <!-- 单独按下右边的Option/Alt 相当于Home  -->
    <item>
        <name>OPTION_R to HOME</name>
        <appendix>(OPTION_R Only, send HOME)</appendix>
        <identifier>private.option_r2home</identifier>
        <autogen>
            --KeyOverlaidModifier--
            KeyCode::OPTION_R,
            KeyCode::OPTION_R,
            KeyCode::HOME
        </autogen>
    </item>
    <!-- press command_l only equals "command +B ",to refresh browser -->

    <!-- press control_l  only equals "command +Tab ",to switch window -->
    <item>
        <name>CONTROL_L to COMMAND_L+B</name>
        <appendix>(CONTROL_L Only, send COMMAND+B,refresh browser)</appendix>
        <identifier>private.command_l_only2command_and_b</identifier>
        <autogen>
            --KeyOverlaidModifier--
            KeyCode::CONTROL_L,
            KeyCode::CONTROL_L,
            KeyCode::TAB, ModifierFlag::COMMAND_L
        </autogen>
    </item>

    <!-- 单独按下F13(即原 escape),打开浏览器调试  -->
    <item>
        <name>F13 to option_command+I</name>
        <appendix>(F13 Only, send COMMAND+OPTION+B,debug browser)</appendix>
        <identifier>private.f13_only2command_option_and_i</identifier>
        <!--<autogen>
            &#45;&#45;KeyOverlaidModifier&#45;&#45;
            KeyCode::F13,
            KeyCode::F13,
            KeyCode::I, ModifierFlag::COMMAND_L|ModifierFlag::OPTION_L
        </autogen>-->
        <autogen>
            <!-- 双击F13(escape 键),触发 escape(命令会加上sudo ), 单击触发浏览器调试 -->
            __KeyToKey__

            KeyCode::F13,
            KeyCode::VK_NONE,

            Option::KEYTOKEY_DELAYED_ACTION,
            KeyCode::I, ModifierFlag::COMMAND_L|ModifierFlag::OPTION_L,

            Option::KEYTOKEY_DELAYED_ACTION_CANCELED_BY, KeyCode::F13,
            KeyCode::ESCAPE,
            KeyCode::VK_KEYTOKEY_DELAYED_ACTION_DROP_EVENT, <!-- drop second return key event -->
        </autogen>
    </item>


    <item>
        <!-- 左边的command单独按下相当于command+`.用来光标回到句尾
          (if no other modifiers pressed) -->
        <name>COMMAND_L to COMMAND_L+`</name>
        <appendix>(COMMAND_L Only, send TAB+COMMAND_L)</appendix>
        <identifier>private.command_l2tab_command</identifier>
        <autogen>
            --KeyOverlaidModifier--
            KeyCode::COMMAND_L, ModifierFlag::COMMAND_L | ModifierFlag::NONE,
            KeyCode::COMMAND_L,
            KeyCode::DANISH_LESS_THAN,ModifierFlag::COMMAND_L
        </autogen>
    </item>

    <item>
        <name>space twice to COMMAND_L+space</name>
        <appendix>(space twice, send SPACE+COMMAND_L)</appendix>
        <identifier>private.command_l_twice2space_command</identifier>
        <!-- <autogen>
             __KeyToKey__

             KeyCode::SPACE,
             KeyCode::VK_NONE,

             Option::KEYTOKEY_DELAYED_ACTION,
             KeyCode::SPACE,

             Option::KEYTOKEY_DELAYED_ACTION_CANCELED_BY, KeyCode::SPACE,

             KeyCode::SPACE,ModifierFlag::COMMAND_L,
             KeyCode::VK_KEYTOKEY_DELAYED_ACTION_DROP_EVENT, &lt;!&ndash; drop second return key event &ndash;&gt;


             &lt;!&ndash; 复制 &ndash;&gt;
             Option::KEYTOKEY_DELAYED_ACTION_CANCELED_BY, KeyCode::C,
             KeyCode::C,ModifierFlag::COMMAND_L,
             KeyCode::VK_KEYTOKEY_DELAYED_ACTION_DROP_EVENT,

             &lt;!&ndash; 粘贴 &ndash;&gt;
             Option::KEYTOKEY_DELAYED_ACTION_CANCELED_BY, KeyCode::V,
             KeyCode::V,ModifierFlag::COMMAND_L,
             KeyCode::VK_KEYTOKEY_DELAYED_ACTION_DROP_EVENT,

             &lt;!&ndash; 粘贴 &ndash;&gt;
             Option::KEYTOKEY_DELAYED_ACTION_CANCELED_BY, KeyCode::B,
             KeyCode::V,ModifierFlag::COMMAND_L,
             KeyCode::VK_KEYTOKEY_DELAYED_ACTION_DROP_EVENT,


             &lt;!&ndash; 删除/DELETE &ndash;&gt;
             Option::KEYTOKEY_DELAYED_ACTION_CANCELED_BY, KeyCode::D,
             KeyCode::DELETE,
             KeyCode::VK_KEYTOKEY_DELAYED_ACTION_DROP_EVENT,

             &lt;!&ndash; 调起浏览器 &ndash;&gt;
             Option::KEYTOKEY_DELAYED_ACTION_CANCELED_BY, KeyCode::OPTION_L,
             KeyCode::SPACE, ModifierFlag::OPTION_L,
             KeyCode::VK_KEYTOKEY_DELAYED_ACTION_DROP_EVENT,

             &lt;!&ndash; space+r: 刷新浏览器刷新浏览器 &ndash;&gt;
             Option::KEYTOKEY_DELAYED_ACTION_CANCELED_BY, KeyCode::R,
             KeyCode::B, ModifierFlag::COMMAND_L|ModifierFlag::CONTROL_L,
             KeyCode::VK_KEYTOKEY_DELAYED_ACTION_DROP_EVENT,
         </autogen>-->

        <!-- <autogen>
            __KeyToKey__
            KeyCode::SPACE, KeyCode::VK_NONE,
            Option::KEYTOKEY_BEFORE_KEYDOWN, {{ ENV_Select_the_previous_input_source_shortcut }}, KeyCode::CONTROL_L,
            Option::KEYTOKEY_AFTER_KEYUP,    {{ ENV_Select_the_previous_input_source_shortcut }},
        </autogen> -->
        <!-- 单独按下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>
    </item>

    <item>
        <!-- 双击 j,触发 end -->
        <name>double click j to end</name>
        <appendix>(double_click_L , send end)</appendix>
        <identifier>private.command_l2tab_command222</identifier>
        <autogen>
            __KeyToKey__

            KeyCode::J,
            KeyCode::VK_NONE,

            Option::KEYTOKEY_DELAYED_ACTION,
            KeyCode::J,

            Option::KEYTOKEY_DELAYED_ACTION_CANCELED_BY, KeyCode::J,
            KeyCode::END,
            KeyCode::VK_KEYTOKEY_DELAYED_ACTION_DROP_EVENT, <!-- drop second return key event -->

        </autogen>

        <!-- 双击 H,触发 home -->
        <autogen>
            __KeyToKey__

            KeyCode::H,
            KeyCode::VK_NONE,

            Option::KEYTOKEY_DELAYED_ACTION,
            KeyCode::H,

            Option::KEYTOKEY_DELAYED_ACTION_CANCELED_BY, KeyCode::H,
            KeyCode::HOME,
            KeyCode::VK_KEYTOKEY_DELAYED_ACTION_DROP_EVENT, <!-- drop second return key event -->

        </autogen>

        <!-- 双击 i,触发 Quick definition control ⌘⇧I -->
        <!--<autogen>
            __KeyToKey__

            KeyCode::I,
            KeyCode::VK_NONE,

            Option::KEYTOKEY_DELAYED_ACTION,
            KeyCode::I,

            Option::KEYTOKEY_DELAYED_ACTION_CANCELED_BY, KeyCode::I,
            KeyCode::I, ModifierFlag::COMMAND_L|ModifierFlag::SHIFT_L | ModifierFlag::CONTROL_L,
            KeyCode::VK_KEYTOKEY_DELAYED_ACTION_DROP_EVENT, &lt;!&ndash; drop second return key event &ndash;&gt;

        </autogen>-->
    </item>

    <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>
    <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>

        <!-- <appendix>Command+Volume Down to Space (if no other modifiers pressed)</appendix>
         <autogen>
             __KeyToKey__
             KeyCode::COMMAND_L, MODIFIERFLAG_EITHER_LEFT_OR_RIGHT_COMMAND | ModifierFlag::NONE,
             KeyCode::J,
         </autogen>-->


    </item>
    <item>
        <!--  先按下space,再按下command_left 触发IDEA search everywhere -->
        <name>space+COMMAND_L to IDEA search everywhere</name>
        <appendix>space+Command_L to Command_R+SPACE(IDEA search everywhere)</appendix>
        <identifier>private.space_command_l_2command_l_space_IDEAsearch</identifier>
        <!--<autogen>__KeyToKey__
            KeyCode::COMMAND_L, ModifierFlag::COMMAND_R| ModifierFlag::NONE,
            KeyCode::SPACE, ModifierFlag::COMMAND_R
        </autogen>-->
        <autogen>
            --KeyOverlaidModifier--
            KeyCode::COMMAND_L, ModifierFlag::COMMAND_L |ModifierFlag::COMMAND_R | ModifierFlag::NONE,
            KeyCode::COMMAND_L,
            KeyCode::SPACE,ModifierFlag::COMMAND_L
        </autogen>
        <!--  先按下space,再按下option_left 触发切换到浏览器 -->
        <!-- <appendix>space+option_L to Option_R+SPACE(IDEA search everywhere)</appendix>
         <autogen>__KeyToKey__
             KeyCode::OPTION_L, ModifierFlag::COMMAND_R| ModifierFlag::NONE,
             KeyCode::SPACE, ModifierFlag::OPTION_L
         </autogen>-->
    </item>
    <item>
        <!--   -->
        <name>Hyper J to Down</name>
        <appendix>(Hyper-J to Down arrow)</appendix>
        <identifier>private.hyper-j-down</identifier>
        <autogen>
            --KeyToKey--
            KeyCode::J,
            ModifierFlag::COMMAND_L | ModifierFlag::OPTION_L | ModifierFlag::SHIFT_L | ModifierFlag::CONTROL_L,
            KeyCode::CURSOR_DOWN
        </autogen>
    </item>
    <item>
        <!--   -->
        <name>Hyper K to Up</name>
        <appendix>(Hyper-K to Up arrow)</appendix>
        <identifier>private.hyper-K-up</identifier>
        <autogen>
            --KeyToKey--
            KeyCode::K,
            ModifierFlag::COMMAND_L | ModifierFlag::OPTION_L | ModifierFlag::SHIFT_L | ModifierFlag::CONTROL_L,
            KeyCode::CURSOR_UP
        </autogen>
    </item>
    <item>
        <!--   -->
        <name>Hyper H to Left</name>
        <appendix>(Hyper-H to Left arrow)</appendix>
        <identifier>private.hyper-h-left</identifier>
        <autogen>
            --KeyToKey--
            KeyCode::H,
            ModifierFlag::COMMAND_L | ModifierFlag::OPTION_L | ModifierFlag::SHIFT_L | ModifierFlag::CONTROL_L,
            KeyCode::CURSOR_LEFT
        </autogen>
    </item>
    <item>
        <name>Hyper L to Right</name>
        <appendix>(Hyper-L to Right arrow)</appendix>
        <identifier>private.hyper-l-right</identifier>
        <autogen>
            --KeyToKey--
            KeyCode::L,
            ModifierFlag::COMMAND_L | ModifierFlag::OPTION_L | ModifierFlag::SHIFT_L | ModifierFlag::CONTROL_L,
            KeyCode::CURSOR_RIGHT
        </autogen>
    </item>
    <item>
        <name>Hyper N to Beginning of Line</name>
        <appendix>(Hyper-N to Beginning of Line)</appendix>
        <identifier>private.hyper-n-beginning-of-line</identifier>
        <autogen>
            --KeyToKey--
            KeyCode::N,
            ModifierFlag::COMMAND_L | ModifierFlag::OPTION_L | ModifierFlag::SHIFT_L | ModifierFlag::CONTROL_L,
            KeyCode::CURSOR_LEFT,
            ModifierFlag::COMMAND_L
        </autogen>
    </item>
    <item>
        <name>Hyper ; to End of Line</name>
        <appendix>(Hyper-; to End of Line)</appendix>
        <identifier>private.hyper-;-end-of-line</identifier>
        <autogen>
            --KeyToKey--
            KeyCode::SEMICOLON,
            ModifierFlag::COMMAND_L | ModifierFlag::OPTION_L | ModifierFlag::SHIFT_L | ModifierFlag::CONTROL_L,
            KeyCode::CURSOR_RIGHT,
            ModifierFlag::COMMAND_L
        </autogen>
    </item>
    <item>
        <name>Hyper I to Top</name>
        <appendix>(Hyper-I to Top)</appendix>
        <identifier>private.hyper-i-top</identifier>
        <autogen>
            --KeyToKey--
            KeyCode::I,
            ModifierFlag::COMMAND_L | ModifierFlag::OPTION_L | ModifierFlag::SHIFT_L | ModifierFlag::CONTROL_L,
            KeyCode::CURSOR_UP,
            ModifierFlag::COMMAND_L
        </autogen>
    </item>
    <item>
        <name>Hyper M to Bottom</name>
        <appendix>(Hyper-M to Bottom)</appendix>
        <identifier>private.hyper-m-bottom</identifier>
        <autogen>
            --KeyToKey--
            KeyCode::M,
            ModifierFlag::COMMAND_L | ModifierFlag::OPTION_L | ModifierFlag::SHIFT_L | ModifierFlag::CONTROL_L,
            KeyCode::CURSOR_DOWN,
            ModifierFlag::COMMAND_L
        </autogen>
    </item>
    <!--  caps lock+Space 出发大小写转化 -->
    <item>
        <name>Hyper + Space To Capslock</name>
        <appendix>Hyper(cmd+ctrl+shift+opt)+space, send Capslock</appendix>
        <identifier>private.hyperspace2Capslock</identifier>
        <autogen>
            --KeyToKey--
            KeyCode::SPACE, ModifierFlag::OPTION_L | ModifierFlag::SHIFT_L | ModifierFlag::CONTROL_L | ModifierFlag::COMMAND_L,
            KeyCode::CAPSLOCK
        </autogen>
    </item>
   <!-- <item>
        <name>Change Escape to Mission Control</name>
        <identifier>private.escape_to_mission_control</identifier>
        <autogen>
            &#45;&#45;KeyToKey&#45;&#45;
            KeyCode::ESCAPE,
            KeyCode::CURSOR_UP, ModifierFlag::CONTROL_L
        </autogen>
    </item>-->
    <!-- 右边的shift 映射成为 control+command+B, 在 IDEA 中触发编译  -->
    <item>
        <name>Change SHIFT_R Key to END</name>
        <identifier>private.shift_r_to_end2</identifier>
        <autogen>__KeyOverlaidModifier__ KeyCode::SHIFT_R,KeyCode::SHIFT_R,
            KeyCode::B, ModifierFlag::COMMAND_L|ModifierFlag::CONTROL_L
        </autogen>
  </item>
    <!-- 左边的shift单独按下 映射成为 space  -->
    <!--<item>
        <name>Change SHIFT_L Key to SPACE</name>
        <identifier>private.shift_left_to_SPACE</identifier>
        <autogen>__KeyOverlaidModifier__ KeyCode::SHIFT_L,
            KeyCode::SHIFT_L,
            KeyCode::SPACE
        </autogen>
    </item>-->
    <!-- 左边的option 和回车 映射成为左边的option 和回车+ 左边的 command(多了一个command) ,用于切换浏览器 -->
    <!--<item>
        <name>Change option_left Key to option_left_and_command_left</name>
        <identifier>private.option_left_to_samlla233_command_left</identifier>
        <autogen>__KeyToKey__
            KeyCode::SPACE, ModifierFlag::OPTION_L,
            KeyCode::RETURN, ModifierFlag::OPTION_L| ModifierFlag::COMMAND_L
        </autogen>
    </item>-->

    <!-- 把 command_right+enter 映射成为三个键:
shift + command+enter ,用于 IDEA 补全行尾 -->
    <item>
        <name>Change command_enter Key to shift_command_enter</name>
        <identifier>private.shift_command_enter22</identifier>
        <autogen>__KeyToKey__
            KeyCode::RETURN, ModifierFlag::COMMAND_R,
            KeyCode::RETURN, ModifierFlag::SHIFT_L| ModifierFlag::COMMAND_R
        </autogen>
    </item>

    <!-- 双击 F,触发宏: end(回到句尾)+分号+回车,不需要,因为打字如果很快,会受到影响 -->
    <!--<item>
        <name>Change command_enter Key to shift_command_enter</name>
        <identifier>private.shift_command_enter2233</identifier>
        <autogen>
            __KeyToKey__

            KeyCode::F,
            KeyCode::VK_NONE,
            Option::KEYTOKEY_DELAYED_ACTION,
            KeyCode::F,

            Option::KEYTOKEY_DELAYED_ACTION_CANCELED_BY, KeyCode::F,
            KeyCode::E,ModifierFlag::OPTION_L | ModifierFlag::SHIFT_L | ModifierFlag::CONTROL_L |
            ModifierFlag::COMMAND_L,
            KeyCode::VK_KEYTOKEY_DELAYED_ACTION_DROP_EVENT, &lt;!&ndash; drop second return key event &ndash;&gt;
        </autogen>
    </item>-->

    <item>
      <!-- F18用于触发 paste  -->
    <name>Change Fn Key to F18</name>
    <identifier>private.fn_to_f182</identifier>
      <autogen>__KeyOverlaidModifier__ KeyCode::FN, KeyCode::FN,KeyCode::F18</autogen>
  </item>

    <item>
        <name>Daniel Simultaneouskey Shortcuts</name>
        <item>
            <identifier>remap.daniel_simultaneouskeypresses_seq</identifier>
            <name>Strick key order shortcuts</name>
            <appendix>Street Fighter style</appendix>

            <!-- &lt;!&ndash; DF &ndash;&gt;
             <autogen>
                 __SimultaneousKeyPresses__
                 @begin
                 KeyCode::D, KeyCode::F, KeyCode::J,
                 @end

                 @begin
                 KeyCode::F18, ModifierFlag::COMMAND_L,
                 Option::SIMULTANEOUSKEYPRESSES_STRICT_KEY_ORDER,
                 @end
             </autogen>
             <autogen>
                 __SimultaneousKeyPresses__
                 @begin
                 KeyCode::D, KeyCode::J, KeyCode::F,
                 @end

                 @begin
                 KeyCode::F18, ModifierFlag::COMMAND_L,
                 Option::SIMULTANEOUSKEYPRESSES_STRICT_KEY_ORDER,
                 @end
             </autogen>-->
            <!-- 同时按下 D,F 两个字母,触发回车 -->
            <autogen>
                __SimultaneousKeyPresses__
                KeyCode::D, KeyCode::F,
                KeyCode::RETURN
            </autogen>
            <!-- 同时按下F,J,触发 control+Tab, 切换 IDEA 中的页签 -->
            <autogen>
                __SimultaneousKeyPresses__
                KeyCode::F, KeyCode::J,
                KeyCode::TAB,ModifierFlag::CONTROL_L
            </autogen>
            <!-- 同时按下 S,D, 触发两个动作:保存, build -->
            <autogen>
                __SimultaneousKeyPresses__
                KeyCode::S, KeyCode::D,
                KeyCode::B,ModifierFlag::OPTION_L | ModifierFlag::SHIFT_L | ModifierFlag::CONTROL_L |
                ModifierFlag::COMMAND_L
            </autogen>
            <!-- 宏: end(回到句尾)+分号+回车 -->
            <autogen>
                __SimultaneousKeyPresses__
                KeyCode::J, KeyCode::K,
                KeyCode::E,ModifierFlag::OPTION_L | ModifierFlag::SHIFT_L | ModifierFlag::CONTROL_L |
                ModifierFlag::COMMAND_L
            </autogen>
            <!-- IDEA 智能提示 -->
            <autogen>
                __SimultaneousKeyPresses__
                KeyCode::S, KeyCode::F,
                KeyCode::SPACE, ModifierFlag::CONTROL_L
            </autogen>
        </item>
    </item>
</root>

 

 

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=325036433&siteId=291194637