[#46647] RubyでWindowsの常駐サービスプログラムを作る方法 — kouichi_someya@...

はじめまして。

12 messages 2009/12/16
[#46649] Re: RubyでWindowsの常駐サービスプログラムを作る方法 — "U.Nakamura" <usa@...> 2009/12/17

こんにちは、なかむら(う)です。

[ruby-list:46673] Ruby/GTK2でキー入力イベントをソフトウェア的に発生できません。

From: Tomokiyo Nomura <tnomura@...>
Date: 2009-12-20 23:18:11 UTC
List: ruby-list #46673
野村@延岡です。
Ruby/GTK2 でソフトウェアーキーボードを作ろうと思っていろいろ調べて
いるのですが、ボタンをクリックした時にキー入力イベントを発生させる
ところで煮詰まっています。

キーボードのウィンドウは
window.keep_above = true
window.accept_focus = false
で最前面に貼り付け、フォーカス禁止にしています。

ボタンのコールバックは、
display = Gdk::Display.default
event = Gdk::EventKey.new(Gdk::Event::KEY_PRESS)
event.set_keyval(?a)
として、
button.signal_conncet('clicked'){
  event.put
  display.flush
}
で、プログラムしていますが、

ソフトウエアキーボードを起動したあと、新しいターミナルを
起動して、ボタンをクリックしても反応がありません。

Google でプログラム例を探したのですが、どうしても見つけられ
ませんでした。

よろしくお願いします。

野村朝清@延岡市

ちなみに、テストプログラムはこれです。

#!/usr/bin/ruby

require 'gtk2'

event = Gdk::EventKey.new(Gdk::Event::KEY_PRESS)
event.set_keyval(?a)

display = Gdk::Display.default

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"
#  true
#}

window.keep_above = true
window.accept_focus = false

button = Gtk::Button.new("key-press-event")
button.signal_connect("clicked") {
  puts "clicked"
#  window.signal_emit('key-press-event', event)
#  false
  event.put
  display.flush
}

window.add(button)
window.show_all
Gtk.main



In This Thread

Prev Next