|
7 | 7 | from typing import Callable, Iterator |
8 | 8 | from prompt_toolkit.application import create_app_session, AppSession |
9 | 9 |
|
| 10 | +from .dom_codes import DomCode |
10 | 11 | from .console import Console, InputGetter |
11 | | -from .keys import ( |
12 | | - FunctionalKeys, |
13 | | - LatinKeys, |
14 | | - Keys, |
15 | | -) |
16 | 12 | from .ansi_escape_code import ( |
17 | 13 | detect_keyboard_protocol_support_parser, |
18 | 14 | run_parser_in_app_session, |
|
37 | 33 | """ |
38 | 34 |
|
39 | 35 |
|
40 | | -def get_input_mapping(console: Console) -> dict[Keys, Console.Input]: |
| 36 | +def get_input_mapping(console: Console) -> dict[DomCode, Console.Input]: |
41 | 37 | return { |
42 | 38 | # Directions |
43 | | - FunctionalKeys.UP: console.Input.UP, |
44 | | - FunctionalKeys.DOWN: console.Input.DOWN, |
45 | | - FunctionalKeys.LEFT: console.Input.LEFT, |
46 | | - FunctionalKeys.RIGHT: console.Input.RIGHT, |
| 39 | + DomCode.ARROW_UP: console.Input.UP, |
| 40 | + DomCode.ARROW_DOWN: console.Input.DOWN, |
| 41 | + DomCode.ARROW_LEFT: console.Input.LEFT, |
| 42 | + DomCode.ARROW_RIGHT: console.Input.RIGHT, |
47 | 43 | # A button |
48 | | - LatinKeys.F: console.Input.A, |
49 | | - LatinKeys.V: console.Input.A, |
50 | | - LatinKeys.SPACE: console.Input.A, |
| 44 | + DomCode.US_F: console.Input.A, |
| 45 | + DomCode.US_V: console.Input.A, |
| 46 | + DomCode.SPACE: console.Input.A, |
51 | 47 | # B button |
52 | | - LatinKeys.D: console.Input.B, |
53 | | - LatinKeys.C: console.Input.B, |
54 | | - FunctionalKeys.LEFT_ALT: console.Input.B, |
55 | | - FunctionalKeys.RIGHT_ALT: console.Input.B, |
| 48 | + DomCode.US_D: console.Input.B, |
| 49 | + DomCode.US_C: console.Input.B, |
| 50 | + DomCode.ALT_LEFT: console.Input.B, |
| 51 | + DomCode.ALT_RIGHT: console.Input.B, |
56 | 52 | # Start button |
57 | | - FunctionalKeys.ENTER: console.Input.START, |
58 | | - FunctionalKeys.RIGHT_CONTROL: console.Input.START, |
| 53 | + DomCode.ENTER: console.Input.START, |
| 54 | + DomCode.CONTROL_RIGHT: console.Input.START, |
59 | 55 | # Select button |
60 | | - FunctionalKeys.RIGHT_SHIFT: console.Input.SELECT, |
61 | | - FunctionalKeys.BACKSPACE: console.Input.SELECT, |
| 56 | + DomCode.SHIFT_RIGHT: console.Input.SELECT, |
| 57 | + DomCode.BACKSPACE: console.Input.SELECT, |
62 | 58 | } |
63 | 59 |
|
64 | 60 |
|
65 | | -def get_event_mapping(console: Console) -> dict[Keys, Console.Event]: |
| 61 | +def get_event_mapping(console: Console) -> dict[DomCode, Console.Event]: |
66 | 62 | return { |
67 | | - LatinKeys.DIGIT_0: console.Event.SELECT_STATE_0, |
68 | | - LatinKeys.DIGIT_1: console.Event.SELECT_STATE_1, |
69 | | - LatinKeys.DIGIT_2: console.Event.SELECT_STATE_2, |
70 | | - LatinKeys.DIGIT_3: console.Event.SELECT_STATE_3, |
71 | | - LatinKeys.DIGIT_4: console.Event.SELECT_STATE_4, |
72 | | - LatinKeys.DIGIT_5: console.Event.SELECT_STATE_5, |
73 | | - LatinKeys.DIGIT_6: console.Event.SELECT_STATE_6, |
74 | | - LatinKeys.DIGIT_7: console.Event.SELECT_STATE_7, |
75 | | - LatinKeys.DIGIT_8: console.Event.SELECT_STATE_8, |
76 | | - LatinKeys.DIGIT_9: console.Event.SELECT_STATE_9, |
77 | | - LatinKeys.L: console.Event.LOAD_STATE, |
78 | | - LatinKeys.K: console.Event.SAVE_STATE, |
| 63 | + DomCode.DIGIT0: console.Event.SELECT_STATE_0, |
| 64 | + DomCode.DIGIT1: console.Event.SELECT_STATE_1, |
| 65 | + DomCode.DIGIT2: console.Event.SELECT_STATE_2, |
| 66 | + DomCode.DIGIT3: console.Event.SELECT_STATE_3, |
| 67 | + DomCode.DIGIT4: console.Event.SELECT_STATE_4, |
| 68 | + DomCode.DIGIT5: console.Event.SELECT_STATE_5, |
| 69 | + DomCode.DIGIT6: console.Event.SELECT_STATE_6, |
| 70 | + DomCode.DIGIT7: console.Event.SELECT_STATE_7, |
| 71 | + DomCode.DIGIT8: console.Event.SELECT_STATE_8, |
| 72 | + DomCode.DIGIT9: console.Event.SELECT_STATE_9, |
| 73 | + DomCode.US_L: console.Event.LOAD_STATE, |
| 74 | + DomCode.US_K: console.Event.SAVE_STATE, |
79 | 75 | } |
80 | 76 |
|
81 | 77 |
|
82 | 78 | def make_get_input( |
83 | 79 | console: Console, |
84 | | - get_pressed: Callable[[], set[Keys]], |
| 80 | + get_pressed: Callable[[], set[DomCode]], |
85 | 81 | ) -> InputGetter: |
86 | | - current_pressed: set[Keys] = set() |
| 82 | + current_pressed: set[DomCode] = set() |
87 | 83 | input_mapping = get_input_mapping(console) |
88 | 84 | event_mapping = get_event_mapping(console) |
89 | 85 |
|
@@ -158,7 +154,7 @@ def key_pressed_context( |
158 | 154 | app_session: AppSession, |
159 | 155 | display: str | None = None, |
160 | 156 | xdg_session_type: str | None = None, |
161 | | -) -> Iterator[Callable[[], set[Keys]]]: |
| 157 | +) -> Iterator[Callable[[], set[DomCode]]]: |
162 | 158 | if run_parser_in_app_session( |
163 | 159 | app_session, detect_keyboard_protocol_support_parser |
164 | 160 | ).is_supported(): |
@@ -193,16 +189,14 @@ def main() -> None: |
193 | 189 | if key.key == "c-d": |
194 | 190 | raise EOFError |
195 | 191 | # Get codes |
196 | | - codes = (x.name for x in get_pressed()) |
| 192 | + line = " ".join(x.value for x in get_pressed()) |
197 | 193 | # Print pressed key codes |
198 | | - print(*codes, flush=True, end="") |
199 | | - # Tick |
200 | | - time.sleep(1 / 30) |
201 | | - # Clear line and hide cursor |
202 | | - app_session.output.write_raw("\r") |
| 194 | + app_session.output.write_raw(f"\r{line}") |
203 | 195 | app_session.output.erase_down() |
204 | 196 | # Flush output |
205 | 197 | app_session.output.flush() |
| 198 | + # Tick |
| 199 | + time.sleep(1 / 30) |
206 | 200 | except (KeyboardInterrupt, EOFError): |
207 | 201 | pass |
208 | 202 | except RuntimeError as error: |
|
0 commit comments