ここ数日、Python の学習を兼ねて Keyhac というツールと格闘していまして、
やっと使い方がわかってきたので、シェアしたいと思います。
Keyhac とは
@craftware 様が公開されている、キーボード操作を柔軟に変更できるアプリケーションです。
[変換]キーが押されたら、IMEをONにする のような単純なキーの置換から、
エクセル操作中は[F1]キーを無効にするなどのアプリケーション別の設定、
特定のキーを押すだけで、キーボードマクロの実行や別アプリケーションの起動など幅広いことができます。
また、設定スクリプトを Python で記述できるため、
Python の柔軟な文法と強力な機能を使うことができます。
Keyhac の導入
下記の公式サイトからダウンロードしてください。
Windows版と、Mac版があります。
Keyhac の設定方法
Keyhac の設定は、config.py に記載します。
config.py は、初回起動時に%AppData%\Keyhac
内に作成されます。
※keyhac.exe のワークディレクトリ内に存在する場合は上記は作成されないようです。
初回起動時に生成される config.py (またはワークディレクトリ内の _config.py )には、
設定例としていろいろな処理が記載されていますが、
今回は超入門ということで、簡単なキー変更の設定例を紹介します。
単純な config.py の設定例
まずは、以下のコードをご覧ください。
下記のみで動作します。
def configure(keymap):
# 指定された条件でキーマップを取得
keymap_app = keymap.defineWindowKeymap("EXCEL.exe")
# ホットキーを定義
hotkeys = {"C-E": "F2", # Ctrl+E を F2 に変更
"C-Right": ["A-H", "R"], # 複数キーのシーケンスに置換する場合はリストにする
}
# ホットキーの内容をキーマップに設定
for key, value in hotkeys.items():
keymap_app[key] = value
エクセル上で [Ctrl]キー と [E]キー を押した場合に、[F2]キーに変更する(セルの編集を行う)場合の設定例です。
処理の内容としては大きく2つ
- キーマップの取得
- 取得したキーマップにホットキーを設定
を行っています。
それぞれの処理についてざっくり説明します。
1. キーマップの取得
Keyhac では、キーマップというオブジェクトに対してキーの設定行います。
そこで、まずはキーマップオブジェクトを取得します。
keymap.defineWindowKeymap()
このときにパラメータを指定することで、設定を特定のウインドウに限定することができます。
※上記の例ではエクセルに限定していますが、パラメータなしの場合はグローバルなホットキーを設定できます。
設定できるパラメータについては、公式サイトを参照してください。
2. 取得したキーマップにホットキーを設定
取得したキーマップに対して、キーの設定を行います。
keymap_app["C-E"] = "F2"
という様に都度設定しても良いですが、例では記述量を減らすため辞書に定義してから for 文で設定しています。
参考となるサイト
- 公式ドキュメント (http://crftwr.github.io/keyhac/doc/ja/)
- KT Sofrtware 様 仮想キーコード一覧(http://kts.sakaiweb.com/virtualkeycodes.html)
さいごに
今までは、AutoHotKey(AHK)というツールを主に使っていたのですが、
文法が 新・旧 入り乱れていたり、イベントの取合いなどうまく動かない場面があったため、
この Python の文法が使えるという部分が大きなメリットと感じています。
もっと流行ってほしいと思って、Qiita 初投稿してみました。
不備などあれば教えて下さい!
私の設定を置いておきます。ご参考になれば。
https://github.com/roppi/KeyhacScripts