From: Masao M. <mu...@hi...> - 2003-10-18 12:33:42
|
さかいさん むとうです。 Gdk::Keymapをインプリしていて気づいたのですが、 以下のサンプルが動作しません。 実行した後、ウインドウをアクティブにしてから 何かキーを入力してください。 #あ、CVSの最新版で試してください。 ---------- require 'gtk2' Gtk.init window = Gtk::Window.new keymap = Gdk::Keymap.default window.set_events(Gdk::Event::KEY_PRESS_MASK) window.signal_connect("key_press_event") do |w, e| p keymap.translate_keyboard_state(e.hardware_keycode, e.state, e.group) end window.show_all Gtk.main ---------- で、色々やった結果、Ruby/GLib2の方に以下のパッチを適用すると 動作するようになりました。 #ってただ、チェックを外しただけなのですが。 これってこの対応で良いですかね? それとも、Gdk::Keymap#translate_keyboard_state側で対処すべき? Index: rbgobj_enums.c =================================================================== RCS file: /cvsroot/ruby-gnome2/ruby-gnome2/glib/src/rbgobj_enums.c,v retrieving revision 1.12 diff -u -r1.12 rbgobj_enums.c --- rbgobj_enums.c 31 Aug 2003 05:39:57 -0000 1.12 +++ rbgobj_enums.c 17 Oct 2003 16:36:17 -0000 @@ -568,8 +568,6 @@ p->value = p->info->value; } else { p->value = NUM2UINT(arg); - if ((p->gclass->mask & p->value) != p->value) - rb_raise(rb_eArgError, "invalid argument"); } } -- .:% Masao Mutoh<mu...@hi...> |