FPSゲーム用チルトグリップ対応ホイール付き左手デバイスを手配線で作りました。自キ制作レポートです。
21キー+ホイール+ホイールクリックのレイアウトで自作キーボードを制作しました。
設計方針
左手デバイスといえばRazerやAzeronが有名だと思います。それらの左手デバイスに触発され制作をしました。
EC2等左右非対称の自然に握れるマウスがあるのなら左手も同様なのではないか、傾斜をつけチルトグリップに対応させてみる。
キーボードはロウスタッガードですが手に合わせたキーレイアウトを採用し自然に指を配置できるようにしてみる。
販売されている左手デバイスは親指にアナログスティックを配置したものが多いですが今回マウスホイールを配置してみる。背景としてBFVでスライディング・パルクールをマウスホイールに割り当てるとよいのですができればマウスは左右クリックに指を置いておきたい。なので左手に割り当てようと思ったわけです。
これらのことから 21キー+ホイール+ホイールクリックの左手デバイスを制作することにしました。ダンボールで試しに作ってみていい具合の角度等を模索し 制作に入りました。
出来上がり
左が低くて右が高くなっておりチルトグリップに対応しています。キーボードだと下に押し下げる感じですが、握りこむように持てて安定感があります。
手前が低くて奥が高く、また上の段と下の段を折り曲げ傾斜をつけることで指のみでアクセスしやすくなっています。単純ですがかなり効果は高く押しやすくなりました。キーボードだとZが非常に押しにくいと感じていたのですが指の動線にフィットし解消されました。
親指でほぼSpaceキーから指を動かさずホイール操作を行うことができます。
材料
マイコン | Pro Micro- 遊舎工房 |
ダイオード | 1SS178-秋月電子通商 |
配線用ワイヤ | はんだメッキ線 0.6mm-秋月電子通商 |
耐熱電子ワイヤー 外径1.22mm-秋月電子通商 | |
キースイッチ | EPOMAKER AKKO (Vintage White)-Amazon |
キーキャップ | MIHIYIRY PBT キーキャップ-Amazon |
ホイール周り | glorious Model O-から流用 |
プレート | PC板 2mm厚 |
パームレスト | 紙粘土、グリップテープ |
キーレイアウト
Keyboard Layout Editor (keyboard-layout-editor.com)にて作成しました。
赤線の部分は折り曲げ傾斜がつけられています。手に合わせてキー配置を微調整しました。
組み立て
プレート
トッププレート、ボトムプレート、サムプレートの3枚 についてPC板をアクリルカッターで切り出した
キースイッチ用の穴もアクリルカッターで開ける予定だったが気が遠くなったのではんだごてで溶かし四角く穴をあけた。当然部屋は樹脂が溶けた異臭がひどかった。穴の淵には溶けた樹脂がたまっていてペンチで取り除く必要があった。最後にやすりで削り整えた。もうやりたくない。
折り曲げもはんだごてで熱を加えて行った。
配線
キースイッチ、マイクロスイッチ、ホイールエンコーダをそれぞれはめこみボンドで固定した。
ダイオードとワイヤをはんだ付けし手配線。
配線が汚いしpromicroは固定されていない。とても見栄えが悪いが使用する分には問題ない。
プレート組み立て
それぞれのパーツをねじで留め固定した。
パームレスト
紙粘土を成形し乾燥後グリップテープを張り付けた。
こちらも見栄えは悪いが多少弾力もありグリップ力もあるため性能としては十分。
Firmware
config.h
# pragma once #include “config_common.h” #define VENDOR_ID 0xFEED #define PRODUCT_ID 0x0001 #define DEVICE_VER 0x0001 #define MANUFACTURER tsuiha #define PRODUCT leftdevice01 #define MATRIX_ROWS 4 #define MATRIX_COLS 6 #define ENCODERS_PAD_A { D3 } #define ENCODERS_PAD_B { D2 } #define ENCODER_RESOLUTION 4 #define MATRIX_ROW_PINS { B1, D4, B4, E6 } #define MATRIX_COL_PINS { B6, B2, F7, C6, D7, B5 } #define DIODE_DIRECTION COL2ROW |
黄色線で示した部分が今回ホイールを使用するのでその分となります。他は行列の指定です。
leftdevice01.h
#pragma once #include “quantum.h” #define LAYOUT( \ k01, k02, k03, k04, \ k10, k11, k12, k13, k14, k15, \ k20, k21, k22, k23, k24, k25, \ k30, k31, k32, k33, k34, k35 \ ) { \ { KC_NO, k01, k02, k03, k04, KC_NO}, \ { k10 , k11, k12, k13, k14, k15 }, \ { k20 , k21, k22, k23, k24, k25 }, \ { k30 , k31, k32, k33, k34, k35 } \ } |
こんな感じの配線にしました。
keymap.c
#include QMK_KEYBOARD_H #define BASE 0 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT( KC_1 ,KC_2 ,KC_3 ,KC_4 , \ KC_TAB ,KC_Q ,KC_W ,KC_E ,KC_R , KC_H , \ KC_LSHIFT ,KC_A ,KC_S ,KC_D ,KC_F , KC_B , \ KC_LCTRL ,KC_Z ,KC_X ,KC_C ,KC_SPACE ,KC_V \ ), }; bool encoder_update_user(uint8_t index, bool clockwise) { if (index == 0) { /*First encoder */ if (clockwise) { tap_code(KC_J); } else { tap_code(KC_K); } } else if (index == 1) { /*Second encoder */ if (clockwise) { tap_code(KC_DOWN); } else { tap_code(KC_UP); } } return true; } |
黄色線がエンコーダの部分です。Second encoderについてはよくわかりません。公式ドキュメントのコピペです。
JとKにホイールを割り当ててありますが当然普通にマウスホイールを割り当てることもできます。
反省点
見た目はよろしくないが、使用感は非常に満足のいくものだった。
PC板の加工についてだがこれがよくなかった。もっと簡単な方法を検討する必要がある。見立てが甘かったのだが、やっていてほんとに嫌になった。
・ホットナイフを使うのはどうか、はんだごてと大差ないような気もするが多少ましだろうか。
・折り曲げ部は折り曲げるのでなくL字の金具を使うのもいいかもしれない。
・アクリルカットを注文するのはどうだろうか。折り曲げ箇所が多く難がある気がする。
・3Dプリンタを使用するのがよいかと安直に思うのでそのうち導入したい。
左手デバイスというのだからアナログスティックを搭載するのもよいと思う。親指でホイール
操作するのはなかなか快適なのでアナログスティックにこだわる必要はない気もする。
キー配列は手にはあっていたが数字キーが少し指から遠かった。手に合っているのもよいがキー密度を上げ指の移動量を減らす方が重要かもしれない。あるいはazeronのようにマイクロスイッチを用いることで省スペース化し密度を上げるのもいいかもしれない。
本体、パームレストともに見栄えよく高クオリティなものを作りたい。
机の上にキーボードを一つしか置きたくないというようなことがなければ、導入しない手はないというほどには快適であった。チルトグリップなのは好みがわかれるところだが、そうでないものを設計し使用すればよい。
個人的には左右対象マウスを使用するときは使いやすかったが、非対称マウスを使用するときはキーボードの方が使用感がよかった。平面タイプの左手デバイスを制作するのもよいかもしれない。
Razerは1万円、Azeronは2万円とキーボード同等の値段がするが今回制作したものは材料費3000円程度であり格安で最高の快適さを得られた。
コメント