Keyhac/Mac版

macOS Sierra の登場により karabiner が使用不能になってしまったのでそれの代替として使う

Windowes版との違い

win 1.82 と mac 1.10 の比較。

Option キーは Alt キー扱い。 モデファイアキーの省略表記ができない、入力、出力共に全部フルスペルで書く必要がある。

やりたいこと

  • 単純なキーへのキーの割当
  • ダブルプレスへの割当
  • 通常キーへのワンショットモデファイア
  • IME 状態によるトグル

インストール

https://sites.google.com/site/craftware/keyhac-ja ここからダウンロードして入れるだけ

初期

起動する。デフォルトでサンプルとしてキモイキーバインドが最初から設定されているのでとりあえずこれを解除する

メニューから Edit config file を選び以下のソース以外を全部削除する

import sys
import os
import datetime
import subprocess
 
from keyhac import *
 
 
def configure(keymap):
 
    # -------------------------------------------
    # Text editer setting for editting config.py file
 
    # Setting with program file path (Simple usage)
    if 1:
        keymap.editor = "TextEdit"
        #keymap.editor = "Sublime Text 2"

保存し、メニューから Reload config file で設定を反映させる。

設定ファイルを編集するエディタの設定

        keymap.editor = "TextEdit"

私は MacVim を使いたいので

        keymap.editor = "MacVim"

とする。

コピペを ctrl 系にする

通常 Mac では Command + C と Command + V でコピペなのだがこれを Ctrl に変える

keymap_global = keymap.defineWindowKeymap()
keymap_global[ "Ctrl-C" ] = "Cmd-C"
keymap_global[ "Ctrl-V" ] = "Cmd-V"

OK

特定のアプリのみ有効にする

defineWindowKeymap メソッドはアプリ名を引数に取ることができて特定のアプリのみキーを割り当てることができる

もし Google Chrome にのみ割当たいのなら

keymap_chrome = keymap.defineWindowKeymap(app_name = "com.google.Chrome")
keymap_chrome[ "Ctrl-C" ] = "Cmd-C"
keymap_chrome[ "Ctrl-V" ] = "Cmd-V"

のようになる

Ctrl や Shift キー以外の通常のキーを独自の修飾キー(モデファイアキー)にする

まずこのキーを独自の修飾キーにします宣言をする。 この例ではセミコロンを独自の修飾キーにしている。

keymap.defineModifier("Semicolon", "User0")

この処理は、根っこの keymap オブジェクトに対してでないとできずこれをアプリごとに切り替えることはできない。 そして設定を済ませてしまうとセミコロンのキーは完全に修飾キーになってしまうので使えなくなってしまうことに注意。 さらにはセミコロンを組み合わせたありとあらゆるデフォルトの操作ができなくなるので注意。

そしてこの修飾キーを使って、このように割り当てることができる。

keymap_global = keymap.defineWindowKeymap()
keymap_global[ "User0-C" ] = "Cmd-C"
keymap_global[ "User0-V" ] = "Cmd-V"

この場合なら「以前までセミコロンだったキー + C」コピー操作ができるようになる

ワンショットモデファイアを実現する

上記の修飾キーの応用。例ではセミコロンにそれを仕込むことにする。

セミコロンを修飾にした後に空押しした場合はセミコロン入力が入るように、シフト入力した場合はそのままシフト入力ができるように。

keymap.defineModifier("Semicolon", "User0")
keymap_global = keymap.defineWindowKeymap()
keymap_global["O-Semicolon"] = "Semicolon"
keymap_global["LShift-Semicolon"] = "LShift-Semicolon"
keymap_global["RShift-Semicolon"] = "RShift-Semicolon"

このように keyhac では左辺はどこまでいってもキーラベルで左辺はどこまでいっても元のキーボードの操作ということが注意である。

あとは設定で自由に割り当てる。

カーソルを割り当てるなら

km["User0-E"] = "Up"
km["User0-D"] = "Down"
km["User0-S"] = "Left"
km["User0-F"] = "Right"
km["User0-A"] = "Cmd-Left"
km["User0-G"] = "Cmd-Right"
keyboard/tool/keyhac/mac.txt · 最終更新: 2021-11-09 10:57 by ore