Keyhac
Keyhac とは
Keyhac とは、Python を使ってキーカスタマイズが行えるアプリケーションです.
https://sites.google.com/site/craftware/keyhac-ja
定型文入力をスニペットのように入力できるツールとして、 aText を使っています.無料でも単純な定型文は入力することができますが、フル機能を使うためにはProバージョンにしなければならず、有料です.そんなに頻繁に利用するわけでもないですし、とりあえず他の方法でできないかと探していたところ、Keyhacにたどり着きました.
Keyhac のいいところは Python でカスタマイズできるところにあります.以前は Charu3 を使っていました.マクロは用意されていたりプラグインもあるので、ある程度カスタマイズができるのですが、やはり限界があります.Python が使えるなら、テキスト処理以外のこともいろいろできるので汎用性は高いです.
Keyhacの設定
Keyhacの設定方法を解説します.環境は Windows です.
まず、Keyhacを起動するとシステムトレイに常駐します.シス テムトレイからKeyhacアイコンを右クリックして、設定の編集
を選択すると、設定ファイル(config.py
)がエディタで開かれます.この設定ファイルを編集して、システムトレイから右クリック、設定のリロード
で反映されます.
コンソール画面
設定ファイルに問題があったり、実行したときにエラーが発生した場合はコンソール画面が表示されます.設定ファイルから print
すると、このコンソール画面が表示されます.画面が表示されていない場合、システムトレイのKeyhacアイコンをダブルクリックすると表示されます.コンソール画面をクリアしたい場合、システムトレイからKeyhacアイコンを右クリックして端末のクリア
を選択します.また、内部ログをON
を選択すると、ログ情報がコンソール画面に出力されます.無効にしたいときは内部ログをOFF
を選択します.
configure関数
Keyhacを起動すると、設定ファイル(config.py
)にあるconfigure
関数が呼ばれます.ここに処理を記述してきます.
エディタの設定
設定ファイルの編 集に使うエディタを設定します.Visual Studio Codeは開く場合は次のようにします.
keymap.editor = "code"
フォントの設定
コンソールなどのウィンドウに表示されるテキストのフォントを指定します.好きなフォントを指定してください.フォントを指定すると、起動に少し時間がかかるようになります.
keymap.setFont("Iosevka", 16)
テーマの設定
標準では white
と black
が用意されています.
keymap.setTheme("black")
キーの再登録
Keyhacではキーを別のキーに割り当てることができます.それにはkeymap.replaceKey
メソッドを使います.私の場合、無変換
キーと変換キー
を適当な場所に再割り当てし、ユーザー修飾キーとしてそれらを登録します.ユーザー修飾キーの登録は keymap.defineModifier
メソッドを使います.
# Key replacement
keymap.replaceKey("(29)", 235) # 無変換
keymap.replaceKey("(28)", 236) # 変換
# User modifier key definition
keymap.defineModifier(235, "User0")
keymap.defineModifier(236, "User1")
グローバルキーマップ
Keyhacではウィンドウごとにキーカスタマイズを行うことができますし、すべてのウィンドウに対してキーカスタマイズできます.後者の場合、keymap.defineWindowKeymap
メソッドで取得したオブジェクトで設定します.
# Global keymap which affects any windows
keymap_global = keymap.defineWindowKeymap()
例えば、Shift
キーとZ
キーを同時に押したときの処理を設定したい場合、次のようになります.
keymap_global["S-Z"] = closure
キーに対応したクロージャを指定します.Keyhacはキーが押されたときに対応したクロージャを呼び出します.
指定できるキーやモディファイアについてはドキュメントを参照してください.
初期の設定
Keyhacでは標準でいくつか設定されています.まずは全部消すか、コメントアウトしておきましょう.
Keyhacモジュール
pyauto
とkeyhac
はKeyhacに用意されたモジュールです.pyauto
は低レベルOS機能で、keyhac
はそれ以外のものです.例えば、クリップボードを操作する場合、keyhac
の setClipboardText
, getClipboardText
を使います.
from keyhac import setClipboardText, getClipboardText
面倒なら、一括でインポートしても構いません.
from keyhac import *
これらのモジュールについて、詳しくはドキュメントを参照してください.
Keyhacを使って emacs ライクなキー操作を実現している方がいます.設定ファイルも参考になると思います.
https://github.com/smzht/fakeymacs
実装した機能の紹介
それでは、次から具体的な設定をしていきます.といっても、あまり使いこなしている訳ではありませんので悪しからず. ヘルパー関数は、それぞれ初出した場所に明記しています.