TEX ShuraをAXキーボードっぽく設定する

**⚠️注記⚠️
AXキーボードっぽくというのはUSキーボードレイアウトにMacの「英数」「かな」キーのようなものを付けよう、という意味合いです。AXキーは付けません。
OSはWindows11です。**

---

先日TEXの新作キーボードShuraが発売になりました。
lenovoの赤ポチファン垂涎の新作です。

https://tex.com.tw/products/shura?variant=42840179409051

同社のTEX Yoda IIを愛用していたのですが、一ヶ月ほど前からキーが一つ反応が悪くなってしまい、ちょうどその辺りで購入したShura DIYバージョンが届いたのでこれも巡り合わせと早速組み立て&設定をしました。
そのメモです。
ちなみにYoda IIで調子が悪くなったキーは多分最も使用感に影響のない「Q」で、最後までとても良いキーボードでした。

# キー想定

USキーボードレイアウト＋Macの「英数」「かな」キーというのが個人的な理想です。
これを目指します。

Shura（やYoda II）の特徴として、赤ポチ以外にも最下部の3キーがあります。
一般的には「左クリック」「ミドルクリック」「右クリック」として利用されますが、
これを「無変換」「ミドルクリック」「変換」とした上で、
無変換/変換に「IME OFF/ON」を割りあてることでMacキーボードの「英数」「かな」的な動作にします。
左右クリックはFNキーとの同時押下で作動させます。

変則的ですが、私の場合マウスクリックよりも英数/かなの使用頻度の方が圧倒的に高いので、この設定で特に困りません。
Yoda IIも長い間この設定で使っていました。

## Top layer（FNキー押下なし）のキー設定

![shura0.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/162960/e2a64cd5-fd06-013f-e95d-56bd8766cf41.png)

基本はUSキーボードレイアウトを踏襲し、以下のみ変更
- `Ctrl` と `FN1` を入れ替え
- `右クリック` -> `無変換` 
- `左クリック` -> `変換`

※FN1はだいたい左手小指の第二関節で押してます

## FN1 layer（FNキー押下あり）のキー設定

![shura1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/162960/60d1b768-a4f2-9c1d-3966-b1e5319823e5.png)

好みでカスタマイズしています。
FN1 + hjklでvim的に移動できるのが地味に快適です。

# 組み立て

購入したShuraは組み立て済みではなくDIYバージョンにしました。
スイッチは静音と軽さを両立したRedです。
以前のYoda II ではSilverを使っていましたが、軽すぎてtypoが増えた気がします（でも本当に疲れにくくて良かった）。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/162960/06726f07-985c-570e-5856-4050bd2cf67d.jpeg" width="30%">
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/162960/9c56dfd3-ab94-029f-dd8b-9016673cfe75.jpeg" width="30%">

DIYバージョンなので、プリント基盤とスイッチとキーキャップがバラバラで梱包されています。
以下の動画を参考に、基盤にスイッチをぽちぽちはめて、キーキャップをぽちぽちはめれば完成。
スイッチは2本のツメが折れないようにまっすぐ挿さないと不具合の原因なので気をつけます。

https://www.youtube.com/watch?v=TFP30o3EEX8

Hotswapなので自前ではんだ付けする必要はありません。
（※少しだけ1番のプラスドライバーが要ります）

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/162960/659e977e-9fab-07dc-d76f-e4dd960b1a12.jpeg" width="400px">

（※画像は「|」キー用のスイッチをはめ忘れてます）

個体差なのか、Backspaceキーキャップはやや強めに押下すると戻りが悪い不具合があったので手持ちのDSAキーキャップで代用しました。
Shuraのキーキャップ規格はおそらくADAですが、DSAはそれとかなり近い形状です。やや高さが違いますが端っこなので許容範囲とします…

完成したキーボードはこんな感じです。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/162960/205b4028-4d7d-76ac-07ec-499b9a77c3c4.jpeg" width="400px">

# レジストリ設定

目指すキー想定はほとんどがUSキーボードレイアウトですが、USキーボードには「英数」「かな」や「無変換」「変換」がありません。
そこでAXキーボードレイアウトを利用します。
レジストリをいじって、接続されているShuraキーボードをAXレイアウトだとWindowsに認識させます。

> IBM PC/AT互換機用MS-DOSを日本語化するための1方式、AX規格で採用されていた日本語キーボード。
> 現在日本語キーボードの主流となっている106/109配列と比較してより英語キーボードに近いレイアウトになっており、英数キーの配置が通称ASCII配列(106系はJIS配列準拠)である点や、日本語関連キーが少なくシンプルな操作が可能であり、スペースキー周りのレイアウトに余裕がある点、特殊キーの[AX]キーが存在する、などの特徴がある。

[AXキーボードとは - はてな](https://d.hatena.ne.jp/keyword/AX%E3%82%AD%E3%83%BC%E3%83%9C%E3%83%BC%E3%83%89) より引用

AXキーボード配列をwindowsで使う方法については、以下の記事を参考にしました。

https://bsakatu.net/doc/ax-layout-on-windows/

AXキーボード配列を利用するため、レジストリ `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\i8042prt\Parameters` の値を以下のように設定します。

| 名前 | タイプ | 値 |
| --- | --- | --- |
| LayerDriverJPN | REG_SZ | kbdax2.dll |
| OverrideKeyboardIdentifier | REG_SZ | AX_105KEY |
| OverrideKeyboardSubtype | REG_DWORD | 1 |
| OverrideKeyboardtype | REG_DWORD | 7 |

JIS配列の変換/無変換とAX配列の変換/無変換はコードが異なるので、レジストリ `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout` の `Scancode Map` も設定が必要です。

前述の参考記事中では変換/無変換以外にも諸々設定していますが、私の場合は変換/無変換のみで十分なので変更範囲はそこだけにします。

```
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"Scancode Map"=hex:00,00,00,00,\
                   00,00,00,00,\
                   03,00,00,00,\
                   5b,00,79,00,\
                   5a,00,7b,00,\
                   00,00,00,00
```

かいつまんで説明すると以下の通りです。

```
00,00,00,00,  // バージョンは0000
00,00,00,00,  // ヘッダ
03,00,00,00,  // 変更するマップの数(null terminatorを含めて3つ)
5b,00,79,00,  // JISの変換(79)をAXの変換(5b)にする
5a,00,7a,00,  // JISの無変換(7a)をAXの無変換(5a)にする
00,00,00,00   // (null terminator)
```
Scancode Mapの読み方は以下の記事がとてもわかりやすいです。

https://bsakatu.net/doc/scancode-map/

# Shuraの設定

## PIN設定

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/162960/9639f275-0e76-99cf-94c3-c851aa1a499c.jpeg" width="300px">


キーボード裏面のPINの用途は以下の通りです。
- 1,2,3: キー設定profileの指定（3つまで利用できる）
- 4: ミドルキーを「トラックポインタと併用でマウススクロール」「単体での押下でマウスのミドルクリック」として利用する
- 5: マウスホイールの垂直移動方向を逆にする
- 6: USBストレージモードの切り替え（コンフィグファイルを配置するために使う）

ミドルクリックはそこそこ使うので4はonで使用することにします。

## キー設定 

Shuraのキー設定は、Yoda II と同じようにweb configuratorで行います。

https://program.tex.com.tw/shura/

web configuratorでキーを設定し、TEXファイルをダウンロードします。
いちどPCから接続解除したTEX Shuraを、PIN6をonにしてストレージモードで接続して直下にTEXファイルを配置し、PIN6をoffにして、PIN1~3のいずれかをonにして再接続すれば、キー設定完了です。
（※ここはweb configurator自身にわかりやすい説明があるので、見ながら実行すれば大丈夫）

# 変換/無変換をかな/英数にする

私の場合はATOKを使っているので、キーカスタマイズから以下の様に設定します。
Microsoft IMEでも確かWindows 10から同じようなことができたはずです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/162960/71d6ef8f-71fc-a7e6-e8bd-f7def81c7155.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/162960/c677246f-ec9a-18e8-f14d-88d4faa04a2f.png)

以上の設定で、キー想定通りのレイアウトができあがりました。
おつかれさまです。