Sha256: 817c331fb5dbc5347f9af0807a078fa0707f43dab0c38a765bc619a2636bf62d

Contents?: true

Size: 857 Bytes

Versions: 3

Compression:

Stored size: 857 Bytes

Contents

class Keyboard
  A_TO_Z = ('a'..'z').to_a

  def self.listen
    loop do
      key = Curses.getch

      code = case key

      # move
      when Curses::Key::UP then :up
      when Curses::Key::DOWN then :down
      when Curses::Key::RIGHT then :right
      when Curses::Key::LEFT then :left
      when Curses::KEY_END then :end
      when Curses::KEY_HOME then :home
      when Curses::KEY_NPAGE then :page_down
      when Curses::KEY_PPAGE then :page_up

      # modify
      when 9 then :tab
      when 13 then :enter # shadows Ctrl+m
      when 32..126 then key # printable
      when 263, 127 then :backspace # ubuntu / mac
      when Curses::KEY_DC then :delete

      # misc
      when 0 then :"Ctrl+space"
      when 1..26 then :"Ctrl+#{A_TO_Z[key-1]}"
      when 27 then :escape
      else
        key
      end

      yield code
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
ruco-0.0.11 lib/ruco/keyboard.rb
ruco-0.0.10 lib/ruco/keyboard.rb
ruco-0.0.9 lib/ruco/keyboard.rb