脱Karabiner-Elements。Ultimate Hacking Keyboard (UHK) がなかなか良い

Ultimate Hacking Keyboardというキーボードを買いました。
https://ultimatehackingkeyboard.com

先天的な問題で、デフォルトのキーマッピングでは死ぬしかない自分のニーズにほぼマッチした、なかなか良いキーボードだったので紹介します。

ちなみに、この次の記事、[完全な脱Karabiner成る。続Ultimate Hacking Keyboard (UHK) がなかなか良い。](https://qiita.com/AngryMiddleAgedMan/items/15e2a9b24f0a52641b7e)で改良してさらに打ちやすくなりました。

## 要するに何が良かったか
- 一度キーマップを設定すれば、キーボード・USB周りの動作が正常である限り、どこでも動く。
    - OSが何であろうと動く。
    - OSがアップデートされても心配ない。
- キーマッピングがGUIで完結する。
- キーボードが左右分割型で、Spaceキーを押す指を矯正できる。（くっつけることもできる）
- キーの重さやキーボードの色が購入時に選べる。


## 何が問題だったか
- 生まれつき、左小指が薬指側へひどく湾曲していて、無理してタイプして、慢性的な腱鞘炎だった。
- それもあって、Karabiner（及びその後継のKarabiner-elements）でキーマップを大きく変更して使っていた。
- 別の箇所に負担がかかるようになり、結局また腱鞘炎になった。
- KarabinerはWindowsやLinuxには対応していない。
- ロックインの不安。数年前、KarabinerがmacOSのアップデートによって動かなくなって数ヵ月困ったことがあり、今後も同様の不安がある。
- OS側で設定するものなので、入力デバイスごとにちょこちょこ変更があり設定ファイルが肥大化。macbook proのキーボードではこのマッピング、HHKBでは一部のキーを別のマッピング、というような感じで。
- HHKBを1年間使ってみたが、押し心地は良かったものの相変わらず手首が窮屈だった。左右分離型が欲しかった。

## なぜUHKを試そうと思ったのか
- OS側ではなく、キーボード側でキーマッピングできる。
- キーボードが左右分割でき、手首が比較的自由。
- それほど場所を取らなさそう。
- キーの硬さや色、キーラベルが選べる。
- トラックパッドやトラックボールなど、アタッチメントモジュールをつけてカスタマイズできる（まだ開発中らしいけど）

## 到着
注文してからちょうど2週間で届いた。ハンガリーからDHLで来た。
![IMG_20190913_154435.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/115243/bb140b1b-b51f-9dc9-7d7b-ee1799560104.jpeg)

大きさはHHKBとほぼ同じ。横幅はUHKのほうが1cmほど小さく、縦はLEDの出っ張りの分UHKのほうが大きい。重さは、HHKBが500g強なのに対し、UHKは600g強。

## 組み立てと設定
メッセージカードが入っているがマニュアルは入っていない。特につまづきそうなところはないが、何かわからなかったらここを見れば良いと思う。
https://ultimatehackingkeyboard.com/start

キーボード設定用のGUIが用意されているので、https://ultimatehackingkeyboard.com/start/agent または https://github.com/UltimateHackingKeyboard/agent からインストールする。

本体を取り出すと、左右繋がっているが、外側に向かって引っ張ると分離できる。

足のチルトの付け方はLPの動画見れば何となくわかる。 https://ultimatehackingkeyboard.com/

左右のキーボードをケーブルでつなぎ、USBケーブルを右キーボードの裏とコンピュータにつなぐ。

GUIを起動し、ポチポチ設定する。

ちなみに、キーボード本体左上の赤いLEDの文字が現在アクティブになっているキーマッピングの略称（任意のアルファベット3文字で設定可能）

## 設定してみた感想（Mac）
#### 良いところ
- 設定がGUIで完結する。
  巨大なJSONやXMLを管理する必要がないので楽。
- マクロが設定できる。

#### もう少しなところ（特にKarabinerと比べて）
- ~~複雑な設定ができない。例えば、あるキーAを単独で押した場合はaを入力して、Aを押しっぱなしにすると修飾キーになる、というようなことはできない。実装予定もないらしい。自前で実装しようと思っても結構大変そう。~~
**追記: 簡単にできました**
https://qiita.com/AngryMiddleAgedMan/items/15e2a9b24f0a52641b7e

- 自前の修飾キー (UHKではlayerと呼ばれている) は4つしかなく、追加できない。こちらについては、Karabinerのような自由度はないけど、左右のfnキーを別のlayerとして扱えるようにすることで（現状、GUIからは設定できないので、やるとしたら自前で）、いくつかlayerを増やすことはできそう。
ただ、そんなにたくさんlayer要るのか、使いこなせるのか、と思うので、大きな短所ではない。

## どういう設定になったか
使いつつ修正していく予定だけど、とりあえずこんな感じになった。
#### 基本
**追記: 見落としていた機能を利用したことによって、以下のキーマップより良いものになりました。次の記事で現在のキーマップを書いてます->**
https://qiita.com/AngryMiddleAgedMan/items/15e2a9b24f0a52641b7e#%E5%A4%89%E6%9B%B4%E5%BE%8C%E3%81%AE%E5%9F%BA%E6%9C%AC%E3%81%AE%E3%82%AD%E3%83%BC%E3%83%9E%E3%83%83%E3%83%94%E3%83%B3%E3%82%B0
- F1 - brightness+, F2 - brightness-, F3 - full screenshot, F4 - partial screenshot
- Mouseの下のマークは2度押しでMouseモードにロックされる。
- returnの位置に置いたescape+eisuuはマクロ。vimでescapeした際に必ず英字入力になるよう。

<img width="1010" alt="Screenshot 2019-09-13 23.26.58.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/115243/3208477e-59b9-fdba-fc4e-8cf4a1d08fba.png">

**追記: 見落としていた機能を利用して問題を解消できたため、以下の対処は必要なくなりました。**
~~#### もう少しなところについての対処
- space -> space | shift はとりあえず諦めた。親指付近にshiftがあるのがベストなので、開発中のモジュールがリリースされたら購入して取り付けたい。
- 英数 -> 英数 | 数字用修飾キー は左エッジの部分のキーに`Lang2`を割り当て、modeキーを数字用修飾キーとして使った。操作感があまり変わらず良い。
- かな -> かな | 記号用修飾キー は右エッジの部分のキーに`Lang1`を割り当て、fnキーを記号用修飾キー として使った。操作感があまり変わらず良い。~~

#### modキー押しっぱなし
- mod + a,s,d,f,g,h,k,l,; -> 1,2,3,4,5,6,7,8,9,0
- `T` - back`T`ick, `Y` - `Y`en, `P` - `P`lus, `C` - `C`olon, `B` - `B`racket, `N` - ただBの隣だから, `M` - `M`inus
- Karabinerでもずっとこのような配置で使っていて、慣れるとなかなか速い。
<img width="1004" alt="Screenshot 2019-09-13 23.26.16.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/115243/c3cd9ca0-000e-d954-690f-08a713671ddc.png">

#### fnキー押しっぱなし
- fn + a,s,d,f,g,h,k,l -> !,",#,$,%,&,',(,)
- `E` - `E`qual, `T` - `T`ilde, `Y` - `¥`のshift修飾, `U` - `U`nderscore, `O` - 丸いから`@`, `P` - `P`ower, `C` - semi`C`olon, `B` - curly `B`race, `N` - ただBの隣だから, `M` - `M`ultiplication, `/` - `\`
- `WIN`はWindows用に設定したキーマッピングへの切り替え
<img width="1005" alt="Screenshot 2019-09-14 01.41.52.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/115243/aea69265-15c5-08f7-4b37-aac448881b62.png">

#### mouseキー押しっぱなし
- スクロールが上下左右逆になっているのは、Macのスクロールの挙動を上下左右逆にしているため。
<img width="1010" alt="Screenshot 2019-09-13 23.30.07.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/115243/901d9a6e-9d36-8533-0741-d68e40435f5d.png">

## まとめ
- かなり打ちやすくなり満足してます。仕事用と故障時の予備も兼ねてもう一個注文する予定。
- 今までのマッピングと全く同じというわけにはいかなかったので、記事・コードを無駄にたくさん書いたり、[typing.io](https://typing.io/)で打ってみたりして慣らしてます。
- OSSなのが良いところ。GUIもElectronで作られているので、比較的いじりやすそうです。
- [Matzのツイート](https://twitter.com/yukihiro_matz/status/1173218454985330688)で見かけた[DUMANG modular mechanical keyboard](https://itnews.org/news_resources/75191)も気になりますが、まだ発展途上ですし、 UHKで満足しそう。