module Input

Module to parse key and mod to take into account special keys and extend Ruby/SDL’s key parsing

Author

Steven Davidovitz (steviedizzle@gmail.com)

Copyright

Copyright © 2006, The Nebular Gauntlet DEV team

License

GPL

Public Instance Methods

display_key(sym, mod) click to toggle source

Parses key and mod and calls insert

  • sym Key that is pressed

  • mod Mod key if pressed

# File lib/input.rb, line 15
def display_key(sym, mod)
  if mod == SDL::Key::MOD_NONE || mod == 4096
    unless sym >= 300 && sym <= 310 || sym == 271 || sym == 9 || sym == 319
      if SDL::Key.getKeyName(sym).length <= 1
        insert(SDL::Key.getKeyName(sym))
      end
    end
  elsif mod == (SDL::Key::MOD_LSHIFT || SDL::Key::MOD_RSHIFT) || mod == (4097 || 4098)
    case sym
    when 96
      insert("~")
    when 49
      insert("!")
    when 50
      insert("@")
    when 51
      insert("#")
    when 52
      insert("$")
    when 53
      insert("%")
    when 54
      insert("^")
    when 55
      insert("&")
    when 56
      insert("*")
    when 57
      insert("(")
    when 48
      insert(")")
    when 45
      insert("_")
    when 61
      insert("+")
    when 91
      insert("{")
    when 92
      insert("|")
    when 93
      insert("}")
    when 59
      insert(":")
    when 39
      insert('"')
    when 44
      insert("<")
    when 46
      insert(">")
    when 47
      insert("?")
    else
      if SDL::Key.getKeyName(sym).length <= 1
        insert(SDL::Key.getKeyName(sym).capitalize)
      end
    end
  elsif mod == SDL::Key::MOD_CAPS || mod == 12288
    unless sym >= 300 && sym <= 310 || sym == 271 || sym == 9 || sym == 319
      if SDL::Key.getKeyName(sym).length <= 1
        insert(SDL::Key.getKeyName(sym).capitalize)
      end
    end
  end
end
insert(str) click to toggle source

Inserts str into buffer at cursorPos

# File lib/input.rb, line 82
def insert(str)
  @buffer.insert(@cursor_pos, str)
  @cursor_pos += 1
end