Class: Vedeu::Input
- Inherits:
-
Object
- Object
- Vedeu::Input
- Defined in:
- lib/vedeu/input/input.rb
Overview
Captures input from the user via Terminal#input and translates special characters into symbols.
Instance Attribute Summary collapse
-
#reader ⇒ Object
readonly
private
Returns the value of attribute reader.
Class Method Summary collapse
-
.capture(reader) ⇒ String|Symbol
Instantiate Input and capture keypress(es).
Instance Method Summary collapse
-
#capture ⇒ Array|String|Symbol
Triggers the keypress event with the key(s) pressed.
-
#initialize(reader) ⇒ Input
constructor
Returns a new instance of Input.
-
#input ⇒ String
private
Returns the input from the terminal.
-
#keypress ⇒ String|Symbol
private
Returns the translated (if possible) keypress(es) as either a String or a Symbol.
-
#specials ⇒ Hash
private
Translates (if possible) entered escape sequences into symbols representing the key which was pressed.
Constructor Details
#initialize(reader) ⇒ Input
Returns a new instance of Input.
22 23 24 |
# File 'lib/vedeu/input/input.rb', line 22 def initialize(reader) @reader = reader end |
Instance Attribute Details
#reader ⇒ Object (readonly, private)
Returns the value of attribute reader.
35 36 37 |
# File 'lib/vedeu/input/input.rb', line 35 def reader @reader end |
Class Method Details
.capture(reader) ⇒ String|Symbol
Instantiate Input and capture keypress(es).
13 14 15 |
# File 'lib/vedeu/input/input.rb', line 13 def self.capture(reader) new(reader).capture end |
Instance Method Details
#capture ⇒ Array|String|Symbol
Triggers the keypress event with the key(s) pressed.
29 30 31 |
# File 'lib/vedeu/input/input.rb', line 29 def capture Vedeu.trigger(:_keypress_, keypress) end |
#input ⇒ String (private)
Returns the input from the terminal.
40 41 42 |
# File 'lib/vedeu/input/input.rb', line 40 def input @input ||= reader.read end |
#keypress ⇒ String|Symbol (private)
Returns the translated (if possible) keypress(es) as either a String or a Symbol.
48 49 50 51 52 |
# File 'lib/vedeu/input/input.rb', line 48 def keypress key = input specials.fetch(key, key) end |
#specials ⇒ Hash (private)
Translates (if possible) entered escape sequences into symbols representing the key which was pressed.
58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 |
# File 'lib/vedeu/input/input.rb', line 58 def specials { "\r" => :enter, "\t" => :tab, "\e" => :escape, "\e[A" => :up, "\e[B" => :down, "\e[C" => :right, "\e[D" => :left, "\e[5~" => :page_up, "\e[6~" => :page_down, "\e[H" => :home, "\e[3~" => :delete, "\e[F" => :end, "\e[Z" => :shift_tab, "\eOP" => :f1, "\eOQ" => :f2, "\eOR" => :f3, "\eOS" => :f4, "\e[15~" => :f5, "\e[17~" => :f6, "\e[18~" => :f7, "\e[19~" => :f8, "\e[20~" => :f9, "\e[21~" => :f10, "\e[23~" => :f11, "\e[24~" => :f12, "\e[1;2P" => :print_screen, "\e[1;2Q" => :scroll_lock, "\e[1;2R" => :pause_break, "\u007F" => :backspace, "\u0001" => :ctrl_a, "\u0002" => :ctrl_b, "\u0003" => :ctrl_c, "\u0004" => :ctrl_d, "\u0005" => :ctrl_e, "\u0006" => :ctrl_f, "\u0007" => :ctrl_g, "\u0008" => :ctrl_h, # "\u0009" => :ctrl_i, # duplicates tab "\u0010" => :ctrl_j, "\u0011" => :ctrl_k, "\u0012" => :ctrl_l, "\u0013" => :ctrl_m, "\u0014" => :ctrl_n, "\u0015" => :ctrl_o, "\u0016" => :ctrl_p, "\u0017" => :ctrl_q, "\u0018" => :ctrl_r, "\u0019" => :ctrl_s, # "\u0020" => :ctrl_t, # duplicates spacebar "\u0021" => :ctrl_u, "\u0022" => :ctrl_v, "\u0023" => :ctrl_w, "\u0024" => :ctrl_x, "\u0025" => :ctrl_y, "\u0026" => :ctrl_z, } end |