Hiroyuki Ikezoe
poinc****@ikezo*****
2004年 11月 30日 (火) 19:45:45 JST
zoeです。 On Tue, 23 Nov 2004 17:18:33 +0900 Hiroyuki Ikezoe <poinc****@ikezo*****> wrote: > > ページのスクロールに Space を利用しています。IME が ON になっている > > と > > 全角スペースが入力されてしまい、検索扱いになりスクロールできません。 > > 全角スペースも受け付けるように変更してくれませんか? (略) > で、結論ですけど、風博士側で対処できそうな気がするんでチャレンジしてみ > ます。 敗北しました。申し訳ないです。 ショートカットキーがInputMethodよりも優先されるのを利用して、PageDownと いうアクションにspaceキーを割り当ててごにょごにょしたんですがダメでした 。 ↓こんなコードで(実際にはKzEmbed内のtextarea/input要素にフォーカスがある ときにもニセキーイベントを発行してやらないといけません)。 static void act_page_down (GtkAction *action, KzWindow *kz) { GtkAccelKey key; GtkWidget *widget; widget = gtk_window_get_focus(GTK_WINDOW(kz)); if (GTK_IS_EDITABLE(widget)) { GdkEvent *event; event = gdk_event_new(GDK_KEY_PRESS); gtk_accel_map_lookup_entry("<Actions>/KzWindow/PageDown", &key); event->key.keyval = key.accel_key; event->key.send_event = TRUE; event->key.window = g_object_ref(widget->window); gtk_propagate_event(widget, event); gdk_event_free(event); } else { KzEmbed *kzembed; kzembed = KZ_EMBED(KZ_WINDOW_CURRENT_PAGE(kz)); kz_embed_page_down(KZ_EMBED(kzembed)); } } で、ですね、なぜうまくいかないのかといいますと、uimが gtk_key_snooper_install() を使ってるからなのです。で、さらに悲しいことにSCIMまでもが同じことしてま した。 つまり、IMがonになってると、風博士側ではIMに使われるキーは使えない、とい うことです。