Keyhac 超入門


ここ数日、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. キーマップの取得
  2. 取得したキーマップにホットキーを設定

を行っています。

それぞれの処理についてざっくり説明します。

1. キーマップの取得

Keyhac では、キーマップというオブジェクトに対してキーの設定行います。

そこで、まずはキーマップオブジェクトを取得します。

keymap.defineWindowKeymap()

このときにパラメータを指定することで、設定を特定のウインドウに限定することができます。
※上記の例ではエクセルに限定していますが、パラメータなしの場合はグローバルなホットキーを設定できます。

設定できるパラメータについては、公式サイトを参照してください。

2. 取得したキーマップにホットキーを設定

取得したキーマップに対して、キーの設定を行います。

keymap_app["C-E"] = "F2"

という様に都度設定しても良いですが、例では記述量を減らすため辞書に定義してから for 文で設定しています。

参考となるサイト

さいごに

今までは、AutoHotKey(AHK)というツールを主に使っていたのですが、
文法が 新・旧 入り乱れていたり、イベントの取合いなどうまく動かない場面があったため、
この Python の文法が使えるという部分が大きなメリットと感じています。

もっと流行ってほしいと思って、Qiita 初投稿してみました。
不備などあれば教えて下さい!

私の設定を置いておきます。ご参考になれば。
https://github.com/roppi/KeyhacScripts