昨日と今日の二日を潰して、ボタンからキー入力イベントをソフトウェア的に発生させる事ができた。忘れてしまうのはもったいないので下にプログラムを掲載した。
ソフトウェア・キーボード実現のハードルとしては、このイベントをXサーバーを介して他のフォーカスされたウィンドウに渡すことができるかということ。キーボードをフォーカスさせないようにすることと、stay on top で最前面に張り付けることが必要だが、それはGTK+の仕事ではなくて、ウィンドウマネージャーの仕事らしい。 GNOMEのホームページをざっと眺めたが関連の記事を見つけ出せなかった。ソフトウェアキーボードのアプリは既にあるのだから、ソースを取り寄せて調べれば良いのだろうけれどそこまでの知識と時間がない。Ruby/Gtk2 のチュートリアルか何かでイベントを他のアプリケーションに送る方法を取り扱ってもらえるといいのだが。 これ以上は先へ進めそうにないので、ひとまずソフトウェアキーボードの記事はこれで終わる。カスタマイズが簡単なRuby/Gtk2 のソフトウェアーキーボードのソフトが出現するのをじっと待つことにする。 イベントを他のアプリケーションに送りたいなどという贅沢を言わなければ、Ruby/Gtk+2でのプログラム作りはとても楽だった。GUIプログラミングへの気持ちの壁がかなり低くなったような気がする。部品は最初から豊富に揃っているし、イベントに応じてコールバック関数を数行書くだけで、それらしい動作をしてくれる。Ruby の手軽さも手伝って、お気楽GUIプログラミングを楽しめた。これで、また楽しみがひとつ増えた気がする。 require 'gtk2' event = Gdk::EventKey.new(Gdk::Event::KEY_PRESS) event.set_keyval(?a) window = Gtk::Window.new window.signal_connect('destroy') { Gtk.main_quit } window.signal_connect('key-press-event'){|w,e| print e.keyval, ': ', e.keyval.chr, "\n" false } button = Gtk::Button.new("key-press-event") button.signal_connect("clicked") { puts "clicked" window.signal_emit('key-press-event', event) false } window.add(button) window.show_all Gtk.main
by tnomura9
| 2009-12-20 17:45
| NetWalker
|
Comments(0)
|
カテゴリ
新型コロナウイルス 主インデックス Haskell 記事リスト 圏論記事リスト 考えるということのリスト 考えるということ ラッセルのパラドックス Haskell Prelude Ocaml ボーカロイド 圏論 jQuery デモ HTML Python ツールボックス XAMPP Ruby ubuntu WordPress 脳の話 話のネタ リンク 幸福論 キリスト教 心の話 メモ 電子カルテ Dojo JavaScript C# NetWalker ed と sed HTML Raspberry Pi C 言語 命題論理 以前の記事
最新のトラックバック
最新のコメント
ファン
記事ランキング
ブログジャンル
画像一覧
|
ファン申請 |
||