WindowsとLinuxしか使ったことがなかったけど、ひょんなことからMacを買う必要に迫られてMacBookPro(Lion)を買ったはいいけど、全然慣れない。
Macのルールに合わせて一流のマカーになろうかとも思ったが、断念。
逆にMacを俺のルールにを合わせようと悪戦苦闘した記録。
もしかするとすぐMacから離れるかもしれないから覚えてるうちに記録しとく。
例によって自分以外の人が読んでも得は無いと思う。
キーボードの配列を俺好みに
WinではAutoHotKeyを使ってvimチックなキーバインドを使ってた。
Linuxでも窓使いの憂鬱を使って同様のことをした。
Macではこんな感じで設定した。
まず、commandやらcontrolなどの装飾キーを入れ替え。

次にKeyRemap4MacBookを使ってゴニョゴニョ。

Nishide’s hackってのはKeyRemap4MacBookに予め用意されてる設定だけだと不十分だったので、private.xmlで追加したもの。
<?xml version="1.0"?>
<root>
<list>
<item>
<name>Nishide's hack</name>
<list>
<item>
<name>JIS_EISUU to OPTION_L</name>
<identifier>private.jis_eisuu2option_l</identifier>
<autogen>--KeyToKey--
KeyCode::JIS_EISUU,
KeyCode::OPTION_L
</autogen>
</item>
<item>
<name>JIS_KANA to COMMAND_L</name>
<identifier>private.jis_kana2command_l</identifier>
<autogen>--KeyToKey--
KeyCode::JIS_KANA,
KeyCode::COMMAND_L
</autogen>
</item>
<item>
<name>OPTION_L + @ to toggle input mode</name>
<identifier>private.option_l_plus_atmark2toggle_input_mode</identifier>
<autogen>--KeyToKey--
KeyCode::JIS_ATMARK,ModifierFlag::OPTION_L,
KeyCode::VK_JIS_TOGGLE_EISUU_KANA
</autogen>
</item>
<item>
<name>COMMAND_L + [ to ESCAPE</name>
<identifier>private.command_l_plus_bracket2escape</identifier>
<autogen>--KeyToKey--
KeyCode::BRACKET_RIGHT,ModifierFlag::COMMAND_L,
KeyCode::ESCAPE
</autogen>
</item>
<item>
<name>OPTION_L + hjkl to cursor move</name>
<identifier>private.hjkl_to_cursor</identifier>
<!-- OPTION_L + hjkl to CURSORs -->
<autogen>--KeyToKey--
KeyCode::H,ModifierFlag::OPTION_L|ModifierFlag::NONE,
KeyCode::CURSOR_LEFT
</autogen>
<autogen>--KeyToKey--
KeyCode::J,ModifierFlag::OPTION_L|ModifierFlag::NONE,
KeyCode::CURSOR_DOWN
</autogen>
<autogen>--KeyToKey--
KeyCode::K,ModifierFlag::OPTION_L|ModifierFlag::NONE,
KeyCode::CURSOR_UP
</autogen>
<autogen>--KeyToKey--
KeyCode::L,ModifierFlag::OPTION_L|ModifierFlag::NONE,
KeyCode::CURSOR_RIGHT
</autogen>
<!-- OPTION_L + SHIFT_L + hjkl to SHIFT_L + CURSORs -->
<autogen>--KeyToKey--
KeyCode::H,ModifierFlag::OPTION_L|ModifierFlag::SHIFT_L|ModifierFlag::NONE,
KeyCode::CURSOR_LEFT,ModifierFlag::SHIFT_L
</autogen>
<autogen>--KeyToKey--
KeyCode::J,ModifierFlag::OPTION_L|ModifierFlag::SHIFT_L|ModifierFlag::NONE,
KeyCode::CURSOR_DOWN,ModifierFlag::SHIFT_L
</autogen>
<autogen>--KeyToKey--
KeyCode::K,ModifierFlag::OPTION_L|ModifierFlag::SHIFT_L|ModifierFlag::NONE,
KeyCode::CURSOR_UP,ModifierFlag::SHIFT_L
</autogen>
<autogen>--KeyToKey--
KeyCode::L,ModifierFlag::OPTION_L|ModifierFlag::SHIFT_L|ModifierFlag::NONE,
KeyCode::CURSOR_RIGHT,ModifierFlag::SHIFT_L
</autogen>
<!-- OPTION_L + COMMAND_L + h/l to PC's ctrl + left/right -->
<autogen>--KeyToKey--
KeyCode::H,ModifierFlag::OPTION_L|ModifierFlag::COMMAND_L,
KeyCode::CURSOR_LEFT,ModifierFlag::OPTION_L
</autogen>
<!-- Option+L to PC's Ctrl+Right -->
<autogen>--KeyToKey--
KeyCode::L,ModifierFlag::OPTION_L|ModifierFlag::COMMAND_L,
KeyCode::CURSOR_RIGHT,ModifierFlag::OPTION_L
</autogen>
</item>
<item>
<name>OPTION_L + g; to HOME/END</name>
<identifier>private.option_l_plug_g_or_semicolon2home_end</identifier>
<!-- OPTION_L + g/; to HOME/END -->
<autogen>--KeyToKey--
KeyCode::G,ModifierFlag::OPTION_L|ModifierFlag::NONE,
KeyCode::CURSOR_LEFT,ModifierFlag::COMMAND_L
</autogen>
<autogen>--KeyToKey--
KeyCode::SEMICOLON,ModifierFlag::OPTION_L|ModifierFlag::NONE,
KeyCode::CURSOR_RIGHT,ModifierFlag::COMMAND_L
</autogen>
<!-- OPTION_L + SHIFT_L + g/; to SHIFT + HOME/END -->
<autogen>--KeyToKey--
KeyCode::G,ModifierFlag::OPTION_L|ModifierFlag::SHIFT_L|ModifierFlag::NONE,
KeyCode::CURSOR_LEFT,ModifierFlag::COMMAND_L|ModifierFlag::SHIFT_L
</autogen>
<autogen>--KeyToKey--
KeyCode::SEMICOLON,ModifierFlag::OPTION_L|ModifierFlag::SHIFT_L|ModifierFlag::NONE,
KeyCode::CURSOR_RIGHT,ModifierFlag::COMMAND_L|ModifierFlag::SHIFT_L
</autogen>
</item>
<item>
<name>OPTION_L + jk to PAGEDOWN/PAGEUP</name>
<identifier>private.option_l_plug_g2homea</identifier>
<!-- OPTION_L + j/k to PAGEDOWN/PAGEUP -->
<autogen>--KeyToKey--
KeyCode::J,ModifierFlag::OPTION_L|ModifierFlag::COMMAND_L,
KeyCode::CURSOR_DOWN,ModifierFlag::FN|ModifierFlag::OPTION_L
</autogen>
<autogen>--KeyToKey--
KeyCode::K,ModifierFlag::OPTION_L|ModifierFlag::COMMAND_L,
KeyCode::CURSOR_UP,ModifierFlag::FN|ModifierFlag::OPTION_L
</autogen>
</item>
<item>
<name>OPTION_L + o to add new line under current line</name>
<identifier>private.option_l_plus_o2add_new_line</identifier>
<autogen>--KeyToKey--
KeyCode::O,ModifierFlag::OPTION_L|ModifierFlag::NONE,
KeyCode::CURSOR_RIGHT,ModifierFlag::COMMAND_L,
KeyCode::ENTER
</autogen>
</item>
<item>
<name>OPTION_L + yp to copy/paste</name>
<identifier>private.option_l_plus_yp2copy_paste</identifier>
<autogen>--KeyToKey--
KeyCode::Y,ModifierFlag::OPTION_L|ModifierFlag::NONE,
KeyCode::C,ModifierFlag::COMMAND_L
</autogen>
<autogen>--KeyToKey--
KeyCode::P,ModifierFlag::OPTION_L|ModifierFlag::NONE,
KeyCode::V,ModifierFlag::COMMAND_L
</autogen>
</item>
<item>
<name>OPTION_L + ur to undo/redo</name>
<identifier>private.option_l_plus_ur2undo_redo</identifier>
<autogen>--KeyToKey--
KeyCode::U,ModifierFlag::OPTION_L|ModifierFlag::NONE,
KeyCode::Z,ModifierFlag::COMMAND_L
</autogen>
<autogen>--KeyToKey--
KeyCode::R,ModifierFlag::OPTION_L|ModifierFlag::NONE,
KeyCode::Z,ModifierFlag::COMMAND_L|ModifierFlag::SHIFT_L
</autogen>
</item>
<item>
<name>OPTION_L + d to delete current line</name>
<identifier>private.option_l_plus_d2delete_line</identifier>
<autogen>--KeyToKey--
KeyCode::D,ModifierFlag::OPTION_L|ModifierFlag::NONE,
KeyCode::CURSOR_LEFT,ModifierFlag::COMMAND_L,
KeyCode::CURSOR_RIGHT,ModifierFlag::COMMAND_L|ModifierFlag::SHIFT_L,
KeyCode::FORWARD_DELETE
</autogen>
</item>
<item>
<name>OPTION_L + ,. to switching tab</name>
<identifier>private.option_l_plus_comma_or_dot2switching_tab</identifier>
<autogen>--KeyToKey--
KeyCode::DOT,ModifierFlag::OPTION_L|ModifierFlag::NONE,
KeyCode::BACKSLASH,ModifierFlag::COMMAND_L|ModifierFlag::SHIFT_L
</autogen>
<autogen>--KeyToKey--
KeyCode::COMMA,ModifierFlag::OPTION_L|ModifierFlag::NONE,
KeyCode::BRACKET_RIGHT,ModifierFlag::COMMAND_L|ModifierFlag::SHIFT_L
</autogen>
</item>
</list>
</item>
</list>
</root>