LoginSignup
4
7

More than 3 years have passed since last update.

Keyhac 超入門

Last updated at Posted at 2021-02-09

ここ数日、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

4
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
7