MENU
Apple製品を安く買うなら!詳細はこちら→ CLICK!

【徹底解説】キーマップを自在にカスタマイズ!Keyhacでキーボード割り当てを変更!

本ページにはプロモーションが含まれています。
キーボード割り当て

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

Fuyutsuki

私は普段MacやWindowsなど複数の種類のPCを触りますが、キーボードで困るんですよね。。

AのPCとBのPCでキーマップ(キーボード割り当て)が異なると慣れるのに時間がかかり作業効率が落ちてしまいます。

特にWindowsだとメーカーによってもキー配列が違うのはかなり困った問題です。

理想はどのPCに繋いでもキーボードが同じ設定となることです。キー配列に気を取られることもなく作業に集中できるようになります。

Fuyutsuki

そこで、今回紹介するKeyhacというソフトを使います。

実際にはPythonコードを記述したファイルをKeyhacというソフトで実行することにより、キー配列を自在に制御できるようになります。

これにより、ストレスフリーでPC作業ができるようになるソフトです。

Keyhacの使い方について徹底解説した今回の記事は、PCを使う人にとっては非常に有益な内容だと断言できるものです。

Fuyutsuki

ここまで解説した記事は他にないよ。

ぜひ最後までご覧ください。

目次

今回設定する内容

私好みの設定ではありますが、特段癖はなく使いやすい設定だと思います。

ぜひ試してみてください。

無変換ボタンで英数に、変換ボタンでかな切り替えできるようにする。

要は右手と左手の親指で英数とかな切り替えを行うことができるようにします。Macを普段使っている方であれば、Macのデフォルトのキーマップなのでなじみ深い設定かと思います。

Capslockキーを仮想キーとしてFnキーのように扱う。

Fuyutsuki

共感を得られることが多いかと思いますが、私はCapslockキーは不要だと思います。

ここではCapslockキーを封じて代わりに仮想キーとしてFnキーのように扱います。のように、というところがポイントです。CapslockキーをFnキーに置き換えているわけではありません。

注意点としては、CapslockキーはデフォルトでUp信号が入力されないことです。正確なところは後程説明します。

完成形のイメージ図

私がプログラミング用に愛用している分割キーボードを例に完成形のイメージ図を示します。

キーボード割り当て

基本的にはホームポジションを崩さないということをベースに考えています。

英数切り替え・かな切り替えは親指で行います。

また、矢印キーなどをホームポジションから入力できるように、Capslockキーに仮想キーを割り当てていきます。

例えば、「Capslockキー(仮想キー)+K」を押すことでカーソルが右に移動するように設定しています。

このように、「Capslockキー(仮想キー)+どこかのキー」を入力することで、カーソル移動や単語移動などなど自在にカスタマイズしていきます!

Keyhacのインストール

こちらのページから最新版のKeyhacをダウンロードしてください。

>> craftware – Keyhac (日本語) (google.com)

WindowsかMacかを選択してダウンロードします。

keyhacダウンロード
keyhacのダウンロード

※「安全にダウンロードできません」と表示されることがありますが、問題ありません。・・・をクリックし、「保存」をクリックしましょう。

keyhacダウンロード 注意
・・・をクリックし、「保存」をクリックしましょう。

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

Keyhacのインストール

ちなみに、_config.pyはこんな風にKeyhacが使えますよという例です。

そのため、いろいろと記述してありますが気にせずとも問題ありません。

こちらがマニュアルになります。

>> keyhac: User Manual (crftwr.github.io)

Keyhacを試しに実行

先程のフォルダに入っているkeyhac.exeをダブルクリックして実行してみましょう。

ダブルクリックすれば以下のようにタスクバーにkeyhacのアイコンが表示されます。これで実行は完了です。

Keyhacの実行

ちなみに、Keyhacのアイコンを右クリックしてみましょう。

この中で「内部ログをON」・「キー操作 記録開始」をクリックします。

Keyhacの記録

以下のように、キーボードを入力したときの信号が表示されます。

DがDown、UがUpの意味です。当然ですが、キーを入力する際には一度Downした後にUpしますからね。通常はDとUがセットです。

ここで注意ですが、赤枠で囲っている箇所がCapslockキーを押した際の挙動です。

Dしか信号が入力されていません。つまり、CapslockキーをFnキーのように入力させるためには、Capslockキーを押した際にDとUの信号がセットで入力されるように設定しなければいけません。→ 結論としては、CapslockキーをDとUの信号がセットとして出力される仮想キーに置き換えることで実現させます。

Capslockの信号

ちなみに、このキーボードを押した際の信号はPCによって異なります。自分のPCでどのように信号が入力されているのか確認しておきましょう。

Keyhacの設定

設定するPythonファイル

先ほども触れたように、ダウンロードして解凍した中に入っている_config.pyは例で説明する用のpythonファイルです。

実際に設定するのは以下のファイルパスにあるconfig.pyとなります。

設定するPythonファイル

ちなみに、Appdataは隠しファイルです。

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

隠しファイル

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

設定するPythonファイル

Pythonのインストールまだしてない・VSCodeって何ぞやって方は以下のサイトをご参照ください。

こちらの記事にPython及びVSCodeのインストールや設定の方法について解説しています。

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

Fuyutsuki

まずはこのコードを全て消してしまいましょう。(説明用のコードを後で見るには解凍したファイルにある_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などを入力するときにはどうしてもホームポジションが崩れてしまいますからね。それを極力減らすようにするための私なりの工夫です。

Fuyutsuki

今回はコメントアウトしていますが、def activatelogicool()の関数の箇所では、事前に作成したpowershellを呼び出しています。

このようにすることで、例えば普段2種類のキーボードを使い分けている方であれば、キーボード操作で設定したいキーボード割り当てに変更することができるようになります。

しかし、これだけでは設定が完了していません。Keyhacを起動しても思うように動作しないです。ここからレジストリの設定などを行っていきます。

レジストリを設定する

Keyhacではいじれない箇所を、レジストリエディターから設定します。

アプリ検索画面でレジストリエディターと検索して以下のアプリを立ち上げます。

レジストリエディター

次に、「コンピューター\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout」の階層に行きます。

Keyboard Layoutsではなく、Keyboard Layoutなので注意しましょう。(sがない方の階層)

レジストリエディターの設定

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

レジストリエディターの設定-2

詳細は割愛しますが、このScancode Mapを右クリックして「修正」をクリックし、以下のように設定します。

気になる方は「レジストリ キー配列変更」等でググってみてください。

レジストリエディターの設定-3

ここの値をまちがえると誤作動の原因となりますので、まちがわないように注意して設定してください。

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

レジストリエディターの設定-4

レジストリを設定したら再起動しましょう。

以上の設定で、元々Capslockキーだったところを何もないキー(未割当の仮想キー)に設定しました。

Keyhacを起動しなかったら、元々Capslockキーがあったところを押しても何も起きないはずです。

Keyhacを起動することで、このもともとCapslockキーであったところが仮想キーに置き換わり、”Fnキーかのように”振る舞うことができます。

英数かな設定

先程紹介したKeyhacのキー操作の記録を確認すれば一目瞭然ですが、英数かな切り替えはPCにより挙動が異なります。

Fuyutsuki

英数かな設定については、Keyhacやレジストリの設定とは別に以下の設定をしておきましょう。

まず、タスクバーのIMEアイコン(”A”や”あ”などが表示されている箇所)を右クリックし、設定を押します。

その後、キーとタッチのカスタマイズをクリックしましょう。

英数かな設定-1

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

英数かな設定-2

これで全ての設定が完了です。

起動時にKeyhacが自動で立ち上がるようにしよう

以上で設定が完了すれば、後はKeyhacを起動するだけでカスタマイズしたキー配列となります。

ここで終わってもよいですが、以下の設定でパソコン起動時に自動でKeyhacが立ち上がるようにしましょう。

Winロゴキー+Rキーを入力します。

以下の画面になるので、shell:startupと入力してOKを押しましょう。

起動時に実行

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

起動時に実行-2
スタートアップフォルダにkeyhac.exeのショートカットをコピペしよう

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

Windows11 その他のオプションを表示
右クリックして「その他のオプションを表示」をクリックします

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

keyhacショートカットの作成
ショートカットの作成」をクリックしましょう。

これで、PC起動時に自動でKeyhacが立ち上がるようになります!

必要であればCtrlとFnの入れ替えも

例えばPanasonicレッツノートでは、こちらのように普段Ctrlがある位置にFnがあります。

CrrlとFnの入れ替え

このような場合は、CtrlとFnを入れ替えたいと思う人もいるかと思います。Ctrlキーを一番左下に持ってくるということですね。

結論、BIOS起動を行って設定します。

以下に簡単に手順をまとめます。事前にPCの電源を切っておきましょう。

STEP
レッツノートを起動する際にF2キーを連打

F2キーを押すタイミングはPCによって微妙に異なるので連打します。

STEP
メインタブのFn/Ctrlキーを標準から入れ替えに変更

F2キーが上手く押せればBIOS起動しますので、FnとCtrlを入れ替えます

STEP
設定を保存して再起動

これで完了です。

以上、起動時にF2キーを連打してBIOS起動さえできてしまえば簡単に設定ができます。

まとめ:キーボード割り当てを変更したいならKeyhac!

Keyhacを使って、キーマップを自在にカスタマイズする方法についてまとめました。

個人的に力作の記事です。

PCを使う方にとってはどなたにも非常に有益な情報となっているかと思いますのでぜひ試してみてください。

このように有益な情報を発信していますので、また記事を読みに来てくれると嬉しいです。

Fuyutsuki

最近は電動昇降デスクを導入して作業効率爆上がりしたので、その辺りの記事をまとめています。

最後まで読んでいただきありがとうございました。

ではまた、次の記事で!

キーボード割り当て

この記事が気に入ったら
フォローしてね!

この記事を書いた人

快適なデスク環境で作業効率アップをテーマに、様々なガジェットを紹介している20代エンジニアです。

作業効率化につながるようなプログラミングの情報についても発信中。

コメント

コメントする

目次