「英数文字&かな文字」を、どっちも親指シフトキーでシフトできるだろうか……の件。

(言及:やまぶき Ver. 2.1.1リリース: やまぶき作ってます)

2010年1月25日23:56:15追記。


 こんな記事を作っておいて、こんなことを言うのもアレですが……やまぶきは「この記事で望んだ機能を、既に実現していた」ことに気づきました(というか、「教えていただいた」が正しいですね)。
 詳しくは、この記事のコメントをご覧ください……。


 英数入力でもかな入力でも区別することなく、親指シフトキーを使って「シフト残り対策付きの連続シフトによる入力・親指プレフィックスシフトによる英字入力」ができる……と、既に「やまぶき」はその機能を実現していたわけです。


 やまぶき作者のyamaさんとこで、コメントさせていただいていた……のですが、コメントで書くにはさすがに長くなりそうなので、トラックバックで失礼します。
 また、ご返答が大変遅れてしまい、申し訳ありません。


 実装いただいた「前置シフト」の具合があまりにも納まりよくて*1、いまメインPC側も「やまぶき」に変えて使っています。
 ……で、これと同じレベルで二件目も「利用者のメンタルモデルにすんなりと受け入れられるような、そのままの解りやすさを!」と考え始め、とたんに悩んでしまいました。


 二件目について、「結論としては」以下の挙動が欲しいと考えています。

  • 以下の機能は、前提として「英数」「カタカナひらがな」のキーを常用するユーザーだけに対して意味を持つ機能である(そうではないユーザーにとって、以下の機能は無意味である)。
  • 設定画面の「左親指シフトキー:」リストで、【無変換(英数キー併用)】を指定できるようにする。
    • IME=ONのとき、無変換キーは、[カタカナひらがな]キー押下後には「左親指キーとして」振舞う。
    • IME=ONのとき、無変換キーは、[Caps lock/英数]キー押下後には「小指Shiftキーとして」振舞う*2
    • IME=OFFのとき、無変換キーは、これまでの「やまぶき」のまま、同じ動作をする。
  • 設定画面の「右親指シフトキー:」リストで、【変換(英数キー併用)】を指定できるようにする。
    • IME=ONのとき、変換キーは、[カタカナひらがな]キー押下後には「右親指キーとして」振舞う。
    • IME=ONのとき、変換キーは、[Caps lock/英数]キー押下後には「小指Shiftキーとして」振舞う。
    • IME=OFFのとき、変換キーは、これまでの「やまぶき」のまま、同じ動作をする。

 【***(英数キー併用)】という表現がイケてない(もっと短く解りやすい表現が欲しい)ところは微妙……ですが、こういう挙動を作りこんでいただけると、とても助かります。


 左右小指Shiftキーに対する「変換・無変換」の割り当てについては、すでにやまぶきが定義経由でサポートしているので、これはそのまま使ってみます。


 ……と、ここまででもやはり、書き方がおかしい可能性があります……意味不明なところについては、たびたびご迷惑をおかけし申し訳ないのですが、ふたたび質問いただけますと助かります。




 ……ちなみに、二件目について、「当初は」以下の挙動が欲しいと考えていました。

 【IMEがOnで、[カタカナひらがな]キー押下後、[Capslock英数]キー押下前】
 無変換キー  ── 左親指シフト面の文字列を出すためのキーとして動作。
  変換 キー  ── 右親指シフト面の文字列を出すためのキーとして動作。
左小指Shiftキー── 無変換キー(カタカナ・ひらがな変換用)として動作。
右小指Shiftキー── 変換 キー(変換・再変換用)として動作。
スペースキー ── スペースキーキー(変換・全角空白)として動作。
 ※このとき、IMEに小指Shiftキーのキーコードを渡すと、動きが変になるはず。


IMEがOnで、[Capslock英数]キー押下後、[カタカナひらがな]キー押下前】
 無変換キー  ── 左小指Shiftキーとして動作。
  変換 キー  ── 右小指Shiftキーとして動作。
左小指Shiftキー── 左小指Shiftキーとして動作。
右小指Shiftキー── 右小指Shiftキーとして動作。
スペースキー ── スペースキーキー(半角空白)として動作。
 ※IMEがOffのとき、やまぶきは「無変換キー・変換キー」のキー入れ替えに関与しても、関与しなくてもよい。

 広範囲のキーをいっせいに変更するので、既にあるキー入れ替え機能とぶつかる──*.yabに書かれた入れ替え定義のうち、「カタカナひらがな」「CapsLock/英数」「Space」「(無)変換」「左右小指Shift」のキー入れ替えを無視する(=排他利用とする)必要が出る──と考えました。


 また、「小指Shiftキーで英字入力モードに入る機能」と書いたのは、ほげらさんの提案にあった、以下の機能を指そうとしていました。

1) (親指キーではなく)Shift単独を押したときはキーフックさせずShiftキーとして認識させてほしい。理由はMS−IMEの設定でShift単独で英数モードへの変更の機能があり、これを生かしたいため。
(from http://yamakey.seesaa.net/article/136809621.html#comment )

 この機能によるメリットをあきらめる(=排他利用とする)ことで、かわりに「英数モードでも、かなモードも、おなじ親指キーでシフトしたい」と考えました。


 ところが、「前置シフト」の設定画面がシンプルにおさまっているのを見て、「仮に上記のような動きを、スイッチ一つでMaskしてしまうと、ユーザ側のメンタルモデルを崩してしまい、ユーザーは絶対に混乱するはず」と考えまして……そこに悩んでいました。
 そうしているうちに、前出の「結論としては……」に至りました。
 

*1:いまの「やまぶき」にJIS X6004かなを定義してやると、「親指位置で、プレフィックスタイムシフトを使える、論文方式の新JISかな」の環境が出来上がります。汎用エミュレータの「繭姫」でもできる話ではありますが、より簡易な定義で「新JISかなの理想の姿」を実現できる……ってのは、結構いい感じです。あっ、やるときは親指シフトの設定を「連続シフトあり・単独打鍵なし・前置シフトあり」にしてください……このままの設定で「かえで****あすか」は余裕で使えますし、たぶんNICOLAも問題なく扱えます

*2:2010年1月25日0:39:12追記──ちなみに、(いまのプログラムで対応可能な場合に限り)[Caps lock/英数]キー押下後の「英数入力」時も、「かな入力時と同じシフトロジックで、親指シフトキーによる英字入力を行える」と、(和英両方を同じ感覚で入力できることになるので)かなりうれしい……のですが、英数入力時には「かな入力とは違う」処理が必要と考えられますので、これは実現できなくても構いません。