Rubyクックブックを見ていたらLEDをチカチカさせて遊ぶ方法が載ってたのでやってみた.
キーボードLEDを点滅(明滅)させる
require 'rubygems'
require 'blinkenlights'
BlinkenLights.open{|l|
10.times{ l.right_to_left}
}何の意味もないけど,楽しい.
注意点Windowsnではキー点滅するとNumlockも連動
blinkenlights楽しいけれどWindowsだと実用性が無い。それはキー状態も書き換わるからだ.
- UNIXだとキー状態と切り離してLEDがチカチカ出来る
- Windowsだと出来ない。LEDが付くとNumlockも連動する,
cygwinの場合のError
エラー箇所を調べると・・・
>Errno::ENOENT: No such file or directory - NUL >from /usr/lib/ruby/gems/1.8/gems/blinkenlights-0.1.0/lib/blinkenlights.rb:91:in `initialize' >from /usr/lib/ruby/gems/1.8/gems/blinkenlights-0.1.0/lib/blinkenlights.rb:91:in `new' >from /usr/lib/ruby/gems/1.8/gems/blinkenlights-0.1.0/lib/blinkenlights.rb:91:in `initialize' >from /usr/lib/ruby/gems/1.8/gems/blinkenlights-0.1.0/lib/blinkenlights.rb:118:in `new' >from /usr/lib/ruby/gems/1.8/gems/blinkenlights-0.1.0/lib/blinkenlights.rb:118:in `open' >from (irb):3
NULという仮想ファイル(Windows用)を開こうとして落ちている。仕方ないのでソースを書換えた
cygwin 要所修正
blinkenlights.rb
>
>  if defined? ::Win32API
>    def initialize(ignored = nil, delay = DEF_DELAY) # :nodoc:
>      @tty      = File.new('NUL', File::RDWR) if File.exist? 'NULL'
>      @tty      = File.new('/dev/null', File::RDWR) if File.exist? '/dev/null'
>      @delay    = delay
>      @old_leds = get
>    end
>  else
>    # Creates a BlinkenLights instance for _tty_, a full pathname like
>    # '/dev/tty8' to control the LEDs. This parameter is ignored under the
>    # Windows operating system.
>    #
>    # _delay_ is the standard delay in seconds,
>    # that is slept everytime the LED state is changed. If _delay_ is too small
>    # your keyboard may become confused about its LEDs' status.
>    def initialize(tty = DEF_TTY, delay = DEF_DELAY)
>      @tty      = File.new('NUL', File::RDWR) if File.exist? 'NULL'
>      @tty      = File.new('/dev/null', File::RDWR) if File.exist? '/dev/null'
>      @delay    = delay
>      @old_leds = get
>    end
>  endこれでチカチカする。
使い方はこんな感じ
全部を点滅させて消す
require 'rubygems' require 'blinkenlights' BlinkenLights.open{|l| l.left = true l.middle = true l.right = true l.left = false l.middle = false l.right = false }
順番に点滅させて遊ぶ
BlinkenLights.open{|l|
  10.times{ l.left_to_right}
  10.times{ l.random }
  10.times{ l.right_to_left}
  10.times{ l.left_to_right;l.right_to_left}
}左から右へ
BlinkenLights.open{|l|
l.left_to_right
}
キーとメソッドの名前の対応
NumLock   : left
Capslock   : middle
ScrollLocl : right
にそれぞれ対応している
楽しい
意味もなく、楽しい
