メモ帳DPA

ぐぐってあまり引っかからないような何かがあったら書いたりする

テンキーで無理やり試すワイヤレス分割格子配列キーボード

前々から自作キーボードは気になってはいたんだけど、有線であることが引っかかって結局ずっと購入に踏み切れていなかった。
ベッドで使う時に体の左右に置きたいのと、差し替え無しで机にも移動したいので、欲しいのは分割でワイヤレスのキーボードなんだけど、ワイヤレスの部分が自作だとネックだった。

ところが今はBLE Micro Pro というものがあったようで、基盤を置き換えれば自作キーボードをBluetooth化出来るとのこと。かなり理想的だったのと、予約注文で2ヶ月ちょっとくらい待つようだった(当時)ので、見つけた勢いで何も考えずに即座にとりあえず2枚ポチった。
(redditとか見ると他の無線化例もいくつかあったがどれも売ってなかった)
github.com

最大の課題だった点が解消できそうなので、これで安心してキーボード選びに入れるようになった。基盤買う前に決めろよという感じもするが買っちゃったものはしょうない。

デザインや省スペース性でHelixが第一候補になったんだけど、格子配列を導入するにあたって、普通の配列と切り替えるのにどれくらいの違和感があるのかということが今度は気になってきた。 

世の中のノートPCやコンソールは格子配列じゃないので、一生格子配列しか使わんという訳にはいかない気がするし、結局両方の配列に付き合っていく必要がありそうに思える。特殊配列使ってる人たちがその辺とどう向き合ってるのか大体なにも書かれてないのであまりよくわからなかった。

それなりの手間と金を突っ込んで結局やっぱ使いづらかったってなるとかなり悲しいので、なかなか踏ん切りがつかなかった。

テンキー

なかなかポチれないまま思考がぐるぐるしているうち、「テンキーって格子配列だし2つ並べればそれはもう分割キーボードでは?」という意識の低い閃きが降りてきた。

基本的なテンキーだと5行4列なので少なすぎて若干厳しそうだけど、ボタンを拡張してある6行4列のテンキーなんかだと、Let's Splitとだいたい同等(ただし2マス使ってるキーの分は少ない)のキー数がある。
調べたら6行5列かつおまけにワイヤレスのものが見つかった。「0」「Enter」が倍のキー幅であることと一番端はキーが狭いことが気になったが、ここまでのキー数の品は他に無いので、妥協してとりあえず買ってみることにした。

ちなみに、電池横にあった特に使われない謎のくぼみが気になって調べてみたら、元はレシーバー式だったミヨシのテンキーbluetoothに変えて売ってる品っぽい。外装がOEM的なものなのか金型流出的なものなのかは謎。

f:id:de0:20181209175049j:plain
使い方は単に90度回して2台置くだけ。

キーアサイン方法

ファームウェアの修正は不可能なので全部ソフトウェアで制御することになる。
もともとキー配列弄りはかなり前からAutoHotkeyを使っていたんだけど、複数のテンキーが接続されると素のAHKではデバイス単位での制御が出来ない。
なので、とりあえずキー割り当てはhidkeysequenceを使い、モディファイアは引き続きAutohotkeyを使用して無理やり割り当てた。

www54.atwiki.jp

hidkeysequenceでは電卓キーや00キーのような特殊キーには対応していないので、割当はAutohotkey側でしか出来ず、左右別々の設定は出来なかった。また、"$"と”("と")"はShiftキーとの同時押しで送られてくる影響で、同時押しの制御の効かないHidKeySequenceではアサイン後のShiftとの同時押しがちゃんと動作してくれなかった。ずっと使い続けるとは思ってないのでそのまま妥協した。

この辺の問題は、hidkeysequenceではなくAHKHIDのようなものを使い、全てAutohotkey側で割り当てれば多分まとめて解決する気はする。(試してはいない)
github.com

キーマップ(テンキーx2)

キー配列は、もともとAutohotkeyで調整した以下のようなキー配列を大分前から使っていた。(オレンジ:キー変更、緑/紫:元のキーとの同時押し)
左手には主に頻出のショートカットキーを割り当て、右手はマウスとの持ち替えを意識して移動系を割り当てているのと、Space周りの無駄キーを再利用している。
f:id:de0:20181209182416j:plain
※元ファンクションキーと右Shift周りにある謎のキー名は、周辺の物理的な装置(介護ベッド、照明、エアコン昇降デスク風呂)の制御用です

これをベースに、キーの足りない記号を入れた以外は大体同じ配置にした以下のような配列を試した。
f:id:de0:20181209183058j:plain
また、これを元に1-3行目を1つずらしたりするパターンも試した。

感想

職場のノートPCは普通の配列のまま、しばらく自宅では格子を使ってみた際の感想を以下に書きます。(長いので読み飛ばしてもよい)

  • 文字(左手)
    • Zキーの位置がきつい
      • "za"を"xa"にtypoしがち
      • 入力の運指は薬指-子指なんだけど、ZがAの真下になると窮屈
      • 小薬や子子にしたらしたで普通のキーボードできつそう
    • 割と出てくる"ce"と"cd"も同様にきつい
    • ASDFGとZXCVBは一つズレていたほうが押しやすいかも
      • Bは0.5U分くらい遠くはなる
      • だが運指差分のあるZCの違和感に比べると軽微
      • A行とZ行で指の斜め移動が発生するようになるがZXCVBの運指は薬薬人人人だったので影響はXキーくらい
      • 普通の人は子薬中人人なんだろうか
      • Xはあんまり使わないこともあって中指でも割と違和感なくいける
    • QWERTとASDFGは縦に同位置でも違和感なし
      • よくある同縦軸入力は"de"くらいだけど元々両方中指だった
  • 文字(右手)
    • 右手側文字入力は特に問題なさそう
    • 下段のNもMも全部人差し指だった
    • 非分割時の腕配置は内向きなので右手側は元々ズレと指移動の方向が合ってて差分が少ないのかも
    • キーキャップが回転しているだけで元の位置関係は実質Column-staggeredに近そう
    • 端が記号で主要キーが内側に寄ってるからってのもあるかも
    • 利き手分の精度差もありそう
  • 数字
    • QWERTの上に12345があると普段の感覚と位置がずれてる
      • 最初はこの配置で試したがtypoが頻発した
      • 普通のキー配置的には23456...の横位置はZXCVB...と同じくらい
    • 6も左手にほしい
      • 右手で押すのが主流なんだろうか
      • 左手側のほうが近いんだけど分割だとなぜか大体右にある
    • 1-6と7-9で割ったほうがよさそう
    • 右手が6スタートだと格子の場合ハイフンも遠い
  • 記号
    • 記号の位置がかなり変わるので打つたびに手が止まる
    • 数字キーを封印したパターンも試したが更に厳しい
    • 自作だと基本的に英語キートップなので日本語配列だと印字と記号も合わない
    • "\"は重複している、Shift+0は空いている
      • Shift+右上"\"の"|"をShift+0に持ってくると1キー減らせる
      • パイプの位置を覚え直す必要はある
  • レイヤー切り替え
    • これは特に違和感なし
      • AutoHotKeyでかなり前から使って慣れてただけではある
    • だったら記号も慣れで解決できそうな気はしないでもない
  • 全体
    • ズレの有無によるキー自体の押しづらさとかは特に無さそう
    • ただし運指が変わる箇所はかなり気になる(音ゲー脳なので外れ配置に敏感すぎるだけかもしれない)

この辺の内容はかなり人によるだろうけど、実際買う前にある程度確認できたのはそこそこでかいと思う。

結果

配列の差分を気にするようだったら、単に格子でない普通の配列のキーボードを買えば完全に解決するはずなんだけど、以下の理想を全部満たしかつRow-Staggeredであるキットや製品はざっと調べた限り見つからなかった。(あったらぜひ教えてください)
初手でフルに自作するのは厳しそうだし、既存品の完成度を超えるにはかなりハードルが高い。薄さまで考え出すと完全に勝ち目がない。

ぼくのかんがえたさいきょうのきーぼーど
  • 左右分割
  • ワイヤレス(惜しい:Koolertron
  • 再下段NMカンマの下に3キー以上(かなり惜しい:Quefrency
  • 最下段CVBの下に2キー以上(惜しい:Handjoy 逍遥王座K3 x2台)
  • 数値キーあり(惜しい:zinc
  • 6まで左手(惜しい:mint60
  • なるべく薄いとよい(せっかく小さいのにパームレストは嫌)
  • 日本語配列(ソフト側で出来るので重要度低)
  • キーマップ可能(ソフト側で出来るがFnキーが良位置にあるのは駄目)
  • 赤軸か茶軸だと嬉しい
  • キー数カツカツに切り詰めなくていいがなるべく小さいほうがよい

格子配列でも運指差分だけどうにかすれば普通に使えることが分かったので、Helixを手に入れて以下の配列にした。

キーマップ(helix)

右手側とは違い、普通のキーボードの左手側はズレの方向と指の移動方向が合っていない。標準的な格子配列のように単に元の斜め配列通り揃えるのは、移動距離は小さくなるけど、その分左手側の上下段の運指が混乱するので、あまり好きになれなそうだった。

慣れで格子側に矯正すると今度は戻れなくなりそうだし、完全に格子だけ使う覚悟はまだ無いので、数値行とZXCV行を1つずらしてキー側で元の運指と合わせてみた。普通の格子で慣れた時に比べて1とBだけは遠くなるが、そこは慣れなくていいこととのトレードオフなので仕方ない。
f:id:de0:20181213190631j:plain

右側を反転させたところ、helix特有のおまけの2キーが左右ともかなり丁度いい感じのポジションに来てくれて、"]"以外はうまいこと収まった。
"]"については、”["を押したら後ろも自動補完するようにAutoHotkeyで設定しているので無くても困ってはいないが、全然使われないAdjustの位置に入れたり、"|"を0キーに詰めて空いた所に入れてもいいかもしれない。

なお、上下反転させるとLEDの位置も上下逆になるので、キーの印字はちゃんと光らなくなる。(普段全く光らせてないので別に問題ない)
f:id:de0:20181214194043j:plain

最下行両端の3キーとZの左とBの下は空いているんだけど、いい感じの割当が思いつかないので仮置きしている。

おわりに

思ったよりはテンキーでもちゃんと使えた。マッピングが若干面倒だけど、そこそこ良い位置で2マス使ってるキーがあることを妥協できるなら、テンキーだけでやっていくという選択肢も無くはないかもしれない。

今回買ったテンキーだとキータッチがペラペラだったり端のキーが小さかったりする不満はあったけど、一列減らすか有線にすると選択肢はかなり豊富になり、最初からCherryスイッチ各種付いているタイプや、自作じゃ難しい静電容量式のタイプもあったりする。
ちなみに、テンキー以外の選択肢としてはこういう製品もあるようで、単に2つ買うだけでも手軽にかなりそれっぽい形になりそうに見える。

常用までしないにせよ、とりあえず手軽に試してみるための取っ掛かりの一つの手としてはテンキーでもいいんじゃないかと思います。安いし。

試した末結局Helix買ってちゃんと使えて満足しているので、BLE Micro Proの到着が楽しみです。

adventar.org
この記事は謎の中華テンキー二枚とhelixで書きました。

f:id:de0:20181214194254j:plain
(机がかなり広くなってうれしい)


※追記:その後無線化出来た
de0.hatenablog.com


配列抜粋

  [_BASE] = LAYOUT( \
    KC_1,    KC_2,       KC_3,    KC_4,    KC_5,    KC_6,                               KC_RGHT, KC_DOWN, KC_LEFT, JP_ZHTG, KC_ENT,  LT(_LOWER,KC_SPC), \
    KC_TAB,  KC_Q,       KC_W,    KC_E,    KC_R,    KC_T,                               KC_RO,   KC_SLSH, KC_DOT,  KC_COMM, KC_M,    KC_N, \
    KC_BSPC, KC_A,       KC_S,    KC_D,    KC_F,    KC_G,                               JP_COLN, JP_SCLN, KC_L,    KC_K,    KC_J,    KC_H, \
    KC_LSFT, KC_RSFT,    KC_Z,    KC_X,    KC_C,    KC_V,               KC_B,  JP_LBRC, JP_AT,   KC_P,    KC_O,    KC_I,    KC_U,    KC_Y, \
    KC_LCTL, KC_F24,  KC_LGUI, KC_LALT, KC_LCTL, LT(_LOWER,KC_SPC),   KC_ENT,  KC_JYEN, KC_EQL,  KC_MINS, KC_0,    KC_9,    KC_8,    KC_7  \
    ),
  [_LOWER] = LAYOUT( \ 
    KC_F1,   KC_F2,        KC_F3,       KC_F4,      KC_F5,        KC_F6,                               _______,   _______,    _______,       _______,       _______,       _______, \
    _______, LSFT(KC_TAB), LALT(KC_F4), KC_ESC,     LALT(KC_TAB), KC_TAB,                              TO(_BASE), TO(_RAISE), LALT(KC_RGHT), LALT(KC_LEFT), KC_MS_BTN1,    LCTL(KC_TAB), \
    _______, LCTL(KC_A),   LCTL(KC_S),  KC_DEL,     KC_F2,        KC_F23,                              KC_WH_D,   KC_PGDN,    KC_RGHT,       KC_DOWN,       KC_LEFT,       LCTL(LSFT(KC_TAB)), \
    _______, _______,      LCTL(KC_Z),  LCTL(KC_X), LCTL(KC_C),   LCTL(KC_V),   KC_SPC,   MO(_ADJUST), KC_WH_U,   KC_PGUP,    LCTL(KC_RGHT), KC_UP,         LCTL(KC_LEFT), LCTL(KC_Y), \
    _______, _______,      _______,     _______,    _______,      _______,      _______,  KC_PSCREEN,  KC_F12,    KC_F11,     KC_F10,        KC_F9,         KC_F8,         KC_F7  \
    ),
  [_RAISE] = LAYOUT( \
    _______, _______, _______, _______, _______, _______,                   _______, _______, _______, _______, _______, _______, \
    _______, _______, _______, _______, _______, _______,                 TO(_BASE), KC_UP,   _______, _______, _______, _______, \
    _______, _______, _______, _______, _______, _______,                   _______, _______, _______, _______, _______, _______, \
    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______  \
    ),

※ランチャ起動と機器操作関連は適当なFキー充ててソフト側で制御