のどかで独自定義のかな配列を使っていて、かな入力中に英数字を入力できるようにするために(具体的に言うと月配列2-263の最上段)
&SetImeConvStatus(0x0008) &Sync _1 &Sync &SetImeConvStatus(0x0009)
みたいにして英数オン→数字or記号→英数オフで実現してるんですが、メモ帳なんかだとこれで行けるのにFirefoxとかSkypeのテキスト入力では&Syncが効かない(&Syncが無いときと同じ挙動)みたいです。これって既知の問題なんでしょうか?
今のところ緊急避難的に&Wait(5)とかに差し替えてなんとかなってるんですが、&Syncの場合には起こらない問題(同時打鍵でかなが混じって入力されてしまう)が厄介なので、出来ればどのアプリでも&Syncで通したいところです。
def syncでスキャンコードいじればなんとかなったりするんでしょうか?
Atok?
俺はまだその関数使ってないけど、IME周りの挙動がOSやIMEによっておかしくなるのは
仕様だと思ってる。
月配列ならカナモードじゃなくローマ字モードでやっちゃったほうが楽なんじゃね。
最上段いじらなくていいし。カナロックで配列いじってんのかな。
ATOK2009です。本当はMS-IMEでも試してから書き込むべきだったんでしょうが、言語バーから削除しちゃって元に戻すの面倒だったんで……。
ただ、ATOKでも&SetImeConvStatus自体は正しく機能しているらしく、問題の一行も&Waitに置き換えれば問題ないので、やはり「特定のアプリにおいて&Syncで同期がとれていない」というのが原因なのではないかと思います。
かなモード実装にこだわるのは、菱とまったく同じ動作をする設定を繭で書きたいと思っていて、のどかの新しい関数を使えば楽だなー、と思いついたからです。署名取得も現実味を帯びてきたようだし、菱もこれから先使えるのかわからないし。
結果だけ見れば、かなとローマ字では確かにごくわずかな違いしかありませんが……(IMEの変換候補を英字インデックスにした時に誤操作が減ります)。
ローマ字モードで実装した例はたとえば↓のようなことですね。
ttp://kyoto.cool.ne.jp/mayuto64/dependence/mayu.htm じつはここのやり方を参考にして、同じことを逆にやってみています。「濁点・半濁点の時だけカナロック」ではなく、「英数字の時だけ英数モードON」です。
――というような話は、月と新JISのスレでした方がいいのかも知れませんが、&Syncまわりのトラブルだとアタリがついているので、こちらで訊いてみました。
&Syncのデフォルト
def sync = 0x7e
をいじってみて、うまくいった経験のある方はいないですかね?
あるいは&Wait以外の回避策など……
561 :
560:2009/09/15(火) 03:23:32 ID:+lPx8sz10
ちなみにChromeとIEでは&Syncで問題ありませんでした。
のどか本家の掲示板で聞いたら?
あと、言語バーから消しただけなら復活させるのは一瞬だろ、MS-IME。
>>564 Functionとキー入力を混ぜるときに&Syncが必要なわけで
Functionばかりにすれば良いのでは
&SetImeConvStatus(0x0008) &SendText("1") &SetImeConvStatus(0x0009)
なるほど。
まぜ書きしなければ基本的に&Sync不要なんですね。
実は全部のキーを&SendTextで設定しちゃえばいいのでは?
と思って試したんですが、それだと数字や(シフトごしの)英字で
変換候補が選択できないっぽい。
目標は一応、菱の「過不足ない代替」なので残念ながらNGです。
ならば&VKで仮想キーを送ればいいのでは?とおもいついて、
&SetImeConvStatus(0x0008) &VK(D-_1) &VK(U-_1) &SetImeConvStatus(0x0009)
を試してみたところ、結果は&Syncなしの
&SetImeConvStatus(0x0008) _1 &SetImeConvStatus(0x0009)
と同じで、どうも記述順に実行されていない様子。
蛇足に思える&Syncを挟んで
&SetImeConvStatus(0x0008) &Sync &VK(D-_1) &VK(U-_1) &Sync &SetImeConvStatus(0x0009)
だと完璧に動作するのですが。
やはりキー入力が絡んでる局面では同期か遅延が必須みたいですねえ。
>>566 FireFoxでは、&Syncが効いていないというよりも、最初の&SetImeConvStatus()が失敗しているように見えるので
先頭に&Syncを付けるのは、どうでしょうか?
&Sync &SetImeConvStatus(0x0008) &Sync _1 &Sync &SetImeConvStatus(0x0009)
> &Syncが効いていないというよりも、最初の&SetImeConvStatus()が失敗しているように見える
たしかにそのようにも見えますね……。
内部でどうなっているのかわからないので、結果から推測するだけですが。
残念ながら、ご提案いただいた方法でも改善しないようです。
&Syncと差し替えた&Waitも3ms以下に設定するとダメなのですが、これは見た感じ
「&SetImeConvStatusの処理に3ms前後かかっており、それ以下の遅延だと
以降の処理に追い越されてしまう」
というようなことなのかなあ、と。だから英数字のかわりにかなが出力されてしまう。
やはり一度&SetImeConvStatusから切り離して、別の関数との組み合わせで
試してみないことには&Sync固有の問題とは言い切れないようです。
なにかわかりやすいサンプルを考えて試してみます。
569 :
568:2009/09/16(水) 00:37:52 ID:uSRUn3Hp0
早速つくってやってみました。
include "109.nodoka"
key T = &ClipboardCopy("A") &Sync C-V B &Sync &ClipboardCopy("C") &Sync C-V
で、Tを連打すると理屈では「AbC」が出力されるはずですし、実際メモ帳などではそうなります。
(CapsLockがかかっていれば真ん中はBになるでしょうが)
ところがこれをFirefoxやSkype上でやると「CbC」とか「AbA」しか出ません。
ちなみにアタマに&Syncを足してみても結果は一緒でした。
やはり「&Syncが特定のアプリで有効にならない」ということでしょうか。
いくつか他のアプリケーションで試して確証を得たら、サポートに報告してみようと思います。
なにか、ここまでのところで致命的な勘違い等あったら、どうぞご指摘ください。
&Syncって1回しか効かないんじゃなかったっけ
>>557 ご指摘通り、スキャンコード書き換え後は正しく動作するようになりました。ありがとうございます。
しかし副作用によりyamy無効時はCapsLockが機能しなくなったので、
個人的にはOneShotモディファイヤでキー本来の機能を残しておいた意義が
なくなってしまった…うーん悩ましい…。
>571
escapeNLSkeys=1 じゃいかんの?