포럼: Open Discussion (Thread #23025)

AquaSKKでTeslaは可能でしょうか (2009-06-08 21:37 by monochrome_scat #44260)

Shibata 様

AquaSKKをIMとしてTeslaを使いたいと思っております。
親指シフトをTesla(NICOLA)用に使い、小指シフトをAquaSKK用に使う、という方法で試してみましたが、両シフトの併用がうまくできませんでした。入力モードはローマ字入力です。

Teslaでは小指シフトを併用すると、単に(QWERTY配列の)アルファベットの大文字が入力されてしまうようです。
例えば、変換を開始しようと思って小指シフト+「け」キーを押すと、「F」が入力されてしまって「▽f」となってしまいます。(ちなみに、OyayubiDriverでも同じ動作でした。)
この場合、シフトが押されているときにローマ字が「大文字で」入力されるようになりさえすれば(上の例では「F」ではなく「ke」でもなく、「Ke」または「KE」が入力されるようになれば)、TeslaがAquaSKKでも充分実用に耐え得るレベルで使えるようになると思うのですが、技術的には(やって頂けるかどうかは別として)、可能でしょうか。今更ではありますが、お答え頂けたら幸いです。
また、解決策をご存知の方、投稿して下さると助かります。

RE: AquaSKKでTeslaは可能でしょうか (2009-06-08 22:40 by shibataseiji #44261)

SHIBATAです。仕事が忙しく,また,自分自身が親指シフト入力を使用しなくなってしまったためTeslaはまったく更新できていません。
すみません。

さて,小指シフトを併用するとアルファベットが大文字になってしまう件ですが,小指シフトを処理するルーチン,あるいはローマ字を出力するルーチンにおいて,モディファイアキーの状態が格納されている変数(keyboardEventのflags)の値を変更してやれば対応できると思います。
具体的には,キーコードを出力する際,モディファイアのSHIFTに相当する部分のビットをOFFにしてやればうまくいくはずです。
Reply to #44260

やってみようと思います (2009-06-10 19:43 by monochrome_scat #44305)

お返事ありがとうございます。
こんな時期外れの質問に答えて頂けるなんてとても嬉しいです。

今、ソースコードをダウンロードして一通り眺めてみましたが、アマチュアの私でもなんとかなりそうな気がします。
flagsにおけるShiftキーのビットの位置(0x20000)も分かりましたし、これから休日などの空いた時間を利用してリビルドに挑戦してみようと思います。
もしうまくいったらご報告させていただきます。
Reply to #44261

動くようにはなりました (2009-06-11 13:35 by monochrome_scat #44327)

ちょっといじってみたら、とりあえず問題なく動くようにはなりました。

1. 小指シフト押下時のキーイベントもTeslaでつかまえるようにしたところ、「▽f」ではなく「▽け」と表示されるようになりました。
--------
//基本動作
if (eventType == 10 && (!flags || flags == (flags & 0x20006)) && ...

2.前候補(xキー)や変換候補からの選択(a/s/d/f/j/k/lキー)も入力に割り当てられてできなくなってしまうので、Optionキー(文字入力時にはめったに使わない)押下時には通常のアルファベットが入力されるように設定。
--------
//Optionキーのフラグを無効にして、通常のアルファベットを出力
flags &= ~0x80060;

あと、変数nicolaがあるとなぜかTeslaが動作しないため、条件式から外してしまいました。scriptCheckerが起動していなくても親指シフトが有効になるようになってしまいましたが、わたしの使い方においては支障なしです。
--------
if(/* nicola && */ teslaOn){ //エミュレーション動作中で、かつ親指シフトモードの場合

変更箇所はTesla.cppのTesla::keyboardEvent()内3箇所のみ、現時点で最新のソースコード(おそらくTiger用のもの)を使用、こちらの環境はPanther(10.3.9)です。開発中に何度か「You must restart your computer...」というメッセージが出て動かなくなったので、けっこうやばいことをやっているかもしれません。
もし改変後のソースコードがご入用でしたら、お送りいたします(SourceForgeのアカウントはここに投稿するために取得したので、使い方がよくわかりません)。

***この文章もAquaSKK+親指シフトで打ち込みました。***
Reply to #44261