分離キーボード LY092-MINI 設定

メカニカル分離キーボード [LY092-MINI](http://www.smartyao.com/page930.html) 両手揃いを中国から Taobao 代行を利用して購入した[^1]ので、その簡易レビューとマイ設定を載せる。

[^1]: が、代行を介さず直接購入できるようだったorz

![DSCN0055.jpg](https://qiita-image-store.s3.amazonaws.com/0/45805/813de73e-4400-bf6c-81ed-5e022932f935.jpeg)

左手オンリーは、[Parblo PR200](https://www.amazon.co.jp/dp/B01HTK5GH0) としてAmazon で売ってる。これは値段の上下が激しいが、十分安いと言えるだろう。

![keyboard-layout.png](https://qiita-image-store.s3.amazonaws.com/0/45805/113a6e3a-d3a0-de35-865f-75b3f7ac22af.png)

Taobao では筐体色：黒／白と軸：黒／紅が選択できる。
自分はCherry紅軸をTaobao購入代行を利用して買ったが、手数料送料含めて約13.5k円となった。
間違って白色の物が代行業者（上海）に届いていたので、そのことを指摘したのが月曜の早朝。しかし返品＆送り直しで、結局なんと木曜にこちらに届いたので驚きの早さだった。

## 簡易レビュー
* キーキャップは、全て前方側面プリント。
   * キーキャップの種類は Cherry プロファイル？で、手前から順に R1,R1,R2,R3,R3,R3 となっていた。
      * 左右のスペースキーは特殊なサイズのせいか、別。
   * キーキャップを購入時の参考のため、サイズ表を載せる。

![keyboard-layout(1).png](https://qiita-image-store.s3.amazonaws.com/0/45805/7c848f5f-f355-d810-550d-1258bbcbcb9e.png)

* 両キーボードの左右に USB miniB のソケットが付いているが、外側（左手キーボードでは左側、右手では右側）のソケットのみがPCにつなげられる。
   * 内側のソケットは、左右のキーボードの連結用。
   * 左右両方をPCに繋ぐことも出来るし、片方をPCに繋いで、内側のケーブルで左右を繋いでも機能する。
* キーボードは一定時間操作しないと、スリープ状態に入るようだ。
   * スリープから復帰させ動作するようにするには、何らかのキーを押して微妙に待つ必要がある。
* 付属品する滑り止めが付いた2つの長いネジを、キーボードの四方に装着されてるネジと取り替えることで、キーボードに傾斜を付ける。
   * 取り付け方により、奥／<del>内側</del>[^2]／手前の持ち上げが自由。
* キー配列は[Smartyaoのサイト](http://www.smartyao.com/)の[软件下载のページ](http://www.smartyao.com/page521.html)からダウンロードできる。
   * 「注册」ボタンから登録ページに進み、会員登録する必要がある。
      * 個人情報は適当で良い。
   * 「邮箱/手机号」にメールアドレス、と「密码」にパスワード、「安全问题」に計算結果を入力し、「登录」ボタンでログインする。
      * 「大拇指键盘配置管理程序和说明书下载」のページに行き、「LY092_MINI分体式机械键盘_配置管理程序包」のリンクから管理ソフトウェアをダウンロードできる。
   * ソフトウェアは当然 Mac には対応していない。
      * ダウンロードしたファイルを解凍すると、中国語／英語対応の2つのソフトが入っていたので安心。
   * キーボードの設定は、片方ずつ別々に行う。
      * キーボードの設定を行うときには、キーボードの一番左上のキーを押しつつ、USBケーブルを繋ぐ。
         * 左手キーボードならESC、右手キーボードならF7のキー。
      * 使い方は見て分かるだろうが、「Save To Device」でキーボードに設定を送る必要があることに注意。
   * 両手の全キーを別々に後で Karabiner でリマップするために、次のようにハードウェアマッピングした。

![Left.png](https://qiita-image-store.s3.amazonaws.com/0/45805/a20b137d-5b0f-c49a-b4a8-c7d1fc5479e0.png)
![Right.png](https://qiita-image-store.s3.amazonaws.com/0/45805/08302834-6bda-3899-414e-890534526400.png)

* まとめるとこうなる。
   * ここで Shift_R,Alt_R,Win_R 等を右キーボードに設定してないのは、何故かそれらを設定しても _L として認識されてしまったため。

![keyboard-layout(2).png](https://qiita-image-store.s3.amazonaws.com/0/45805/085fb6f8-b086-ec2a-8f1b-2f96a56d5ab0.png)

これをベースに使いやすいようリマップを行う。

[^2]: 内側を持ち上がるよう足を配置すると、（奥側を持ち上げる）デフォの傾斜ゴムと干渉してがたついてしまった。

## マイ設定
* [Karabiner](https://pqrs.org/osx/karabiner/index.html.ja)を用いて、以下のように設定した。
   * 現在まだ El Capitan なので、Karabiner が使えている。
* 設定は [gitHub](https://github.com/khiri-co/Karabiner-LY092-MINI-Setting) に置いた。
   * 適当に `<include path="{{ENV_HOME}}/github/Karabiner-LY092-MINI-Setting/LY092_MINI_base.xml" />` とでもしてインクルードすれば良い。

### ベースレイヤー 
#### Dvorak
![keyboard-layout(3).png](https://qiita-image-store.s3.amazonaws.com/0/45805/94af0f37-3cb5-8c34-d6da-873f1330fd43.png)

* 普段 Dvorak-QWERTY 配列使いなのでこうなる。
* 例によって、Cmd_L/R は単押しで英数／かなキーへと対応させている。
* カスタム修飾キーとして、Fn_L/R, Mouse, Mirror_L/R, Code を導入した。
   * Fn_L/R - HHKB の Fn キーと同様に、矢印キー等
   * Mouse - マウスのカーソル移動等
   * Mirror_L/R - 片方のキーボードで全キーを押せるよう、キー配列の反転を行う
   * Code - プログラミングによく使う記号を押しやすい位置で打つためのキー
* 一番長いキーはスペースに。
   * スペースキーのすぐ隣ではなく、Mirrorキーを挟んだ位置にコマンド⌘キーを置いたのは、コピー＆ペースト (⌘+C, ⌘+V) 等を行うのに、微妙に違和感が出るため。
   * バッククォート (`) が左右両方にあるのは、標準配置（左側）とHHKBフォロー（右側）。
* Delete キーと Backslash キーは HHKB に倣い交換した。
   * なお、Mac では Delete と Backspace の区別がないので注意。ここの Del は所謂 Backspace である。
      * PC の Delete は Forward Delete と呼ぶ。
   * 小指で Del を押すのが面倒なことがあるので、右手のBキーの隣に Del キーを置いた。
      * しかし B キーと間違えて Del キーを誤爆することが多いので要注意。

#### QWERTY
コマンドやコントロールキーを押しているときは、次のように QWERTY 配列となる。

![keyboard-layout(4).png](https://qiita-image-store.s3.amazonaws.com/0/45805/5b42fc17-628c-45df-9179-2dccc32d24f2.png)

* 従来（Barocco）と比べて、使用頻度の高い ⌘+T がとても打ちやすくなった。

### Fn レイヤー
基本 HHKB 準拠。

#### ver.1
##### Fn_R
![keyboard-layout(5).png](https://qiita-image-store.s3.amazonaws.com/0/45805/aa362a0e-7170-71f5-89ea-b41953b157c9.png)

##### Fn_L
![keyboard-layout(6).png](https://qiita-image-store.s3.amazonaws.com/0/45805/b0afe9fe-b39d-d981-a08b-7e1023edf82f.png)
* 左手の矢印キーを右手のダイヤ形♢ではなくWASDで配置したのは、ダイヤでは微妙にしっくりこないため。
* メディアキーの位置は左右のポジションに合わせてみたが、後で変更するかもしれない。

##### Fn_L + Mirror_L / Fn_R + Mirror_R
![keyboard-layout Fn + Mirror Modes.png](https://qiita-image-store.s3.amazonaws.com/0/45805/92b20e4b-9f3b-0e7e-278a-6bf156fa229d.png)
* ミラーキーの使用により、片手だけでメディアキーへとアクセスできるようにした。

#### ver.2
![keyboard-layout fn v2.png](https://qiita-image-store.s3.amazonaws.com/0/45805/57978c4b-11bc-020b-ab24-8c6aac4c8ca9.png)
* メディアキーの並びを、「高/前 < 大/後」的な順序に則って整列。
   * また Ctrl_L やリターンキーに接するような最大限外側へと移動。
* 最上段のファンクションキー列にコンシューマーキーを並べた。

### ミラーレイヤー
ミラーリングモード。

![keyboard-layout(7).png](https://qiita-image-store.s3.amazonaws.com/0/45805/611f1bb8-02a0-3de3-cae1-1bfc43b04137.png)

* Mirror_L と Mirror_R で左右を区別させているので、左／右のキーボードのみをそれぞれ反転させる。
* 左手でも Return 出来るよう、Tab を Return に対応させた。
* <del>Fn_L/R と Mirror_L/R の併用は現在未設定。</del>

### マウスレイヤー
![keyboard-layout(8).png](https://qiita-image-store.s3.amazonaws.com/0/45805/a4449a51-dd91-9663-5e81-ef22bacd18f1.png)

* Mouse キーには左右の区別はない。
   * 左手でマウスカーソルを動かしつつ、右手でクリック操作することが
* Mouse キーのダブルクリックで、マウスレイヤーのロックを行う。
   * `<lastreleasedphysicalkey_only>`, `<lastpressedphysicalkey_only>`, `<elapsedtimesincelastreleased_lessthan>`, `<elapsedtimesincelastpressed_lessthan>` の併用で実装した。
   * 再度 Mouse キーを押すことで、ロックは解除される。

```xml:LY092_MINI_mouse.xml
<!-- for Modifier -->
<block>
  <block><!-- Double Mouse Key down To Mouse-Lock -->
    <lastreleasedphysicalkey_only>KeyCode::COMMAND_L</lastreleasedphysicalkey_only>
    <lastpressedphysicalkey_only>KeyCode::COMMAND_L</lastpressedphysicalkey_only>
    <elapsedtimesincelastreleased_lessthan>Millisecond::RawValue::300</elapsedtimesincelastreleased_lessthan>
    <elapsedtimesincelastpressed_lessthan>Millisecond::RawValue::300</elapsedtimesincelastpressed_lessthan>
    <autogen>__KeyToKey__ KeyCode::COMMAND_L, KeyCode::VK_LOCK_LYMINI_MOUSE_KEY_MODE_FORCE_ON</autogen>
  </block>
  <block><!-- Double Mouse Key down To Mouse-Lock -->
    <lastreleasedphysicalkey_only>KeyCode::KEYPAD_6</lastreleasedphysicalkey_only>
    <lastpressedphysicalkey_only>KeyCode::KEYPAD_6</lastpressedphysicalkey_only>
    <elapsedtimesincelastreleased_lessthan>Millisecond::RawValue::300</elapsedtimesincelastreleased_lessthan>
    <elapsedtimesincelastpressed_lessthan>Millisecond::RawValue::300</elapsedtimesincelastpressed_lessthan>
    <autogen>__KeyToKey__ KeyCode::KEYPAD_6, KeyCode::VK_LOCK_LYMINI_MOUSE_KEY_MODE_FORCE_ON</autogen>
  </block>
  <!-- When Mouse-Lock is on, Mouse Key down offs the Lock -->
  <autogen>__KeyToKey__ KeyCode::COMMAND_L, {{KC_MOUSE}}, KeyCode::VK_LOCK_LYMINI_MOUSE_KEY_MODE_FORCE_OFF, {{KC_MOUSE}}</autogen>
  <autogen>__KeyToKey__ KeyCode::KEYPAD_6, {{KC_MOUSE}}, KeyCode::VK_LOCK_LYMINI_MOUSE_KEY_MODE_FORCE_OFF, {{KC_MOUSE}}</autogen>
  
  <!-- basic -->
  <autogen>__KeyToKey__ KeyCode::COMMAND_L, {{KC_MOUSE}}</autogen>
  <autogen>__KeyToKey__ KeyCode::KEYPAD_6, {{KC_MOUSE}}</autogen>
</block>
```

### コードレイヤー
#### ver.1
![keyboard-layout Code Mode.png](https://qiita-image-store.s3.amazonaws.com/0/45805/3c3ab7de-2a24-f7ee-1f3a-022c34255c35.png)

* マウスレイヤーと同じく、コードレイヤーも Code キーのダブルクリックでロックされる。![Lock.png](https://qiita-image-store.s3.amazonaws.com/0/45805/3af7bc72-2305-d609-68b6-a52e37228be4.png)

* 押しにくい＆誤爆しやすい＆覚えにくい、Shift+数字キーを左側に配置。
   * Shift+9 の位置には、（バッククォートが1の隣にあるので）Shift+\`の ~
* 左右括弧を並べて配置。
* 両ブラケット`[]`の隣にバックスラッシュ`\`があるのは、ベースレイヤー (Dvorak) に合わせて。
* 余った位置に、遠いバッククォート<code>`</code>を近くに来るよう配置。
* コードレイヤーに無い記号については、
   * `'",<.>;:` - 普通に左手 (+Shift) で打てる。
   * `=+/?-_` - Mirror_L (+Shift) で打てる。
* 右手には折角だからテンキーを置いた。
   * 左下の Del は Clear に変えた。
   * ついでとして、テンキーのマイナス`-`+Shift でアンダーライン`_`が入力できるようにもした。
      * アンダーラインが数字のセパレータとして機能する言語があるため。

##### コードレイヤー + ミラー v1
![keyboard-layout Code + Mirror_L Mode.png](https://qiita-image-store.s3.amazonaws.com/0/45805/d647fe16-754d-9abe-fa0a-53858bde6213.png)

* 左手ミラーキー (Mirror_L) により、左手でもテンキーを押せるようにした。
   * Code + Mirr_L + other の同時押しは大変だが、Code キーをロックすれば良い。
   * この左手の様に、右手もホームポジションで数字キーを打てるようにすべきかも。

#### ver.2
![keyboard-layout Code v2.png](https://qiita-image-store.s3.amazonaws.com/0/45805/7cc77980-f9e6-8627-f053-6319cb488f69.png)

* ホームポジションに指を置いたまま4.5.6と打てるように、右手のテンキーを1つずらした。
   * これで Mirror_R キーが空いたので、Code + Mirror_R モードも設定した。
* 左手のコードレイヤーの記号を、Code + Mirror_L のテンキー配列＋Shiftとなるように再配置した。
   * 右手の +Mirror_R モードでは、残念ながらスペースの関係上、テンキー配列とコードキーの配列を一致させることが出来なかった。
* テンキーでSpaceキーがEnterキーと化しているので、新しくSpaceキーを配置。
   * おまけでアンダースコアキーも追加。

## まとめ（チートシート）
* ver.2 の配列まとめ。

![keyboard-layout (LY092-MINI) Cheatsheet.png](https://qiita-image-store.s3.amazonaws.com/0/45805/d332db9b-888a-ef33-b871-cf7f1f01c11b.png)

* 凡例がこちら
![keyboard-layout 凡例.png](https://qiita-image-store.s3.amazonaws.com/0/45805/52d77e79-89e9-82bc-16e0-e76487bb97ef.png)
   * 斜体がミラーモードを意味する。
      * 最上段左が Dvorak モードのキー
      * 最上段左が Dvorak + Mirror のキー
      * 中段右が Code モードのキー
      * 中段左が Code + Mirror のキー
      * 最下段左の黒色キーは、Fn_L/R モードでの違いが無いキー
         * 最下段右の黒色キーは、Fn_L/R + Mirror のキー
      * 最下段<font color="#008800">緑色</font>（左）のキーは、Fn_L モードのキー
      * 最下段<font color="#0066ff">青色</font>（右）のキーは、Fn_R モードのキー
         * <font color="#008800">緑色</font>／<font color="#0066ff">青色</font>のキーは、Mirror_L/R で交換する
      * 最下段真ん中のキーは Mouse モードのキー
      * 前方側面左は QWERTY モードのキー
      * 前方側面右は QWERTY + Mirror のキー