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

はじめまして。

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

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

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

From: tnomura <tnomura@...>
Date: 2009-12-26 05:16:40 UTC
List: ruby-list #46708
野村@延岡です。自己レスです。

Ruby/GDK で X のキー入力イベントを発生させようとあれからいろいろやってみ 
ましたが
まだ、うまくいっていませんが、西山和広さんにおしえていただいたサンプル

http://gist.github.com/26081

を fake_key という名前でコンパイルして、system で呼び出すようにしたらな 
んとかソフトキーを動かすことができました。西山さんありがとうございまし 
た。いろいろ調べているう
ちにXlibやGtkについて興味が出てきたので勉強してみたいと思います。シャープの
NetWalker で使いたくて作ってみたのですが、Ruby/Gtkならカスタマイズが簡単 
なので
便利だと思います。勉強してきちんとしたものになるよう挑戦してみたいと思い 
ます。

#!/usr/bin/ruby

require 'gtk2'

class Button
  @@repeat = -1

  def initialize(id, label, chars)
    @id = id
    @label = label
    @chars = chars
    @n = chars.length
    @i = 0
   
    @button = Gtk::Button.new(label)
    @button.signal_connect("clicked") do
      if @@repeat == id
        system "fake_key BackSpace " + @chars[@i]
      else
        @i = 0
        system "fake_key " + @chars[@i]
      end
      @i = (@i + 1) % @n
      @@repeat = id
      STDOUT.flush
    end
  end
  attr_reader :button
end

window = Gtk::Window.new
window.signal_connect("delete_event") do
  Gtk.main_quit
end
window.keep_above = true
window.accept_focus = false

table = Gtk::Table.new(4, 4, true)
window.add(table)

button0 = Button.new(0," A J ", ['a','j'])
button1 = Button.new(1," T K ", ['t','k'])
button2 = Button.new(2," S Z ", ['s','z'])
button3 = Button.new(3," F V", ['f','v'])
button4 = Button.new(4," E X ", ['e','x'])
button5 = Button.new(5," M N ", ['m','n'])
button6 = Button.new(6," R L ", ['r','l'])
button7 = Button.new(7," - ' \" ", ['minus',"apostrope",'quotedbl'])
button8 = Button.new(8," I Y ", ['i','y'])
button9 = Button.new(9," H B ", ['h','b'])
button10 = Button.new(10," D G ", ['d','g'])
button11 = Button.new(11," , . ?", ['comma','period','question'])
button12 = Button.new(12," O P ", ['o','p'])
button13 = Button.new(13," U W ", ['u','w'])
button14 = Button.new(14," C Q ", ['c','q'])
button15 = Button.new(15,';:/\\', ['semicolon','colon','slash','backslash'])
button16 = Button.new(16," -> ", [''])
button17 = Button.new(17," BS ", ["BackSpace"])
button18 = Button.new(18,"Enter", ["Return"])
button19 = Button.new(19,"Space", ['space'])

table.attach_defaults(button0.button,0,1,0,1)
table.attach_defaults(button1.button,1,2,0,1)
table.attach_defaults(button2.button,2,3,0,1)
table.attach_defaults(button3.button,3,4,0,1)
table.attach_defaults(button4.button,0,1,1,2)
table.attach_defaults(button5.button,1,2,1,2)
table.attach_defaults(button6.button,2,3,1,2)
table.attach_defaults(button7.button,3,4,1,2)
table.attach_defaults(button8.button,0,1,2,3)
table.attach_defaults(button9.button,1,2,2,3)
table.attach_defaults(button10.button,2,3,2,3)
table.attach_defaults(button11.button,3,4,2,3)
table.attach_defaults(button12.button,0,1,3,4)
table.attach_defaults(button13.button,1,2,3,4)
table.attach_defaults(button14.button,2,3,3,4)
table.attach_defaults(button15.button,3,4,3,4)
table.attach_defaults(button16.button,0,1,4,5)
table.attach_defaults(button17.button,1,2,4,5)
table.attach_defaults(button18.button,2,3,4,5)
table.attach_defaults(button19.button,3,4,4,5)

window.show_all

Gtk.main


In This Thread

Prev Next