Mac版程序员喜欢的键位(使用 IDEA)--2017.5.3 更新

时间:2025-03-11 22:01:22
<?xml version="1.0"?>
<root>


  <!- 编辑器软件名字定义 ->
  <appdef>


    <!-- 软件名字定义 开始 ================================== -->
    <!-- 取得软件名字命令:osascript -e 'id of app "iTerm2"' -->
    <!- 定义Editor软件 ->
    <appname>EDITOR</appname>
    <equal></equal>
    <!- 定义TEXTWRANGLER软件 ->
    <equal></equal>
    <!- 定义sublimetext2软件 ->
    <equal>.2</equal>
    <!- 定义sublimetext3软件 ->
    <equal>.3</equal>
  </appdef>
  
  <!- Idea软件名字定义 ->
  <appdef>
    <appname>IDEA</appname>
    <equal></equal>
  </appdef>


  <!- iTerm2软件名字定义 ->
  <appdef>
    <appname>iTerm2</appname>
    <equal>.iterm2</equal>
  </appdef>
  <!-- 软件名字定义 结束 ================================== -->




  <!-- 针对不同软件的定义 结束 ================================== -->
  <!-- (这种定义必须在“共通定义”的最上面。当映射冲突时,上面的映射有效) -->
  <!— 为IDEA编辑器做的映射(只有在IDEA编辑器中才好用) —>
  <!- 注意:这个功能映射要在 FN +ikjl 上面,不然这里面的 FN + I/K + Shift + Command 映射不好用 ->
  <item>
    <name>IDEA Keymap only</name>
    <identifier></identifier>
    
    <only>IDEA</only>
  
    <!- 把Command+up/down 变成了 Command + fn + left/right。因为在Idea中,Command + up/down 可以到文件头/尾,但再加Shfit一起使用就不好用了。 ->
    <autogen>
      __KeyToKey__
      KeyCode::CURSOR_UP, ModifierFlag::COMMAND_L, ModifierFlag::SHIFT_L,
      KeyCode::CURSOR_LEFT, ModifierFlag::COMMAND_L,  ModifierFlag::FN, ModifierFlag::SHIFT_L
    </autogen>
    <autogen>
      __KeyToKey__
      KeyCode::CURSOR_DOWN, ModifierFlag::COMMAND_L, ModifierFlag::SHIFT_L,
      KeyCode::CURSOR_RIGHT, ModifierFlag::COMMAND_L,  ModifierFlag::FN, ModifierFlag::SHIFT_L
    </autogen>




    <!- 在Idea中,使用 FN + I/K + Shift + Command,来做向下全选时,不好用。下面的映射使这个功能好用 ->
    <!- 注意:这个功能映射要在 FN +ikjl 上面 ->
    <autogen>
      __KeyToKey__
      KeyCode::I, ModifierFlag::COMMAND_L, ModifierFlag::SHIFT_L, ModifierFlag:: FN,
      KeyCode::END, ModifierFlag::COMMAND_L,  ModifierFlag::FN, ModifierFlag::SHIFT_L
    </autogen>
    <autogen>
      __KeyToKey__
      KeyCode::K, ModifierFlag::COMMAND_L, ModifierFlag::SHIFT_L, ModifierFlag:: FN,
      KeyCode::END, ModifierFlag::COMMAND_L,  ModifierFlag::FN, ModifierFlag::SHIFT_L
    </autogen>


    
    <!- 把Control+W 映射成 FN+W。 ->
    <autogen>
      __KeyToKey__
      KeyCode::W, ModifierFlag:: FN,
      KeyCode::W, ModifierFlag::CONTROL_L
    </autogen>
  </item>




  <item>
    <name>iTerm2 Keymap only</name>
    <identifier>private.iterm2</identifier>
    
    <only>iTerm2</only>
  
    <!- 把 fn + p/; 映射成 Home/End 单个键。如果不做软件内单独映射,使用共通的映射的话, fn + p/; 变成tab切换 ->
    <autogen>
      __KeyToKey__
      KeyCode::P, ModifierFlag:: FN,
      KeyCode::HOME
    </autogen>
    <autogen>
      __KeyToKey__
      KeyCode::SEMICOLON, ModifierFlag:: FN,
      KeyCode::END
    </autogen>


  </item>
  <!-- 针对不同软件的定义 结束 ================================== -->






  <item>
    <name>programmer keymap</name>
    <identifier></identifier>


    <!— 把FN键和CapsLock键互换 —>
    <!— 1, 首先通过系统设置,把Capslock键无效 —>
    <!— 2, 首先需要通过seil,把Capslock键设置成F19 —>
    <!— 3, 再通过下面的两行代码把F19映射成FN,再把FN映射Capslock —>
    <autogen>__KeyOverlaidModifier__ KeyCode::F19, KeyCode::FN, KeyCode::CAPSLOCK</autogen>
    
    <!— 把 FN +ikjl键变成上下左右键 —>
    <autogen>
      __KeyToKey__
      KeyCode::I, ModifierFlag:: FN,
      KeyCode:: CURSOR_UP
    </autogen>
    <autogen>
      __KeyToKey__
      KeyCode::J, ModifierFlag:: FN,
      KeyCode:: CURSOR_LEFT
    </autogen>
    <autogen>
      __KeyToKey__
      KeyCode::K, ModifierFlag:: FN,
      KeyCode:: CURSOR_DOWN
    </autogen>
    <autogen>
      __KeyToKey__
      KeyCode::L, ModifierFlag:: FN,
      KeyCode:: CURSOR_RIGHT
    </autogen>


    <!— 把 FN + Y/H/U/O键 变成PageUp/PageDown/Home/End键 —>
    <autogen>
      __KeyToKey__
      KeyCode::Y, ModifierFlag:: FN,
      KeyCode:: CURSOR_UP, ModifierFlag::FN
    </autogen>
    <autogen>
      __KeyToKey__
      KeyCode::H, ModifierFlag:: FN,
      KeyCode:: CURSOR_DOWN, ModifierFlag::FN
    </autogen>
    <!--
    <autogen>
      __KeyToKey__
      KeyCode::U, ModifierFlag:: FN,
      KeyCode:: CURSOR_LEFT, ModifierFlag::COMMAND_L
    </autogen>
    <autogen>
      __KeyToKey__
      KeyCode::O, ModifierFlag:: FN,
      KeyCode:: CURSOR_RIGHT, ModifierFlag::COMMAND_L
    </autogen>
    -->
    <autogen>
      __KeyToKey__
      KeyCode::U, ModifierFlag:: FN,
      KeyCode:: CURSOR_LEFT, ModifierFlag::OPTION_L
    </autogen>
    <autogen>
      __KeyToKey__
      KeyCode::O, ModifierFlag:: FN,
      KeyCode:: CURSOR_RIGHT, ModifierFlag::OPTION_L
    </autogen>
    <autogen>
      __KeyToKey__
      KeyCode::P, ModifierFlag:: FN,
      KeyCode:: CURSOR_LEFT, ModifierFlag::COMMAND_L
    </autogen>
    <autogen>
      __KeyToKey__
      KeyCode::SEMICOLON, ModifierFlag:: FN,
      KeyCode:: CURSOR_RIGHT, ModifierFlag::COMMAND_L
    </autogen>






    <!— 把 FN + 8/9键变成 OPTION+左/右 —>
    <autogen>
      __KeyToKey__
      KeyCode::8, ModifierFlag:: FN,
      KeyCode:: CURSOR_LEFT, ModifierFlag::OPTION_L
    </autogen>
    <autogen>
      __KeyToKey__
      KeyCode::9, ModifierFlag:: FN,
      KeyCode:: CURSOR_RIGHT, ModifierFlag::OPTION_L
    </autogen>






    <!— 把 FN + M/,/. 键变成 前删除/后删除/回车键 —>
    <autogen>
      __KeyToKey__
      KeyCode::M, ModifierFlag:: FN,
      KeyCode:: DELETE
    </autogen>
    <autogen>
      __KeyToKey__
      KeyCode::COMMA, ModifierFlag:: FN,
      KeyCode:: DELETE, ModifierFlag:: FN
    </autogen>
    <autogen>
      __KeyToKey__
      KeyCode:: DOT, ModifierFlag:: FN,
      KeyCode:: ENTER
    </autogen>


    <!— 把 FN + [/] 变成 CMD + [/]   —>
    <autogen>
      __KeyToKey__
      KeyCode:: BRACKET_LEFT, ModifierFlag:: FN,
      KeyCode:: BRACKET_LEFT, ModifierFlag:: COMMAND_L
    </autogen>
    <autogen>
      __KeyToKey__
      KeyCode:: BRACKET_RIGHT, ModifierFlag:: FN,
      KeyCode:: BRACKET_RIGHT, ModifierFlag:: COMMAND_L
    </autogen>




    <!— 把 FN + cvxfsdbz 变成 command + cvxfsdbz —>
    <!— 主要是使用 Idea 时的快捷键 —>
    <autogen>
      __KeyToKey__
      KeyCode::C, ModifierFlag:: FN,
      KeyCode::C, ModifierFlag::COMMAND_L
    </autogen>
    <autogen>
      __KeyToKey__
      KeyCode::V, ModifierFlag:: FN,
      KeyCode::V, ModifierFlag::COMMAND_L
    </autogen>
    <autogen>
      __KeyToKey__
      KeyCode::X, ModifierFlag:: FN,
      KeyCode::X, ModifierFlag::COMMAND_L
    </autogen>
    <autogen>
      __KeyToKey__
      KeyCode::F, ModifierFlag:: FN,
      KeyCode::F, ModifierFlag::COMMAND_L
    </autogen>
    <autogen>
      __KeyToKey__
      KeyCode::S, ModifierFlag:: FN,
      KeyCode::S, ModifierFlag::COMMAND_L
    </autogen>
    <autogen>
      __KeyToKey__
      KeyCode::D, ModifierFlag:: FN,
      KeyCode::D, ModifierFlag::COMMAND_L
    </autogen>
    <autogen>
      __KeyToKey__
      KeyCode::B, ModifierFlag:: FN,
      KeyCode::B, ModifierFlag::COMMAND_L
    </autogen>
    <autogen>
      __KeyToKey__
      KeyCode::Z, ModifierFlag:: FN,
      KeyCode::Z, ModifierFlag::COMMAND_L
    </autogen>




    <!— 把 右SHFIT + 上下左右 变成PageUp/PageDown/Home/End —>
    <autogen>
      __KeyToKey__
      KeyCode::CURSOR_UP, ModifierFlag::SHIFT_R,
      KeyCode:: CURSOR_UP, ModifierFlag::FN
    </autogen>
    <autogen>
      __KeyToKey__
      KeyCode::CURSOR_DOWN, ModifierFlag::SHIFT_R,
      KeyCode:: CURSOR_DOWN, ModifierFlag::FN
    </autogen>
    <autogen>
      __KeyToKey__
      KeyCode::CURSOR_LEFT, ModifierFlag::SHIFT_R,
      KeyCode:: CURSOR_UP, ModifierFlag:: COMMAND_L
    </autogen>
    <autogen>
      __KeyToKey__
      KeyCode::CURSOR_RIGHT, ModifierFlag::SHIFT_R,
      KeyCode:: CURSOR_DOWN, ModifierFlag:: COMMAND_L
    </autogen>
    


    <!- 把CMD+TAB 映射成 FN+TAB ->
    <autogen>
      __KeyToKey__
      KeyCode::TAB, ModifierFlag:: FN,
      KeyCode::TAB, ModifierFlag::COMMAND_L
    </autogen>
    
    
    <!-- 把 mission control 映射成 control+option+cmd+up -->
    <!-- 把 application windows 映射成 control+option+cmd+down -->
    <autogen>
      __KeyToKey__
      KeyCode::CURSOR_UP, ModifierFlag::COMMAND_L, ModifierFlag::OPTION_L, ModifierFlag:: CONTROL_L,
      KeyCode::EXPOSE_ALL
    </autogen>
    <autogen>
      __KeyToKey__
      KeyCode::CURSOR_DOWN, ModifierFlag::COMMAND_L, ModifierFlag::OPTION_L, ModifierFlag:: CONTROL_L,
      KeyCode::EXPOSE_ALL, ModifierFlag::CONTROL_L
    </autogen>


  </item>
  
  
  <!— 一些方便的操作集合 —>
  <!— BACKSLASH(\)键+F10~F12键 变成 声音控制键—>
  <item>
    <name>Control Convenience</name>
    <identifier>.</identifier>
  
    <autogen>
      __KeyOverlaidModifier__
      KeyCode::BACKSLASH,
      KeyCode::VK_MODIFIER_EXTRA1,
      KeyCode::BACKSLASH,
    </autogen>




    <block>
      <modifier_only>ModifierFlag::EXTRA1</modifier_only>
      <autogen>
        __KeyToKey__
        KeyCode::F10,
        ConsumerKeyCode::VOLUME_MUTE,


        Option::KEYTOKEY_INCREASE_MODIFIER_FLAGS,
        ModifierFlag::EXTRA1,
      </autogen>
      <autogen>
        __KeyToKey__
        KeyCode::F11,
        ConsumerKeyCode::VOLUME_DOWN,


        Option::KEYTOKEY_INCREASE_MODIFIER_FLAGS,
        ModifierFlag::EXTRA1,
      </autogen>
      <autogen>
        __KeyToKey__
        KeyCode::F12,
        ConsumerKeyCode::VOLUME_UP,


        Option::KEYTOKEY_INCREASE_MODIFIER_FLAGS,
        ModifierFlag::EXTRA1,
      </autogen>
    </block>


  </item>




  <!— 外接键盘映射设置 —>
  <item>
    <name>For PC -- Keybooard(87)</name>
    <identifier></identifier>


    <!— 把option键command互换 —>
    <autogen>
      __KeyToKey__
      KeyCode::OPTION_L,
      KeyCode::COMMAND_L
    </autogen>
    <autogen>
      __KeyToKey__
      KeyCode::COMMAND_L,
      KeyCode::OPTION_L
    </autogen>
    <autogen>
      __KeyToKey__
      KeyCode::OPTION_R,
      KeyCode::COMMAND_R
    </autogen>
    <autogen>
      __KeyToKey__
      KeyCode::COMMAND_R,
      KeyCode::OPTION_R
    </autogen>
    
    
    <!— 把PrintScreen键映射成Power键 —>
<autogen>__KeyToKey__ KeyCode::F13, ConsumerKeyCode::POWER</autogen>


    
  </item>
  
  <!— 为各种编辑器做的映射 —>
  <item>
    <name>For PC -- EDITOR Keymap</name>
    <identifier></identifier>
    
    <only>EDITOR</only>


    <!— 把Control+Home/End键 映射成 文章开始或结尾 —>
    <autogen>
      __KeyToKey__
      KeyCode::HOME , ModifierFlag::CONTROL_L,
      KeyCode::CURSOR_LEFT, ModifierFlag::COMMAND_L,  ModifierFlag::FN
    </autogen>
    <autogen>
      __KeyToKey__
      KeyCode::END , ModifierFlag::CONTROL_L,
      KeyCode::CURSOR_RIGHT, ModifierFlag::COMMAND_L,  ModifierFlag::FN
    </autogen>
    
    <!— 把Mac的Home/End键 变成 Windows的Home/End —>
    <!— 把Mac的Home键(插入键盘就有的,是Window中的Control+Home)功能是 Windows的Control+Home的功能:到文章的最开始 —>
    <!— 把Windows的Home键的功能:到行首 —>
    <!— --------------- 注意:这个映射必须在 “把Control+Home/End键 映射成 文章开始或结尾” 下面,----------- —>
    <!— --------------- 要不然“把Control+Home/End键 映射成 文章开始或结尾”会不好用----------- —>
    <autogen>
      __KeyToKey__
      KeyCode::HOME,
      KeyCode:: CURSOR_LEFT, ModifierFlag::COMMAND_L
    </autogen>
    <autogen>
      __KeyToKey__
      KeyCode::END,
      KeyCode:: CURSOR_RIGHT, ModifierFlag::COMMAND_L
    </autogen>


    <!- 把Control+W 映射成 FN+W。 ->
    <autogen>
      __KeyToKey__
      KeyCode::W, ModifierFlag:: FN,
      KeyCode::W, ModifierFlag::CONTROL_L
    </autogen>


  </item>
  
  
  








<!-- 当想把HKIL的方向,换成JKLI时,把这个打开 -->
  <item>
    <name>Change Direction HJKL to IKJL</name>
    <identifier></identifier>
    <replacementdef>
      <replacementname>VI_H</replacementname>
      <replacementvalue>KeyCode::J</replacementvalue>
    </replacementdef>


    <replacementdef>
      <replacementname>VI_J</replacementname>
      <replacementvalue>KeyCode::K</replacementvalue>
    </replacementdef>


    <replacementdef>
      <replacementname>VI_K</replacementname>
      <replacementvalue>KeyCode::I</replacementvalue>
    </replacementdef>


    <replacementdef>
      <replacementname>VI_L</replacementname>
      <replacementvalue>KeyCode::L</replacementvalue>
    </replacementdef>
  </item>


</root>