0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

自作キーボードを macOS と Windows の両方で使えるようにするちょっと特殊な方法

Last updated at Posted at 2025-10-05

「自作キーボードを macOS と Windows の両方で使えるようにしたい」というのはよくある悩みだと思うが、これに対してあまりインターネット上では見かけない方法で対処したのでまとめておく。

ちなみに、記事中で GUI とか LANG1 とか自作キーボードでよく見かける用語を使っているので「自作キーボードの話」ということにしているが、割と一般的に使えるテクだと思われる。

前提

この記事は 「主に macOS を使っているが、たまに Windows も使いたい人」 を対象としているので、基本的には「macOS 側はいじらずに Windows 側で特殊設定をしてなんとかする」というアプローチをとっている。

また、この記事中で使用している OS は Windows 11 Pro (24H2)。

課題

macOS で使っている自作キーボードを Windows で使用しようとしても、普通はそのままだと同じようには使えない。

例えば 言語切り替え (IME オンオフ) は Windows では「全角半角」キーを使用するのが一般的だが、macOS では「英数 (LANG2)」「かな (LANG1)」キーが使用されるという違いがある。少し前までは macOS と同じスタイルで Windows の言語切り替えをするための設定に手間どったものだが、最近の Windows では言語切り替えの方式が macOS と同じになってきており、自作キーボードにおいてこの点は特に気にする必要はなくなった。具体的には、OS レベルで LANG1 / LANG2 キーによる IME オンオフが普通にできるようになった。1 助かる!!

とするとあと困るのは 修飾キーの違い である。この問題については以下の記事が詳しい。

image.png
※ 画像は上記記事から引用

Windows と macOS では GUI キーが Wincommand に, CTL キーが Ctrlcontrol に対応しているが、ショートカットキーの多くは Ctrlcommand で共通している。だから macOS ユーザが Windows にて Win キーを押すとき、たいていの場合は Ctrl として認識されて欲しい。

自分は熱心な Windows ユーザではないので Win キー関連のショートカットキーを全く使用しておらず、Win キーをすべて潰してでも Ctrl として動作して欲しい。

試したけど採用しなかった方法

PowerToys でキー置き換え

image.png

実は PowerToys の Keyboard Manager で WinCtrl に置き換えるだけでほとんどのケースは問題なく動く。ただし Win + L で「画面をロックする」ショートカットキーだけはどうやっても発動してしまう。 Ctrl + L は Web ブラウザの「アドレスバーにフォーカスする」ショートカットでよく使うため、これが使えないのはつらい。

なぜ Win + L のときだけ Ctrl + L に置き換えてくれないのかというと、この「画面をロックする」機能が OS のユーザレベルよりもさらに低いレベルで処理されているためだと思われる。画面ロック機能そのものを無効化する手もあるが、それはセキュリティ的にかなりヤバいので却下した。

キーボードのファームウェアで OS 検出

QMK には OS を検出する機能がある2ので、QMK に対応しているキーボードであれば「Windows のときは Ctrl / macOS のときは command」というキー割り当てが可能になる。ただファームウェアいじりはハードルが高くて後回しにしていたところ、結果的に後述の方法で解決できてしまったので試すことなく終わった。

レイヤを複数用意して切り替える

Windows 用のレイヤと macOS 用のレイヤを用意しておいて、OS を切り替えるときにレイヤを切り替えることで対応する方法。運用でカバー!! これこそ最終手段なのでやりたくなかった。

採用した方法

レジストリをいじって 「キーボードドライバのレベルで Win キーを Ctrl キーに置き換える」 ことで期待通りの振る舞いを実現できた。

字面からわかる通り、この方法はもちろんリスクがあり...

  • レジストリ書き換えをするので最悪 Windows が壊れる
  • すべてのキーボードの振る舞いが変わる
  • Windows 上のすべてのユーザに影響する

真似する場合は自己責任で、十分に注意されたい。

手順

レジストリエディタを開き、HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout 直下に「バイナリ値(B)」を新規作成する。

名前を Scancode Map とし、値は以下を指定する。

00000000 00000000 02000000 1de05ce0 00000000

image.png

最後に、設定を反映させるために Windows を再起動する。

解説

このレジストリを編集する方法では、キーボードドライバの振る舞いを変更している。3 ドライバのレベルでキーマップを変更しているので、PowerToys では不可能だった Win + L も問題なく Ctrl + L に置き換えることができる。

バイト列 意味
00 00 00 00 ヘッダ (すべて 0)
00 00 00 00 ヘッダ (すべて 0)
02 00 00 00 マッピング件数 (終端を含む) → 2件
1D E0 5C E0 右 Win (E0 5C) を 右 Ctrl (E0 1D) に置き換え4
00 00 00 00 終端 (すべて 0)

今回は「右 Win キーを右 Ctrl に置き換える」ことをやっているので、左 Win キーはそのまま Win キーとして動作する。自作キーボードの Win キーは必ず右 Win キーを割り当てることで Windows では Ctrl として動作するようになり、他のキーボードでは多くの場合は左 Win キーのみ使用されるため通常通り Win キーとして動作するという仕組みだ。

もし左右の Win キーを両方とも Ctrl に置き換えたい場合は、左側のマッピング設定を追加してマッピング件数を +1 すればよい。

00000000 00000000 03000000 1d005be0 1de05ce0 00000000

余談

この方法は ChatGPT と壁打ちしていて知ったのだけど、最初 Scancode Map のマッピング数を誤って出力してきて、公式ドキュメントを見て裏取りしたところ誤りに気づくことができた。「レジストリいじる」といった下手すると OS を破壊する行為をするときは特に、AI の言うことは信用しすぎないほうがよい...。

  1. キーボード日本 - ImeOn / ImeOff の実装 | Microsoft Learn

  2. OS Detection | QMK Firmware

  3. Configuration of Keyboard and Mouse Class Drivers | Microsoft Learn

  4. Scancode - Wikipedia

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?