summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/reline/ansi.rb11
1 files changed, 8 insertions, 3 deletions
diff --git a/lib/reline/ansi.rb b/lib/reline/ansi.rb
index 41f291809e..a3401b9c9f 100644
--- a/lib/reline/ansi.rb
+++ b/lib/reline/ansi.rb
@@ -1,5 +1,3 @@
-require 'io/console'
-
class Reline::ANSI
RAW_KEYSTROKE_CONFIG = {
[27, 91, 65] => :ed_prev_history, # ↑
@@ -26,7 +24,14 @@ class Reline::ANSI
unless @@buf.empty?
return @@buf.shift
end
- @@input.getch&.ord
+ c = nil
+ loop do
+ result = select([@@input], [], [], 0.1)
+ next if result.nil?
+ c = @@input.read(1)
+ break
+ end
+ c&.ord
end
def self.ungetc(c)