class Keyboard

Constants

KEYS
STOP_SEQ

Public Class Methods

draw() click to toggle source
# File sample/keyboard.rb, line 51
def self.draw
  Termbox.tb_change_cell(0,  0,  0x250C, Termbox::Colors[:white], Termbox::Colors[:default])
  Termbox.tb_change_cell(79, 0,  0x2510, Termbox::Colors[:white], Termbox::Colors[:default])
  Termbox.tb_change_cell(0,  23, 0x2514, Termbox::Colors[:white], Termbox::Colors[:default])
  Termbox.tb_change_cell(79, 23, 0x2518, Termbox::Colors[:white], Termbox::Colors[:default])


  1.upto(79) do |i|
    Termbox.tb_change_cell(i, 0, 0x2500, Termbox::Colors[:white], Termbox::Colors[:default])
    Termbox.tb_change_cell(i, 23, 0x2500, Termbox::Colors[:white], Termbox::Colors[:default])
    Termbox.tb_change_cell(i, 17, 0x2500, Termbox::Colors[:white], Termbox::Colors[:default])
    Termbox.tb_change_cell(i, 4, 0x2500, Termbox::Colors[:white], Termbox::Colors[:default])
  end

  1.upto(23) do |i|
    Termbox.tb_change_cell(0, i, 0x2502, Termbox::Colors[:white], Termbox::Colors[:default])
    Termbox.tb_change_cell(79, i, 0x2502, Termbox::Colors[:white], Termbox::Colors[:default])
  end

  Termbox.tb_change_cell(0, 17, 0x251C, Termbox::Colors[:white], Termbox::Colors[:default])
  Termbox.tb_change_cell(79, 17, 0x2524, Termbox::Colors[:white], Termbox::Colors[:default])
  Termbox.tb_change_cell(0, 4, 0x251C, Termbox::Colors[:white], Termbox::Colors[:default])
  Termbox.tb_change_cell(79, 4, 0x2524, Termbox::Colors[:white], Termbox::Colors[:default])

  5.upto(17) do |i|
    Termbox.tb_change_cell(1, i, 0x2588, Termbox::Colors[:yellow], Termbox::Colors[:yellow])
    Termbox.tb_change_cell(78, i, 0x2588, Termbox::Colors[:yellow], Termbox::Colors[:yellow])
  end
  draw_key "ESC", Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "F1",  Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "F2",  Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "F3",  Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "F4",  Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "F5",  Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "F6",  Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "F7",  Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "F8",  Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "F9",  Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "F10", Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "F11", Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "F12", Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "PRN", Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "BRK", Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "LED1", Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "LED2", Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "LED3", Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "`", Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "1", Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "2", Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "3", Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "4", Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "5", Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "6", Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "7", Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "8", Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "9", Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "0", Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "-", Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "=", Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "\\", Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "BACKSPACE", Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "INS", Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "HOM", Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "PGU", Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "PGU", Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "NUMLOCK", Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "K_SLASH", Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "K_STAR", Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "K_MINUS", Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "TAB", Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "q", Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "w", Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "e", Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "r", Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "t", Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "y", Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "u", Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "i", Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "o", Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "p", Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "u", Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "i", Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "o", Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "p", Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "[", Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "]", Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "DEL", Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "PGD", Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "K_7", Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "K_8", Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "K_9", Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "K_PLUS", Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "CAPS", Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "a", Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "s", Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "d", Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "f", Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "g", Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "h", Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "j", Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "k", Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "l", Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key ";", Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "'", Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "K_4", Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "K_5", Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "K_6", Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "L_SHIFT", Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "z", Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "x", Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "c", Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "v", Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "b", Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "n", Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "m", Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key ",", Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key ".", Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "/", Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "R_SHIFT", Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "ARROW_UP", Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "K_1", Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "K_2", Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "K_3", Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "K_ENTER", Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "L_CTRL", Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "L_MOD4", Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "SPACE", Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "R_CTRL", Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "R_PROP", Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "R_MOD4", Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "R_ALT", Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "ARROW_LEFT", Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "ARROW_DOWN", Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "ARROW_RIGHT", Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "K_0", Termbox::Colors[:white], Termbox::Colors[:blue]
  draw_key "K_PERIOD", Termbox::Colors[:white], Termbox::Colors[:blue]
end
draw_key(key, fg, bg) click to toggle source
# File sample/keyboard.rb, line 190
def self.draw_key key, fg, bg

  seq = Keyboard::KEYS[key] || []
  seq.each do |k|
    Termbox.tb_change_cell(k[:x]+2,k[:y]+4, k[:ch], fg, bg);
  end
end
draw_word(phrase, x=70, y=30) click to toggle source
# File sample/keyboard.rb, line 198
def self.draw_word phrase, x=70, y=30
  cur_x = x
  cur_y = y
  phrase.split("").each do |char|
    Termbox.tb_change_cell(cur_x,cur_y, char.ord, Termbox::Colors[:white], Termbox::Colors[:blue]);
    cur_x = cur_x + 1
  end
end
handle_keypress(event) click to toggle source
# File sample/keyboard.rb, line 207
def self.handle_keypress event
  draw_word "Pressed '#{event.inspect}'"
end
run() click to toggle source
# File sample/keyboard.rb, line 6
def self.run

  # Tell termbox where your shared lib is
  Termbox.termbox_library_path "termbox"

  # Call initialize_library once the above is set, this links us to the library C functions
  Termbox.initialize_library

  start = Termbox.tb_init
  if start
    Termbox.tb_select_input_mode 1 # TB_INPUT_ESC
    ev = Termbox::Event.new
    Termbox.tb_clear
    draw
    draw_word "Keyboard started. Press CTRL + Q to quit."
    Termbox.tb_present
    while Termbox.tb_poll_event(ev) >= 0 do
      case ev[:type]
        when 1 #TB_EVENT_KEY
          if ev[:key] == 0x11 # CTRL_Q
            Termbox.tb_shutdown
            exit
          end

          Termbox.tb_clear
          draw
          if ev[:mod] > 0
            draw_word "Pressed mod? (#{ev[:mod].inspect})", 60, 35
          end

          if ev[:key] > 0
            draw_word "Pressed #{Termbox.reverse_key_lookup(ev[:key]) || "?"}  -- #{ev[:ch].inspect}"
          elsif ev[:ch]> 0
            draw_word "Pressed key #{[ev[:ch]].pack("C*")} (#{ev[:ch]})"
          end
          Termbox.tb_present
        else
          draw_word "????"
      end
    end
  else
    raise "tb_init() failed"
  end
end