Ruby Fluts: Wie man Strg/Metaschlüssel mit bekommt
Frage
Ich versuche zu Curses.getchr
, aber Schlüssel mögen Strg+s werden nicht gefangen genommen, gibt es eine LIB, die es mir ermöglicht, sie zu fangen und das Beste von allen etwas Intuitiven/Lesbarem wie
FooBar.bind('Ctrl+s'){ raise "dont save!" }
Lösung
Strg+s wird normalerweise vom Terminal gepackt, so dass Sie also setzen müssen Curses
im rohen Modus, um diesen Schlüssel zu erfassen. Hier ist ein Beispiel:
#!/usr/bin/ruby
require 'curses'
Curses.raw # intercept everything
Curses.noecho
loop do
case Curses.getch
when ?q then break
when ?b then Curses.addch ?b
when ?\C-s then Curses.addstr "^s" # Ctrl+S
end
end
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow