MCPcopy
hub / github.com/volcengine/OpenViking / _read_menu_key

Function _read_menu_key

openviking_cli/setup_wizard.py:160–176  ·  view source on GitHub ↗

Read one key press from *fd*, decoding arrow-key escape sequences. Reads at the file-descriptor level (``os.read``) — ``sys.stdin`` is buffered and its readahead would consume escape-sequence bytes behind ``select``'s back.

(fd: int)

Source from the content-addressed store, hash-verified

158
159
160def _read_menu_key(fd: int) -> str:
161 """Read one key press from *fd*, decoding arrow-key escape sequences.
162
163 Reads at the file-descriptor level (``os.read``) — ``sys.stdin`` is
164 buffered and its readahead would consume escape-sequence bytes behind
165 ``select``'s back.
166 """
167 data = os.read(fd, 1)
168 if data != b"\x1b":
169 return data.decode("utf-8", errors="ignore")
170 if not select.select([fd], [], [], 0.05)[0]:
171 return "\x1b"
172 if os.read(fd, 1) != b"[":
173 return "\x1b"
174 if not select.select([fd], [], [], 0.05)[0]:
175 return "\x1b"
176 return "\x1b[" + os.read(fd, 1).decode("utf-8", errors="ignore")
177
178
179def _prompt_choice_interactive(

Callers 1

Calls 1

readMethod · 0.45

Tested by

no test coverage detected