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!" }
War es hilfreich?

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
scroll top