basyura's blog

あしたになったらほんきだす。

Keyhac for Mac

f:id:basyura:20171111225933p:plain:w200

Keyhac - Pythonによる柔軟なキーカスタマイズツール - craftware

Win10 な新端末に乗り換えなタイミングで autohotkey から乗り換えた Keyhac の Mac 版に Karabiner に乗り換えてみる。理由は C-x C-k のような複合キー(?) の挙動も変えたいから。

Bear や Evernote のようなモードの無いエディタを使っていると入力しつつ編集も行いたいケースがまま多い。キー操作のバリエーションを増やすためには C-x のようなプレフィックスキーが欲しくなる。

とはいえ IME のキー操作とかなりバッティングするからで・・・日本語入力中 (IME) が発動してる際にキー操作を実行しないでくれれば複合キーにしなくて済むんだけど、いろいろツールを試しても判定できるものは無さそうなのであきらめ。

設定ファイルは python コードそのもの。

def configure(keymap):

    # --------------------------------------------------------------------
    # Text editer setting for editting config.py file

    # Setting with program file path (Simple usage)
    if 1:
        keymap.editor = "MacVim"
        #keymap.editor = "Sublime Text 2"

    # Setting with callable object (Advanced usage)
    if 0:
        def editor(path):
            subprocess.call([ "open", "-a", "TextEdit", path ])
        keymap.editor = editor


    # --------------------------------------------------------------------
    # Customizing the display

    # Font
    keymap.setFont( "Osaka-Mono", 16 )

    # Theme
    keymap.setTheme("black")

    bear = keymap.defineWindowKeymap( app_name="net.shinyfrog.bear" )
    bear[ "Ctrl-X" ] = keymap.defineMultiStrokeKeymap("Ctrl-X")
    bear[ "Ctrl-X" ][ "Ctrl-K" ] = "Ctrl-Shift-E","Ctrl-C","Ctrl-H"
    bear[ "Ctrl-U" ] = "Cmd-Z"
    bear[ "Ctrl-Y" ] = "Cmd-Shift-Z"

(下書きを Bear で書いているんだけど python のシンタックスハイライトが怪しい)

そんなことしてないで Vim で書けばいいよと言われればそうなんだけど、文章を書いたり読み返したりするのがしっくりこず今に至る。いろいろ試した結果 Bear や Evernote のような専用の UI や操作がある (できる) ものの方があうようだ。

Keyhac の端末表示で出力内容を見てると winsound が無いっていうエラーが出るんだけど、windows 用のコードが発動してるんだろうか。

Traceback (most recent call last):
  File "/Users/tom/Project/keyhac/keyhac_keymap.py", line 1037, in _onKeyDown
  File "/Users/tom/Project/keyhac/keyhac_keymap.py", line 943, in _keyAction
NameError: name 'winsound' is not defined