Я хочу сделать консольное приложение, и ему нужно получать ввод с консоли.
Я обнаружил, что он хорошо работает на альтернативном экране, но есть вопрос.
Когда я прокручиваю в Apple Terminal, код не может поймать операцию прокрутки, но печатает ^[OA
на терминале. Этого не произойдет в iTerm.app
И этого также не произойдет при использовании less
или vim
в Terminal.app
Я надеюсь, что смогу прочитать операцию прокрутки и не показывать ^[OA
Вот мой пример кода Ruby:
#!/usr/bin/env ruby
require 'io/console'
def rc
STDIN.echo = false
STDIN.raw!
input = STDIN.getc.chr
if input == "\e" then
input << STDIN.read_nonblock(3) rescue nil
input << STDIN.read_nonblock(2) rescue nil
end
ensure
STDIN.echo = true
STDIN.cooked!
return input
STDIN.getch
end
print "\e[?1049h"
print "\e[?1h"
print "\e="
print "\e[1;24r"
loop do
c = rc
break if c == "\u0003"
p c
print c
end
print "\e[?1049l"