こんにちは、fuyutsuki(@Fuyutsuki)です。

私は普段MacやWindowsなど複数の種類のPCを触りますが、キーボードで困るんですよね。。
AのPCとBのPCでキーマップ(キーボード割り当て)が異なると慣れるのに時間がかかり作業効率が落ちてしまいます。
特にWindowsだとメーカーによってもキー配列が違うのはかなり困った問題です。
理想はどのPCに繋いでもキーボードが同じ設定となることです。キー配列に気を取られることもなく作業に集中できるようになります。



そこで、今回紹介するKeyhacというソフトを使います。
実際にはPythonコードを記述したファイルをKeyhacというソフトで実行することにより、キー配列を自在に制御できるようになります。
これにより、ストレスフリーでPC作業ができるようになるソフトです。
Keyhacの使い方について徹底解説した今回の記事は、PCを使う人にとっては非常に有益な内容だと断言できるものです。



ここまで解説した記事は他にないよ。
ぜひ最後までご覧ください。
今回設定する内容
私好みの設定ではありますが、特段癖はなく使いやすい設定だと思います。
ぜひ試してみてください。
無変換ボタンで英数に、変換ボタンでかな切り替えできるようにする。
要は右手と左手の親指で英数とかな切り替えを行うことができるようにします。Macを普段使っている方であれば、Macのデフォルトのキーマップなのでなじみ深い設定かと思います。
Capslockキーを仮想キーとしてFnキーのように扱う。



共感を得られることが多いかと思いますが、私はCapslockキーは不要だと思います。
ここではCapslockキーを封じて代わりに仮想キーとしてFnキーのように扱います。のように、というところがポイントです。CapslockキーをFnキーに置き換えているわけではありません。
完成形のイメージ図
私がプログラミング用に愛用している分割キーボードを例に完成形のイメージ図を示します。


基本的にはホームポジションを崩さないということをベースに考えています。
英数切り替え・かな切り替えは親指で行います。
また、矢印キーなどをホームポジションから入力できるように、Capslockキーに仮想キーを割り当てていきます。
例えば、「Capslockキー(仮想キー)+K」を押すことでカーソルが右に移動するように設定しています。
Keyhacのインストール
こちらのページから最新版のKeyhacをダウンロードしてください。
>> craftware – Keyhac (日本語) (google.com)
WindowsかMacかを選択してダウンロードします。




ダウンロードして解凍すると以下のようなファイル構成になっているかと思います。


ちなみに、_config.pyはこんな風にKeyhacが使えますよという例です。
そのため、いろいろと記述してありますが気にせずとも問題ありません。
こちらがマニュアルになります。
>> keyhac: User Manual (crftwr.github.io)
Keyhacを試しに実行
先程のフォルダに入っているkeyhac.exeをダブルクリックして実行してみましょう。
ダブルクリックすれば以下のようにタスクバーにkeyhacのアイコンが表示されます。これで実行は完了です。


ちなみに、Keyhacのアイコンを右クリックしてみましょう。
この中で「内部ログをON」・「キー操作 記録開始」をクリックします。


以下のように、キーボードを入力したときの信号が表示されます。
ここで注意ですが、赤枠で囲っている箇所がCapslockキーを押した際の挙動です。
Dしか信号が入力されていません。つまり、CapslockキーをFnキーのように入力させるためには、Capslockキーを押した際にDとUの信号がセットで入力されるように設定しなければいけません。→ 結論としては、CapslockキーをDとUの信号がセットとして出力される仮想キーに置き換えることで実現させます。


ちなみに、このキーボードを押した際の信号はPCによって異なります。自分のPCでどのように信号が入力されているのか確認しておきましょう。
Keyhacの設定
設定するPythonファイル
先ほども触れたように、ダウンロードして解凍した中に入っている_config.pyは例で説明する用のpythonファイルです。
実際に設定するのは以下のファイルパスにあるconfig.pyとなります。


ちなみに、Appdataは隠しファイルです。
表示されていない方は以下のように表示タブの隠しファイルにチェックを入れておきましょう。


こちらのconfig.pyをVSCodeで開くと以下のようになっています。


Pythonのインストールまだしてない・VSCodeって何ぞやって方は以下のサイトをご参照ください。
こちらの記事にPython及びVSCodeのインストールや設定の方法について解説しています。


このconfig.pyに記述されているものも説明用のコードです。



まずはこのコードを全て消してしまいましょう。(説明用のコードを後で見るには解凍したファイルにある_config.pyを確認すればOKです。)
キーマップを設定するためのPythonコード
いきなり結論ですが、config.pyを私は以下のように記述しています。
import sys
import os
import datetime
import pyauto
from keyhac import *
def configure(keymap):
keymap_global = keymap.defineWindowKeymap()
# 以下の設定はWindowsの本体設定で、無変換と変換キーを英数とかなに割り当てれば不要。
# keymap_global["0-(29)"] = lambda: keymap.wnd.setImeStatus(0)
# keymap_global["0-(28)"] = lambda: keymap.wnd.setImeStatus(1)
# ホットキーにする時は、defineModifierの関数を使う。
keymap.defineModifier(194,"User1") # 194は未割当の仮想キー
keymap_global["User1-H"] = "Up"
keymap_global["User1-J"] = "Left"
keymap_global["User1-K"] = "Right"
keymap_global["User1-L"] = "Down"
keymap_global["User1-1"] = "F1"
keymap_global["User1-2"] = "F2"
keymap_global["User1-3"] = "F3"
keymap_global["User1-4"] = "F4"
keymap_global["User1-5"] = "F5"
keymap_global["User1-6"] = "F6"
keymap_global["User1-7"] = "F7"
keymap_global["User1-8"] = "F8"
keymap_global["User1-9"] = "F9"
keymap_global["User1-10"] = "F10"
keymap_global["User1-11"] = "F11"
keymap_global["User1-12"] = "F12"
keymap_global["User1-T"] = "Home" # 頭に移動する(Top)
keymap_global["User1-R"] = "End" # 最後に移動する(End)
keymap_global["User1-E"] = "PageUp" # 約1ページ分上に移動する(Up)
keymap_global["User1-D"] = "PageDown" # 約1ページ分下に移動する(Down)
keymap_global["User1-F"] = "Enter"
keymap_global["User1-S"] = "Back"
# 無変換・変換キーの割り当てを実現するためのIME ON OFF切り替えが右辺。
# 右辺に渡すのが関数でないといけないからラムダ式。
keymap_global["User1-B"] = lambda: keymap.wnd.setImeStatus(0)
keymap_global["User1-N"] = lambda: keymap.wnd.setImeStatus(1)
# 単語毎のカーソル移動ができるように。
keymap_global["LCtrl-User1-J"] = "LShift-Left"
keymap_global["LCtrl-User1-K"] = "LShift-Right"
# 行の先頭または末尾まで選択。
keymap_global["LCtrl-LShift-User1-J"] = "LCtrl-LShift-Left"
keymap_global["LCtrl-LShift-User1-K"] = "LCtrl-LShift-Right"
# 単語の選択ができるように
keymap_global["LShift-User1-H"] = "LShift-Up"
keymap_global["LShift-User1-J"] = "LShift-Left"
keymap_global["LShift-User1-K"] = "LShift-Right"
keymap_global["LShift-User1-L"] = "LShift-Down"
# 右のShiftは使用しないので、Altに置き換える。
keymap.replaceKey("RShift","LAlt")
# 複数のconfig.pyを切り替え可能に。
# def activelogicool():
# os.system("powershell ./run_logicool.ps1")
# keymap_global["User1-Back"] = activelogicool
Pythonコードの解説
今までCapslockキーをFnキーのようにして扱うと言ってきた箇所がPythonコードで言うところの「keymap.defineModifier(194,”User1″)」の箇所です。
例えば、「未割当のキー+1」を入力することで、「F1」と同様の挙動が起こるようになります。
以下、私が設定していることです。
- 矢印ボタンを押さなくともカーソル移動ができるように。
- 数字との組み合わせでFnキーと同様の挙動になるように。
- Home,End,PageUp,PageDownができるように。
- EnterやBackもできるように。
- 単語毎のカーソル移動・行の先頭末尾までの移動・単語の選択ができるように。
基本的な考え方としては、ホームポジションを崩さなくとも思うようにキー入力ができるようにするためのキー配列です。
例えば、矢印ボタンであったり、HomeやEndなどを入力するときにはどうしてもホームポジションが崩れてしまいますからね。それを極力減らすようにするための私なりの工夫です。



今回はコメントアウトしていますが、def activatelogicool()の関数の箇所では、事前に作成したpowershellを呼び出しています。
このようにすることで、例えば普段2種類のキーボードを使い分けている方であれば、キーボード操作で設定したいキーボード割り当てに変更することができるようになります。
しかし、これだけでは設定が完了していません。Keyhacを起動しても思うように動作しないです。ここからレジストリの設定などを行っていきます。
レジストリを設定する
Keyhacではいじれない箇所を、レジストリエディターから設定します。
アプリ検索画面でレジストリエディターと検索して以下のアプリを立ち上げます。


次に、「コンピューター\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout」の階層に行きます。
Keyboard Layoutsではなく、Keyboard Layoutなので注意しましょう。(sがない方の階層)


右クリック-新規-バイナリ値をクリックしましょう。ここでは名称をScancode Mapとしておきます。


詳細は割愛しますが、このScancode Mapを右クリックして「修正」をクリックし、以下のように設定します。
気になる方は「レジストリ キー配列変更」等でググってみてください。


※ ちなみに、Ctrlの箇所に仮想キーを、Capsロックキーの箇所にCtrlキーを持ってきたいという方は以下のように設定するとよいです。


レジストリを設定したら再起動しましょう。
Keyhacを起動しなかったら、元々Capslockキーがあったところを押しても何も起きないはずです。
Keyhacを起動することで、このもともとCapslockキーであったところが仮想キーに置き換わり、”Fnキーかのように”振る舞うことができます。
英数かな設定
先程紹介したKeyhacのキー操作の記録を確認すれば一目瞭然ですが、英数かな切り替えはPCにより挙動が異なります。



英数かな設定については、Keyhacやレジストリの設定とは別に以下の設定をしておきましょう。
まず、タスクバーのIMEアイコン(”A”や”あ”などが表示されている箇所)を右クリックし、設定を押します。
その後、キーとタッチのカスタマイズをクリックしましょう。


さらに、キーとタッチのカスタマイズを以下のように設定しましょう。


これで全ての設定が完了です。
起動時にKeyhacが自動で立ち上がるようにしよう
以上で設定が完了すれば、後はKeyhacを起動するだけでカスタマイズしたキー配列となります。
Winロゴキー+Rキーを入力します。
以下の画面になるので、shell:startupと入力してOKを押しましょう。


以下のスタートアップフォルダにkeyhac.exeのショートカットをコピペしてあげれば完了です!


Windows11でショートカットを作成する場合はkeyhac.exeを右クリックし、「その他のオプションを表示」


「ショートカットの作成」をクリックすれば、ショートカットが作成できますので、こちらをコピペしましょう!


これで、PC起動時に自動でKeyhacが立ち上がるようになります!
必要であればCtrlとFnの入れ替えも
例えばPanasonicレッツノートでは、こちらのように普段Ctrlがある位置にFnがあります。


このような場合は、CtrlとFnを入れ替えたいと思う人もいるかと思います。Ctrlキーを一番左下に持ってくるということですね。
結論、BIOS起動を行って設定します。
以下に簡単に手順をまとめます。事前にPCの電源を切っておきましょう。
F2キーを押すタイミングはPCによって微妙に異なるので連打します。
F2キーが上手く押せればBIOS起動しますので、FnとCtrlを入れ替えます
これで完了です。
以上、起動時にF2キーを連打してBIOS起動さえできてしまえば簡単に設定ができます。
まとめ:キーボード割り当てを変更したいならKeyhac!
Keyhacを使って、キーマップを自在にカスタマイズする方法についてまとめました。
個人的に力作の記事です。
このように有益な情報を発信していますので、また記事を読みに来てくれると嬉しいです。



最近は電動昇降デスクを導入して作業効率爆上がりしたので、その辺りの記事をまとめています。
最後まで読んでいただきありがとうございました。
ではまた、次の記事で!
コメント