uim スレッド 8 (930レス)
上下前次1-新
577: 2012/12/11(火)00:47 ID:H04Mg9F2(1) AAS
Google-CGIAPI-Jpってなんで候補が5個しかでえへんの?
578(1): 2013/01/09(水)00:36 ID:LPwrQNA2(1) AAS
uim-xim で xterm について uim の入力モードを切り替えたり簡単にできませんかね。
uim-fep ではなく。
shell でコマンド実行時に直接入力にするとかしてみたい。
# echo x > /proc/xxx みたいにできればいいってちょっと思ったけど、それはないだろうな。
579(1): 2013/01/09(水)07:12 ID:eLY39i4O(1) AAS
しふと+すぺーす
580(1): 2013/01/09(水)20:21 ID:BHt1YNGW(1) AAS
uim-toolbar-gtk等と同様に、uim-helper-serverが開いてるUNIX domain socketに、
prop_activateメッセージを書き込めばできます。
メッセージ形式等は、doc/HELPER-PROTOCOL参照。
anthyを直接入力に切り替える例:
printf 'prop_activate\naction_anthy_direct\n\n' | socat - UNIX-CONNECT:$HOME/.uim.d/socket/uim-helper
581(2): 2013/01/10(木)04:03 ID:53v15KgY(1/2) AAS
>>579
確かに簡単です。
肝心な条件が抜けていましたね。
>>580
ありがとうございます。こんなに早く回答がくるとは。
uim-sh とかで何か実行すればできるのかなーとか、
uim-sh の用途も知らずに考えていましたが、uim-helper-server ですか。
なるほど、これいいですね。
uim 以外でもこういうのあるんですかね。
socketあんまり使った覚えなかったんですが、echo x > socket じゃだめなんですね。
まあそれはしょうがないか。zsh なら zsocket もあるし。使ったことないけど。
ちなみに im(skkとか) に対する入力モード(「ひらがな」とか)のリストを取得する message ってありますかね。
というか多分ありませんよね。doc/HELPER-PROTOCOL をざっと見た感じではないようなので。
とりあえず skk の場合は↓に書いてあるようなので、必要なわけではなく、
なさそうだけどもしかして実はあるのかなーと、ただの興味だけできいています。
外部リンク:code.google.com
582(1): 2013/01/10(木)19:21 ID:cW1WA7JR(1) AAS
>>581
(確認してないですが、uim以外だと、ibusはdbusを使ってたような気も。)
入力モードというかactionリストを調べるには、例えば以下の3種類の方法があります。
1. prop_list_getメッセージの応答のprop_list_update内のaction_skk_latin等を確認。
printf 'prop_list_get\n\n' | nc -q 1 -U ~/.uim.d/socket/uim-helper
2. uim-toolbar-gtkを操作した際にソケットに流れる内容を確認する。
nc -U ~/.uim.d/socket/uim-helper
を実行した状態で、uim-toolbar-gtk上でカタカナ等を選ぶと、
uim-toolbar-gtkが送るメッセージと、それに対する応答が流れるので、
どんなメッセージを送ればいいか調べることが可能。
3. IMのソースを確認
grep register-action /usr/local/share/uim/skk.scm
583: 2013/01/10(木)23:59 ID:53v15KgY(2/2) AAS
>>582
ないようなのでとか書いちゃったけど、ありましたね。 1. が。
しかも ja_hiragana とか skk に依存しない名前付きで。
# とりあえず知りたいだけなら 3. が速いかな。
584: 2013/01/16(水)01:05 ID:ySNuqowo(1) AAS
年末に1.8.4出てたんだな
585: 2013/01/26(土)18:39 ID:6qFN8b3p(1) AAS
いやー >>581 の件で
echo "prop_activate\naction_skk_latin\n" | socat - UNIX-CONNECT:$HOME/.uim.d/socket/uim-helper
とかするとたまに(あるいはしばしば) 1秒ほど xterm が止まりますね。
どうも uim-xim を待っているようだけど…
なんか特定の条件下でそうなるもんだよとか情報ありませんか?
ちなみに uim 1.8.4
586: 2013/01/26(土)19:56 ID:E9Ods2p+(1) AAS
ありません
587(1): 2013/01/27(日)18:41 ID:H247I6+9(1) AAS
>>578
xtermのuim-ximのオンオフを切り替えるその他の方法として、
shift+spaceを送り付ける方法。
xtermのAllowSendEventsを(ctrl+左クリックのメニュー等から)有効にしておいて、
xdotool search --name xterm windowactivate key shift+space
もしくは
xdotool search --name xterm windowfocus key shift+space
588: 2013/01/31(木)18:07 ID:ScJ/sbid(1) AAS
wxGTKにてuimを使っていると
GLib-GObject-WARNING: gsignal.c: instance ... has no handler with id ...
が出る条件がわかった。
wxGTK/src/gtk/window.cppの
gtk_im_context_set_use_preedit(m_imData->context,FALSE);
を消すと出なくなる。
消してもwxTextCtrlなどでは問題なく文字が入力できるし表示されている。
テスト不足なのでどこかうまくいかない場所があるかもしれないけど…
他のIMでは出ないみたいなので
uimの use_preedit == FALSE なときのコードに問題あるっぽい気がする。
589(2): 2013/02/03(日)22:36 ID:w9Lftygn(1) AAS
>>587
どうも。
toggle ではなく off にしたいのでそれはやめておきます。
~/.uim.d/socket/uim-helper で状態みてればいいという話もありますが。
# ~/.uim.d/socket/uim-helper に書くときも必要なときだけの方がいいかも。まあ無条件の方が楽か。
で、原因は判りました。1秒 xterm が止まっているときはこんな状態になっています。
- xterm は XSetICValues 呼んで止まっている。uim-xim のレスポンス待ち。
- uim-xim は main_loop 内の select でブロックしている。これの timeout が 1秒。
- 通常なら XSetICValues の X イベントが来ればその処理に進むはず。
ブロックする理由は以下。
uim-xim は select の結果をみて uim-helper から何か来てればそれを処理する。
この処理内で XTranslateCoordinates を呼んでいる。
このタイミング(select - XTranslateCoordinates 間)で XSetICValues の X イベントが来ると
XTranslateCoordinates が読み込んで event queue に入れる。
既に event queue に入っているものは select では検知できないので、ブロックする。
(event queue は X イベントの処理で空になるので、通常の select 時は空になっている。)
とりあえず ↓ な patch で直りましたので、これで使ってみます。いまのところブロックしてません。
# ほとんど意味がなくなるので timeout 時の check_pending_xevent を消しているけど、
# 要るんかな。1,2秒間隔 XFlush の意味しか残らないけど。
外部リンク:ja.pastebin.ca
# uim-1.8.4-check-xevents-queued.patch って書いたらファイル名切れた。32文字か。
しかしコマンド実行後に l を押すくせが抜けない。
590: 2013/02/03(日)22:46 ID:Nv/ezc0W(1) AAS
>>589
そういうのはちゃんとuimのバグトラッカーに乗っけなよ。
そのほうが中の人もマージしやすいでしょ。
591(1): 2013/02/04(月)16:07 ID:tIu2ElCE(1) AAS
なぜわざわざ処理の遅いxtermを使うのか?
592: 2013/02/04(月)18:56 ID:HvaVftXz(1) AAS
とりあえずデフォルトだから、じゃないですかにゅ。
593: 2013/02/04(月)19:37 ID:SLzXXiCZ(1) AAS
>>589
トグルにしたくないなら、uim-pref-gtkで、
オフ(SKKの場合は半角英数入力モード)にするキーの方だけに
"<Control"等を設定しておいて、外からctrl+commaを送り付ければOK。
xdotool search --name xterm windowfocus key ctrl+comma
が、現状のuim-skkだと、半角英数入力モード時に再度<Controlを送ると
そのまま","が入力されてしまいますね。
半角英数入力モードのキー処理(skk-proc-state-latin)で
オフにするキーだったら無視する処理を追加すればいいはず。
ただし、"l"キーの場合は無視しないでそのまま通す必要あり。
2130c2130,2133
< (skk-commit-raw sc key key-state))
---
> (if (not (and (or
> (control-key-mask key-state))
> (skk-latin-key? key key-state)))
> (skk-commit-raw sc key key-state)))
594(1): 2013/02/05(火)03:44 ID:BaUURfS3(1) AAS
>>591
遅い方なのか。
日本語環境だと起動が遅かったと思うけど。
まあ xterm にしかない機能があったりするから、かな。
他にもとりこまれたりするけどね。
使ってて遅くなかった kterm にはとりこまれそうになかったし。
xterm に移行したときは日本語環境で kterm 起動 20ms、xterm 起動 1s ぐらいで確かに遅かった。起動は。
高速をウリにしている Terminal Emulator って何があったっけ?
595: 2013/02/05(火)11:14 ID:Mc1lgI7w(1) AAS
>>594
起動だったらurxvtd + urxvtcが速い
おれが言ってるのはコンパイルや子プロセスなどの処理能力のこと
gnome-terminalが圧倒的すぎる
596: 2013/02/06(水)22:18 ID:Ia/IVSds(1) AAS
まあ daemon 使えばねえ。
つかコンパイルや子プロセス?
uim とも元の話とも離れてるしあんまりきかない方がいいかな。
上下前次1-新書関写板覧索設栞歴
あと 334 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.016s