Module: PryRemoteEm::Client::Keyboard
- Defined in:
- lib/pry-remote-em/client/keyboard.rb
Instance Method Summary collapse
-
#bufferio(enable) ⇒ Object
Makes stdin buffered or unbuffered.
- #initialize(c) ⇒ Object
- #receive_data(d) ⇒ Object
- #unbind ⇒ Object
Instance Method Details
#bufferio(enable) ⇒ Object
Makes stdin buffered or unbuffered. In unbuffered mode read and select will not wait for ānā; also will not echo characters. This probably does not work on Windows.
33 34 35 36 37 38 39 |
# File 'lib/pry-remote-em/client/keyboard.rb', line 33 def bufferio(enable) return if !defined?(Termios) || enable && @buff_enabled || !enable && !@buff_enabled attr = Termios.getattr($stdin) enable ? (attr.c_lflag |= Termios::ICANON | Termios::ECHO) : (attr.c_lflag &= ~(Termios::ICANON|Termios::ECHO)) Termios.setattr($stdin, Termios::TCSANOW, attr) @buff_enabled = enable end |
#initialize(c) ⇒ Object
7 8 9 10 11 12 13 14 15 16 17 |
# File 'lib/pry-remote-em/client/keyboard.rb', line 7 def initialize(c) @con = c # TODO check actual current values to determine if it's enabled or not @buff_enabled = true bufferio(false) @old_trap = Signal.trap(:INT) do @con.send_shell_sig(:int) end end |
#receive_data(d) ⇒ Object
19 20 21 22 |
# File 'lib/pry-remote-em/client/keyboard.rb', line 19 def receive_data(d) print d.chr @con.send_shell_data(d) end |
#unbind ⇒ Object
24 25 26 27 28 |
# File 'lib/pry-remote-em/client/keyboard.rb', line 24 def unbind bufferio(true) Signal.trap(:INT, @old_trap) end |