[Kazehakase-devel 1760] Re: 要望いくつか

Back to archive index

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に使われるキーは使えない、とい
うことです。



Kazehakase-devel メーリングリストの案内
Back to archive index