diff --git a/src/cmdforge/cli/picker.py b/src/cmdforge/cli/picker.py index 7567dd9..b5ef402 100644 --- a/src/cmdforge/cli/picker.py +++ b/src/cmdforge/cli/picker.py @@ -4,7 +4,6 @@ import sys import os import tty import termios -import select from typing import List, Tuple, Optional from dataclasses import dataclass @@ -110,17 +109,14 @@ class TTYInput: try: ch = self.tty.read(1) if ch == '\x1b': - # Use select to check if more chars available (escape sequence) - # Timeout of 0.05s - if nothing comes, it was just Escape - if select.select([self.fd], [], [], 0.05)[0]: - ch2 = self.tty.read(1) - if ch2 == '[': - if select.select([self.fd], [], [], 0.05)[0]: - ch3 = self.tty.read(1) - if ch3 == 'A': return 'UP' - if ch3 == 'B': return 'DOWN' - if ch3 == 'C': return 'RIGHT' - if ch3 == 'D': return 'LEFT' + # Read escape sequence - bytes arrive together from terminal + ch2 = self.tty.read(1) + if ch2 == '[': + ch3 = self.tty.read(1) + if ch3 == 'A': return 'UP' + if ch3 == 'B': return 'DOWN' + if ch3 == 'C': return 'RIGHT' + if ch3 == 'D': return 'LEFT' return ch finally: termios.tcsetattr(self.fd, termios.TCSANOW, self.old_settings)