№14
Получаем 1 символ из ввода пользователя, перехватывая нажатия Ctrl и Alt.
Содержимое test.rb
def get_char
key = ""
begin
system("stty raw -echo")
f = STDIN.getc
if (1..26) === f
key = "C-" + (f + 96).chr
elsif f == ?\e
c = STDIN.getc
if (1..26) === c
key = "C-A-" + (c + 96).chr
else
key = "A-" + c.chr
end
else
if f >= 208
key = f.chr + STDIN.getc.chr
else
key = f.chr
end
end
ensure
system("stty -raw echo")
end
key
end
while c = get_char
exit if c == "q"
puts c
end
Запускаем:
$ ruby test.rb
a
a
ф
ф
Ctrl+s
C-s
Alt+d
A-d
1
1
Ctrl+Alt+w
C-A-w