macOS Sierra の登場により karabiner が使用不能になってしまったのでそれの代替として使う
win 1.82 と mac 1.10 の比較。
Option キーは Alt キー扱い。 モデファイアキーの省略表記ができない、入力、出力共に全部フルスペルで書く必要がある。
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"
とする。
通常 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"
のようになる
まずこのキーを独自の修飾キーにします宣言をする。 この例ではセミコロンを独自の修飾キーにしている。
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"