先日まとめた各FEPの操作体系の混乱と、
遠すぎるキーのばらつきを見ていて、
やはりアホかと思った。
さらに先日のVimの話を組み合わせて、
以下のような体系ならばいいのでは?と思いつく。
文字打ち(ブラインドタッチ)
↓
変換(スペース)で変換モードに入る
↓
候補選択、文節移動、文節伸縮、戻しなどは、
文字操作で行い、変換モード中は文字打ちができないとする。
たとえばhjklでカーソル、yuioでシフトカーソルをバインドするなど。
ここのバインドはあとで考える。
当然ブラインドタッチしやすい動線とする
↓
確定(たとえばm)で変換モードを抜けて、
文字打ちモードに戻る
現行の欠点は、
文字キーを文字キー、制御キーを制御キーにしているため、
文字打ちがブラインドタッチできても、
制御キーすべてをブラインドタッチすることは不可能、
という点にある。
サイトメソッドでしか使えない。(猛者は可能かもだけどさ)
それをカバーするために、
Ctrl+○で制御系が定義されているが、
Ctrlキーそのものを打つことがめんどう。
たとえばCtrlキーの代わりに「スペースキーを押しながら」
のほうが圧倒的に楽になるはず。
そして2打必要より単打で打てるなら、
より最高のはず。
Ctrlキーを押しながらの操作は、
ブラインドタッチを考えていない動線だ。
なぜCtrlや制御キーを使わなければいけないかというと、
変換操作中も、文字入力や訂正やカーソル移動を受け付けている、
同時並行だからだ。
その同時並行をやめて、
文字入力と変換から確定までを分離しよう、
というのが基本アイデア。
ひょっとしたら昔のFEPは、
計算機能力的にそうだったかもしれない。
変換してから確定前に文字打ちしたらどうなるんだろ?
現在のIMEでは自動確定だけど、
そもそもその自動確定が便利なのは、
全確定のエンターが遠いからだ。
つまり、
動線を煮詰めれば煮詰めるほど、
文字打ちと変換から確定までの動作は、
分離して、
ブラインドタッチ可能な制御盤としての、
30キーを共有するべきでは?
と考えた。
そうすれば、
【文字打ちモード】と【変換モード】を、
切り分けることができて、
それぞれに配列を考えられる。
そして重要なものをすべて、
ブラインドタッチ可能な単打にすることが出来るのでは?
というアイデア。
で、ここからは薙刀式のアイデアを流用するが、
【文字打ちモード】の時に変換モードのバインドを使いたければ、
DF、JKを押しながら逆手で呼び出せるようにして、
【変換モード】のときに文字打ちモードの文字を使いたいなら、
同様にDF、JKを押しながらとかで打てるようにする、
などにして、
「裏に裏モードの文字があるようにする」
という風にすれば、
文字入力中も制御バインドがブラインドタッチで使えるし、
変換中も文字を打てるのでは?
という体系。
FEPの操作体系を見ても、
基本操作以外は、
大体Shift押しながらとかCtrl押しながら、
ばっかなんだよね。
そんなん覚えられるわけないし、
実際使う時もブラインドタッチなんか無理だろとか思うわけ。
その影響下にあるMS-IMEでも、
Shift+無変換とか、Shift+変換とか、
ブラインドタッチ不可能な組み合わせがあって、
そんなの使いこなせねえわ、
という無茶バインドがたくさんある。
大体そんな重要でよく使うなら、
ShiftやCtrlを親指ホームポジションに持ってこいよな。
そんなものを、
たとえばqやwの単打で使えるようになるわけだ。
これを実現するには、
現状のIMEの改造では不可能で、
一からIMEを作る必要がある。
僕はそのスキルがないため、
このアイデアを実現したい人は、
僕に相談してください。
キーマップの動線の練りはやってみたい。
なんでVimmerだけに、
ブラインドタッチ単打で編集する気持ち良さを独占させてるんだ?
日本語入力もそうなればいいじゃん。
どうしてそういうアイデアが、
カンブリア爆発期になかったのが不思議だ。
人は見たことのあるものしか真似られないのか?
ブラインドタッチ制御という必要がなかったから、
発明の母がいなかったのか?
【文字打ちモード】と【変換モード】を分離して、
それぞれに入る単打キーを定めて、
それぞれを文字単打で制御する。
裏のモードはなんらかのキーを押しながらだと使える。
まとめるとこういうこと。
単純に、
変換モードに入るのは変換キー、
文字打ちモードに戻るのは無変換キー(全確定)、
変換キーを押しながらだと変換キーのバインドが使える、
無変換キーを押しながらだと文字打ちモードの文字が使える、
に整理できるかも知れない。
ほんでスペースキーをSandSにしとけば、
大体事足りるのでは?
2022年12月28日
この記事へのトラックバック
keyballだと「トラックボールを触った数秒間だけレイヤーを切り替える」を実装してる方がいます。操作系+ポインタ移動+スクロールを全て1レイヤーで行えるのが理想かなと思っています。
あのトラックボールの仕組みは賢いと思いましたねえ。
そのことでクリック専用キーを置く必要がなくなるし。
でもそのかわりマウスレイヤーを明示的におふするキーが必要になるんだろうなあ、
などと想像します。
マウスレイヤーにたくさん入ってれば有効な機能だけど、
左右クリックだけなら単体キー置いたほうがいいだろうなあ、
まで想像しました。
(スクロールリングがあるトラックボール付きキーボードだとさらに)
僕はなんだかんだいって、ペンと紙の操作感が欲しいんだと思っています。
手書き変換の精度があがるなら、
タッチペンで手書きしてもいいくらいの立場ですね。
キーボードとどっちが面倒だろうか…
手書きはいいですよね。iPadのスクリブルは精度いまいちでしたか?
初代iPadが出たときにアップルペンシルの精度がイマイチだなあ、
と思って以来無視してるので、
そろそろタッチペンの精度も上がって、
きっと深層学習もしてくれるやろ、
という様子見の段階ですかね。
でも結局、起動時間と充電とUIで文句言うのが見えてるから、
紙一択ではないかなあと思っています。
の移行にスペースを許容すると、空白の入力そのものができなくなりますので、変換キーの方がよいかとおもいます。
また、変換を確定したときに変換モードを抜けると、連続して日本語入力するときに、それなりに煩わしいかもしれません。
操作感を知るためには、例えば Autohotkey でIMEのエミュレータを作ってみるとよいかもしれません。
>変換モードとは、カナ変換モードまたはローマ字かな変換モードのことでしょうか。
文字を入力したときに下線がついて、確定して下線が消えるまで、
の状態を想定しています。
カナかローマ字かは不問というイメージです。
>空白の入力そのものができなくなりますので
空白は第一文字目限定で、入力即確定にすればいいかな。
> 変換キーの方がよいかとおもいます。
J下にちゃんと変換キーがあるキーボードがもはや絶滅種に近いので、
USキーボードでも使える運用を考えていました。
もちろんいい位置のキーボードなら変換でもやぶさかではないです。
> 連続して日本語入力するときに、それなりに煩わしいかもしれません。
次の文字を書くと自動確定する機能だけがなくなり、
毎回全確定ないし最終分節での部分確定が条件になります。
薙刀式だと句読点確定があるのでそれほど煩わしくないけど、
いちいち確定を押すのはそれがmだろうが変換キーだろうが、
面倒かもです。
変換操作をアルファベット単打で行えることのトレードオフですね。
> Autohotkey
今、未入力なのか、入力中変換前なのか、
変換中なのかを取得できる関数ってあるんでしたっけ?
あったら便利そう。
なくても何かのキーを潰せばいけるかも。
(単純に変換と無変換に当ててもいいし)
今確認しましたが、
空白文字は、
入力中未変換にはならず、常に確定ですね。
入力文字中には含まれない模様です。
なので、「なんらかの文字を入力した後の空白は変換とみなす」
ルールで区別できそうです。
IMM.ahk の IME_GetConverting() ですね。
調べてみると、Google日本語入力に限って、取得が可能です。
・「2」のときは変換中
・「1」のときは文字入力中
で、ここからが厄介なんですが、「1」のときにスペースキーを押して「2」でならなくても「0」になれば変換中です。
Google日本語入力なので、Autohotkeyからスペースキーを出力して
Sleep, 30
の後、安全に取得ができます。
ありがとうございます。
誰か作ってるやろとは思ってたけど、
調べ方が分からなかったので助かります。
ああ、でもGoogle限定なのか。
僕のPCだと動作が重いんだよな…
テスト用と割り切ればまあいいか。
(すごく便利なら使ってしまうかもしれないが…)
最初の「文字打ち(ブラインドタッチ)」とは、
半角入力のことと推定しました。
「変換(スペース)で変換モードに入る」とは、
変換キーまたはスペースキーで、
カナの変換も―とまたはローマ字変換モードに入ることを意味すると考えました。
すると、半角スペースはどのようなシーケンスで入力するのでしょうか。
僕のやり方だと、
IMEオフのとき: 英語の半角文字。半角英字、半角スペース
IMEオンのとき: 日本語の全角文字。ローマ字入力(エミュレータからカナのローマ字を受け取る)、全角スペース
なので、半角スペースはIMEオフの時しか打たない仕様です。
MS-IMEのデフォだとシフト+スペースで半角スペース打てるんでしたっけ。
使ったことないのでわかりません。
当該の方式は、IMEオンの時想定です。
(ただしカーソル系などのキーバインドが使えると便利だから、
IMEオフの時にもDFを押しながら使えたりすると便利かも、
というイメージです)
親指シフトなどでは小指のシフトキーを押しながらだと半角英字の大文字が打てるんでしたっけ。
そういった文字種とIMEをまたいだ操作は今のところ無視しています。
まあまだアイデア段階なので穴があるかも知れないですが…
IMEオフの半角入力でしょうか。
MS-IMEでは直接入力が即ちIMEオフのようなので。
「変換(スペース)で変換モードに入る」の「変換モード」とは、IMEオンの「ひらがな」または「カタカナ」モードのことでしょうか。
USキーボードを使いたいのでスペースキーを活用したいとの趣旨は理解いたしました。この場合、スペースキーの本来の機能である、IMEオフ時の半角空白入力、IMEオン時の全角空白入力と両立するか検討する必要があります。
こういうのを考えるのは興味深いですね。ハッカソンなどで即座にコーディングできるかは不明ですが。
>最初の「文字打ち(ブラインドタッチ)」とは、
>IMEオフの半角入力でしょうか。
>MS-IMEでは直接入力が即ちIMEオフのようなので。
ああ、そういうことか。
IMEオンの全角入力が僕はデフォの気持ちでした。
IMEオフ時の半角入力のことは基本頭にないです。
以下、IMEオンの話。
>「変換(スペース)で変換モードに入る」の「変換モード」
未入力状態をデフォとします。
未入力状態で文字を打つと、入力後未確定状態。
ここまでを文字入力モードとします。
変換をかけます(スペースキーないし変換キーで)。変換後未確定状態。
ここから確定キーが押されるまで、
【変換モード】とします。
このときにキーボードをハックして、
単打で変換に必要な機能を打てるようにする、
という考えです。
抜ける時はエンターが必要ですが、
たとえばm単打にバインドし、
このトリガーで確定かつ文字入力モードへ戻ります。
この遷移キーを、
スペース、エンターでもよいし、
変換、無変換でもよいし、
スペース、mでもよいなあ、
などと考えています。
AHKで組むなら、
たとえばスペースキーを検知していて、
IMEオンの時に限り、
第一文字目かどうかを判定して、
異なるならIMEオフして半角モードにして、
変換モードに入って色々受付をして、
出る時にIMEオンして戻して、確定して、変換モードから出る、
になるかと。
DvorakJではIMEオンオフ時に二つの配列を定義できるので、
オフ時にqwerty使ってないなら、
DvorakJごとオンオフしたほうがいいかもです。