トラックボールで出来ないか?
という面白そうな問い。
https://twitter.com/d_kamiichi/status/1627253744898543616?s=20
僕的には薙刀式の、
「FGで英数、HJでかな」でFAなのだが、
もっと頻繁に切り替えたい時、
トラックボールで、
となるとなかなか面白い課題だと思った。
「左親指のなにかをHOLDでトラックボール左右」
でもいいのかも知れないが、
トラックボール単体でやれると面白そう。
で、思い出したのが、
「クルリと円を描く」操作法。
トラックボールでの操作を、
XY移動→マウスのXY移動、
ひねり→ホイールスクロール、
円を描く→半時計円で英数、時計円でかな
のように定義できないか?
DvorakJで、
「マウスをぐるぐる円を描くようにすると、
ホイールスクロール(逆回転で逆転)」
というのが実装されてたから、
原理的にはできると思う。
たとえば→↓←↑を順番に、
1秒?以内に検知すると、
みたいな判定条件を書けそうだね。
ザンギエフのスクリュー成立みたいなルーチンになるだろう。
ザンギのスクリューは3/4回転でいけるんだよな。
始動はどの方向からでもいいから、
一周をうまくやったときだけコマンド成立、
みたいに組むと上手くいくだろう。
この辺はcでうまく組めるか、のほうがでかそう。
(僕なら実力がないので、
4方向で個別に書いちゃう泥臭い実装になる…)
あと普段やらないボールの動きに定義する?
Vと^みたいな動きとか、<と>みたいな動きとか、
Zと逆Zみたいなのとか。
単純に右ダブル(→←→)とかでもいけるかな。
僕はスト2でパッドでスクリュー出せたので、
一回転コマンドがいいかなあ。
ヨガフレイムと逆ヨガフレイムコマンドでもいける?
←↓→と、→↓←。
昇竜(→↓\)と逆昇竜(←↓/)もありだけど、
俺昇竜拳出せないので。笑
あとは、
ものすごく速く右に回転すると、
みたいな閾値を超えるほどの速い動きとか。
人差し指トラックボールなら、
迷いなくひねりで英かな切り替えかな。
親指トラックボールなので、色々考えてみた。
やっぱ円をクルリと描くのが、
操作上わかりやすそう。
実装は大変そうなので任せた…
(どこかに誰かのコードがあるかも)
2023年02月20日
この記事へのトラックバック
数日前からトラックボールでのマウスジェスチャー導入を検討していてQMKドキュメント等も見てましたが......いまいち分かりませんでした。
「円を描く」をシュミレーションしてみたら非常に良い感じでした。普段から意味なくクルクル回してしまってるので、それができなくなりますが......。
「ひねり」というのはどういう状態がイメージできなかったのですが、斜めということですか??
人差し指トラックボールで、
鉛直軸に対して時計/半時計する操作をイメージしてます。
スクロールリングの代わりみたいな。
ソースコードは見てないので、
どう動きを検出してるかはわからないですが、
三点の検知ならZ軸まわりの回転は検知できるはず。
ただKeyballの位置だと、
どこをその軸に取るか、何指で操作するかは難しいかもですね。
トラックボールグルグル回しで考えるのはよくわかります。
大きい円と小さい円を全体の秒数で区別できないかな…?
keyballだと難しそうではあります。テンティングすると軸が変わるのも厄介ですね。
ぐるぐる試してみましたが、どこのキーをトリガーにするかでも変わりますね。あとはQMKで実装できるのかどうかですが...調べてみます。
結構メモリ食うかもですね。
プロのエンジニアならメモリ食わない実装とか出来そうですが、
まずはLED使わないとかで試してみては…