__KeyOverlaidModifier__とは
- 任意のキーを修飾キーとして利用できる機能
- 「s」を押している間だけ、「hjkl」が「←↓↑→」になる、とかできる
-
__SimultaneousKeyPresses__
との違いは、上の例で言えば「sを押したままh連打」が「←連打」になること-
__SimultaneousKeyPresses__
で「sとh同時押し」を「←」に割り当てても「←hhhhh...」になってしまう
-
使い方
- ある
item
要素内で__BlockUntilKeyUp__
を記述し、「定義した修飾キーを押している間」のみ有効なリマップを定義する-
hidden="true"
プロパティを与えることで、これ自体は設定画面に表示されず、また常に有効になる - 子要素の
identifier
にvk_config="true"
プロパティを与えることで、別のitem
から参照できる
-
- 別の
item
要素内で、任意のキーを、蒸気のitem
を参照する修飾キーに割り当てる
最初から入っている例
- 設定画面のチェックボックス一覧にある、「Simple Vi Mode v2」が該当する
- コード:Karabiner/vi_mode.xml at 9950919eb7fc6fe631b61cf8acdc409aa93ed6f4 · tekezo/Karabiner
- 「Simple Vi Mode v2」が「notsave.simple_vi_mode」を参照している
- コピペして適当にキーを書き換えたら好みの組み合わせで使える
応用
__KeyOverlaidModifier__
の書き方
- そこだけ取り出すと以下のようになっている。
<autogen>
__KeyOverlaidModifier__
KeyCode::S, ModifierFlag::NONE, <!-- 対象キーコンビネーション -->
@begin <!-- 修飾キーとしての(ホールド時の)送信されるキーコンビネーション -->
KeyCode::VK_CONFIG_SYNC_KEYDOWNUP_notsave_custom_vi_mode,
@end
@begin <!-- 通常の(プッシュ時の)送信されるキーコンビネーション -->
KeyCode::S
@end
</autogen>
-
__KeyOverlaidModifier__
は、厳密には、あるキーの「通常動作」と「修飾キーとしての動作」を、それぞれに指定する機能だと言える。
修飾キー「のみ」を複数パターン用意する
- 例えば、「aまたはs」を押している間だけ、「hjkl」を「←↓↑→」にするにはどうすればよいか?
private.xml
<?xml version="1.0"?>
<root>
<item>
<name>Custom Vi mode</name>
<identifier>remap.custom_vi_mode</identifier>
<autogen>
__KeyOverlaidModifier__
KeyCode::S, ModifierFlag::NONE,
@begin
KeyCode::VK_CONFIG_SYNC_KEYDOWNUP_notsave_custom_vi_mode,
@end
@begin
KeyCode::S
@end
</autogen>
</item>
<autogen>
__KeyOverlaidModifier__
KeyCode::A, ModifierFlag::NONE,
@begin
KeyCode::VK_CONFIG_SYNC_KEYDOWNUP_notsave_custom_vi_mode,
@end
@begin
KeyCode::A
@end
</autogen>
<item hidden="true">
<identifier vk_config="true">notsave_custom_vi_mode</identifier>
<autogen>
__BlockUntilKeyUp__ KeyCode::S
</autogen>
<autogen>__KeyToKey__ KeyCode::H, KeyCode::CURSOR_LEFT</autogen>
<autogen>__KeyToKey__ KeyCode::J, KeyCode::CURSOR_DOWN</autogen>
<autogen>__KeyToKey__ KeyCode::K, KeyCode::CURSOR_UP</autogen>
<autogen>__KeyToKey__ KeyCode::L, KeyCode::CURSOR_RIGHT</autogen>
<autogen>__KeyToKey__ KeyCode::F, KeyCode::FN</autogen>
</item>
</root>
-
notsave_custom_vi_mode
が、ふたつのitem
から参照されていることに着目して欲しい。-
__BlockUntilKeyUp__
は一種類しかないんだけどね? よくわからないね。
-
- 上記の
__KeyOverlaidModifier__
の指定方法を踏まえると、「a」をホールドしたときは「左コマンドキー」も押されてることにする、とかもできる。