Keyball39(分割 + 39キー + トラックボール)向けに、日常使いを徹底的に最適化したカスタムファームウェアです。
本リポジトリは Yowkees/keyball のフォークです。カスタムキーマップは qmk_firmware/keyboards/keyball/keyball39/keymaps/my_keymap/ に配置しています。
QMK 標準の AML をベースに、実用上の問題点を全て改善しています。
| 機能 | 標準AML | このキーマップ |
|---|---|---|
| クリックでマウスレイヤーを抜けるか | 抜ける | 抜けない(ドラッグ操作が自然に) |
| マウスレイヤーの離脱方法 | タイムアウト or キー入力 | ESC_MLキーによる明示的離脱のみ |
| 誤爆(軽い触れでAML発火) | 起きやすい | 累積移動量がしきい値(50)を超えるまで発火しない |
| しきい値のリセット | なし | 500ms無動作でリセット(ゆっくりした繰り返し触れも防止) |
| ESC_ML後の即再発火 | — | 600msクールダウンで再発火を抑制 |
| マウスレイヤーの保持時間 | 短い | 30秒(AUTO_MOUSE_LAYER_KEEP_TIME 30000) |
仕組みの概要:
- トラックボールを動かすと Layer 1(マウスレイヤー)に自動遷移
- クリックしてもレイヤーは維持されるので、ドラッグや連続クリックがスムーズ
ESC_MLキーを押すと強制的にマウスレイヤーを抜け、600ms は再発火しないESC_ML_LNG2/ESC_ML_LNG1を押すと、マウスレイヤーを抜けつつ英数 / かなキーも同時送出
// keymap.c より
enum my_keycodes {
ESC_ML = KEYBALL_SAFE_RANGE, // マウスレイヤーを抜けるだけ
ESC_ML_LNG2, // 抜ける + 英数(KC_LNG2)
ESC_ML_LNG1, // 抜ける + かな(KC_LNG1)
};LNG キーはレイヤー変更が完了してから送出する必要があるため、process_record_user 内でフラグを立て、matrix_scan_user で次のスキャンサイクルに送出する方式を採用しています。
現在のアクティブレイヤーを LED の色で直感的に把握できます。輝度はそのまま維持しつつ色相だけを切り替えます。
| レイヤー | 色 | 用途 |
|---|---|---|
| 0 | 蛍光グリーン | デフォルト(QWERTY) |
| 1 | 蛍光シアン | マウス / AML |
| 2 | 蛍光イエロー | 編集 / ナビゲーション |
| 3 | 蛍光オレンジ | 設定 / スクロール |
| 4 | 蛍光ピンク | ファンクションキー |
| 5 | 蛍光パープル | 記号 / 数字 |
親指キーのホールドでレイヤーに入るため、手を動かさずにほぼ全操作が完結します。
Q W E R T Y U I O P
A S D F G H J K L ;
Z X C V B N M , . /
LCtrl LGui LAlt ⇧/英数 Spc/[5] かな/[3] BS Ent/[2] ⇧/英数 RAlt RGui RCtrl
⇧/英数(LSFT_T(KC_LNG2)): タップで英数キー、ホールドで ShiftSpc/[5](LT(5,KC_SPC)): タップでスペース、ホールドで Layer 5(記号/数字)かな/[3](LT(3,KC_LNG1)): タップでかなキー、ホールドで Layer 3(設定/スクロール)Ent/[2](LT(2,KC_ENT)): タップでEnter、ホールドで Layer 2(編集/ナビゲーション)
Cmd+C Cmd+V Cmd+X Del [3] — BTN1 Alt+W Esc TG(0)
— Ctrl+C Ctrl+↑ Ctrl+V Ctrl+← Ctrl+→ BTN1 ↑ BTN2 TG(1)
— Ctrl+X — — Ctrl+↓ — ← ↓ → TG(1)
LCtrl — — 英数脱出 [3] かな脱出 — [1] — RAlt RGui LCtrl
- クリック系(BTN1/BTN2)の操作後もこのレイヤーにとどまる
TG(0)/TG(1)でトグル離脱英数脱出(ESC_ML_LNG2): マウスレイヤーを抜けて英数モードへかな脱出(ESC_ML_LNG1): マウスレイヤーを抜けてかなモードへ
Cmd+C ↑ Cmd+V Ctrl+PgUp Cmd+X Alt+` Cmd+W Ctrl+PgDn Tab Cmd+T
Cmd+F Ctrl+← Cmd+↓ Ctrl+→ Shift+W Ctrl+英数 PgUp 英数 4 ⇧
Ctrl+C Ctrl+↑ Ctrl+V Ctrl+← Cmd+[ PgDn Ctrl+X — Cmd+⇧+5 Cmd+-
LCtrl LGui — Del [2] BS — — — — Cmd+0 —
このレイヤーではトラックボールがスクロール操作に切り替わります。
RGB切替 AML切替 AML+50ms AML-50ms — — — スナップ水平 スナップ垂直 スナップフリー
RGB順送 色相+ 彩度+ 輝度+ KBC保存 — — — — —
RGB逆送 色相- 彩度- 輝度- — CPI-1K CPI-100 CPI+100 CPI+1K KBC保存
QK_BOOT KBC_RST — — — — 英数 かな — — KBC_RST QK_BOOT
F1, F3, F4, F7, F8, F9, F11 を配置。
! @ # $ % ^ & * ( )
1 2 3 4 5 6 7 8 9 0
\ [ ] - = ` ' " ~ —
キー情報・トラックボール情報・レイヤー情報をリアルタイム表示します。
void oledkit_render_info_user(void) {
keyball_oled_render_keyinfo();
keyball_oled_render_ballinfo();
keyball_oled_render_layerinfo();
}VIA_ENABLE = yes が有効なので、Remap でキーを GUI から書き換えられます。
カスタムキーコードは Remap の「SPECIAL」→「User」カテゴリに以下の番号で対応しています。
| User 番号 | キーコード | 動作 |
|---|---|---|
| User 0 | ESC_ML |
マウスレイヤーを抜けるだけ |
| User 1 | ESC_ML_LNG2 |
マウスレイヤーを抜ける + 英数 |
| User 2 | ESC_ML_LNG1 |
マウスレイヤーを抜ける + かな |
QMK Firmware の環境構築後、以下のコマンドでビルドできます。
qmk compile -kb keyball/keyball39 -km my_keymapまたは QMK MSYS / QMK CLI でビルド後、QMK Toolbox でキーボードに書き込んでください。
qmk_firmware/keyboards/keyball/keyball39/keymaps/my_keymap/
├── keymap.c # レイヤー定義・AML 処理・RGB 発光制御
├── config.h # AML タイムアウト・レイヤー数などの設定
└── rules.mk # RGBLIGHT / OLED / VIA の有効化
AML のコア実装(auto_mouse_activation, keyball_handle_auto_mouse_layer_change, keyball_escape_mouse_layer)は qmk_firmware/keyboards/keyball/lib/keyball/keyball.c に追加しています。
- 元リポジトリ: Yowkees/keyball
- ハードウェア設計: @Yowkees
- ファームウェア: @kaoriya (KoRoN)
- カスタムキーマップ: Jun Uozumi
購入・ビルドガイドなど、ハードウェアに関する情報はオリジナルリポジトリを参照してください。