Class: Teletype::Key
- Inherits:
-
Object
- Object
- Teletype::Key
- Defined in:
- lib/teletype/key.rb
Overview
Key implements console reading for multibyte inputs and translates to unicode characters. The unicode characters will be useful when displaying the inputs back to console.
Constant Summary collapse
- DICTIONARY =
{ "\e" => '␛', "\e[1;5A" => '↥', # ctrl-up "\e[1;5B" => '↧', # ctrl-down "\e[1;5C" => '↦', # ctrl-right "\e[1;5D" => '↤', # ctrl-left "\e[1~" => '⌂', # home "\e[2~" => '⎀', # insert "\e[3~" => '⌦', # delete "\e[3;2~" => '↱', # shift+delete "\e[3;5~" => '↪', # ctrl+delete "\e[4~" => '↘', # end "\e[5~" => '⇞', # page up "\e[6~" => '⇟', # page down "\e[7~" => '⌂', # home "\e[8~" => '↘', # end "\e[A" => '↑', "\e[B" => '↓', "\e[C" => '→', "\e[D" => '←', "\e[E" => '⇲', # clear "\e[H" => '⌂', # home "\e[F" => '↘', # end "\e[Z" => '⇤', # backtab(shift + tab) "\u0003" => '⏻', "\u007F" => '⌫', # backspace "\r" => "\n", "\t" => '⇥' }.freeze
Class Method Summary collapse
Class Method Details
.read ⇒ Object
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
# File 'lib/teletype/key.rb', line 44 def self.read blocking = true chars = [] $stdin.raw do $stdin.noecho do loop do if blocking chars << $stdin.getc blocking = false elsif $stdin.ready? chars << $stdin.getc else key = chars.join return DICTIONARY[key] || key end end end end end |