batrachian-toad 0.5.22__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- batrachian_toad-0.5.22.dist-info/METADATA +197 -0
- batrachian_toad-0.5.22.dist-info/RECORD +120 -0
- batrachian_toad-0.5.22.dist-info/WHEEL +4 -0
- batrachian_toad-0.5.22.dist-info/entry_points.txt +2 -0
- batrachian_toad-0.5.22.dist-info/licenses/LICENSE +661 -0
- toad/__init__.py +46 -0
- toad/__main__.py +4 -0
- toad/_loop.py +86 -0
- toad/about.py +90 -0
- toad/acp/agent.py +671 -0
- toad/acp/api.py +47 -0
- toad/acp/encode_tool_call_id.py +12 -0
- toad/acp/messages.py +138 -0
- toad/acp/prompt.py +54 -0
- toad/acp/protocol.py +426 -0
- toad/agent.py +62 -0
- toad/agent_schema.py +70 -0
- toad/agents.py +45 -0
- toad/ansi/__init__.py +1 -0
- toad/ansi/_ansi.py +1612 -0
- toad/ansi/_ansi_colors.py +264 -0
- toad/ansi/_control_codes.py +37 -0
- toad/ansi/_keys.py +251 -0
- toad/ansi/_sgr_styles.py +64 -0
- toad/ansi/_stream_parser.py +418 -0
- toad/answer.py +22 -0
- toad/app.py +557 -0
- toad/atomic.py +37 -0
- toad/cli.py +257 -0
- toad/code_analyze.py +28 -0
- toad/complete.py +34 -0
- toad/constants.py +58 -0
- toad/conversation_markdown.py +19 -0
- toad/danger.py +371 -0
- toad/data/agents/ampcode.com.toml +51 -0
- toad/data/agents/augmentcode.com.toml +40 -0
- toad/data/agents/claude.com.toml +41 -0
- toad/data/agents/docker.com.toml +59 -0
- toad/data/agents/geminicli.com.toml +28 -0
- toad/data/agents/goose.ai.toml +51 -0
- toad/data/agents/inference.huggingface.co.toml +33 -0
- toad/data/agents/kimi.com.toml +35 -0
- toad/data/agents/openai.com.toml +53 -0
- toad/data/agents/opencode.ai.toml +61 -0
- toad/data/agents/openhands.dev.toml +44 -0
- toad/data/agents/stakpak.dev.toml +61 -0
- toad/data/agents/vibe.mistral.ai.toml +27 -0
- toad/data/agents/vtcode.dev.toml +62 -0
- toad/data/images/frog.png +0 -0
- toad/data/sounds/turn-over.wav +0 -0
- toad/db.py +5 -0
- toad/dec.py +332 -0
- toad/directory.py +234 -0
- toad/directory_watcher.py +96 -0
- toad/fuzzy.py +140 -0
- toad/gist.py +2 -0
- toad/history.py +138 -0
- toad/jsonrpc.py +576 -0
- toad/menus.py +14 -0
- toad/messages.py +74 -0
- toad/option_content.py +51 -0
- toad/os.py +0 -0
- toad/path_complete.py +145 -0
- toad/path_filter.py +124 -0
- toad/paths.py +71 -0
- toad/pill.py +23 -0
- toad/prompt/extract.py +19 -0
- toad/prompt/resource.py +68 -0
- toad/protocol.py +28 -0
- toad/screens/action_modal.py +94 -0
- toad/screens/agent_modal.py +172 -0
- toad/screens/command_edit_modal.py +58 -0
- toad/screens/main.py +192 -0
- toad/screens/permissions.py +390 -0
- toad/screens/permissions.tcss +72 -0
- toad/screens/settings.py +254 -0
- toad/screens/settings.tcss +101 -0
- toad/screens/store.py +476 -0
- toad/screens/store.tcss +261 -0
- toad/settings.py +354 -0
- toad/settings_schema.py +318 -0
- toad/shell.py +263 -0
- toad/shell_read.py +42 -0
- toad/slash_command.py +34 -0
- toad/toad.tcss +752 -0
- toad/version.py +80 -0
- toad/visuals/columns.py +273 -0
- toad/widgets/agent_response.py +79 -0
- toad/widgets/agent_thought.py +41 -0
- toad/widgets/command_pane.py +224 -0
- toad/widgets/condensed_path.py +93 -0
- toad/widgets/conversation.py +1626 -0
- toad/widgets/danger_warning.py +65 -0
- toad/widgets/diff_view.py +709 -0
- toad/widgets/flash.py +81 -0
- toad/widgets/future_text.py +126 -0
- toad/widgets/grid_select.py +223 -0
- toad/widgets/highlighted_textarea.py +180 -0
- toad/widgets/mandelbrot.py +294 -0
- toad/widgets/markdown_note.py +13 -0
- toad/widgets/menu.py +147 -0
- toad/widgets/non_selectable_label.py +5 -0
- toad/widgets/note.py +18 -0
- toad/widgets/path_search.py +381 -0
- toad/widgets/plan.py +180 -0
- toad/widgets/project_directory_tree.py +74 -0
- toad/widgets/prompt.py +741 -0
- toad/widgets/question.py +337 -0
- toad/widgets/shell_result.py +35 -0
- toad/widgets/shell_terminal.py +18 -0
- toad/widgets/side_bar.py +74 -0
- toad/widgets/slash_complete.py +211 -0
- toad/widgets/strike_text.py +66 -0
- toad/widgets/terminal.py +526 -0
- toad/widgets/terminal_tool.py +338 -0
- toad/widgets/throbber.py +90 -0
- toad/widgets/tool_call.py +303 -0
- toad/widgets/user_input.py +23 -0
- toad/widgets/version.py +5 -0
- toad/widgets/welcome.py +31 -0
|
@@ -0,0 +1,264 @@
|
|
|
1
|
+
from typing import Sequence
|
|
2
|
+
|
|
3
|
+
from textual.color import Color
|
|
4
|
+
|
|
5
|
+
_ANSI_COLORS: Sequence[str] = [
|
|
6
|
+
"ansi_black",
|
|
7
|
+
"ansi_red",
|
|
8
|
+
"ansi_green",
|
|
9
|
+
"ansi_yellow",
|
|
10
|
+
"ansi_blue",
|
|
11
|
+
"ansi_magenta",
|
|
12
|
+
"ansi_cyan",
|
|
13
|
+
"ansi_white",
|
|
14
|
+
"ansi_bright_black",
|
|
15
|
+
"ansi_bright_red",
|
|
16
|
+
"ansi_bright_green",
|
|
17
|
+
"ansi_bright_yellow",
|
|
18
|
+
"ansi_bright_blue",
|
|
19
|
+
"ansi_bright_magenta",
|
|
20
|
+
"ansi_bright_cyan",
|
|
21
|
+
"ansi_bright_white",
|
|
22
|
+
"rgb(0,0,0)",
|
|
23
|
+
"rgb(0,0,95)",
|
|
24
|
+
"rgb(0,0,135)",
|
|
25
|
+
"rgb(0,0,175)",
|
|
26
|
+
"rgb(0,0,215)",
|
|
27
|
+
"rgb(0,0,255)",
|
|
28
|
+
"rgb(0,95,0)",
|
|
29
|
+
"rgb(0,95,95)",
|
|
30
|
+
"rgb(0,95,135)",
|
|
31
|
+
"rgb(0,95,175)",
|
|
32
|
+
"rgb(0,95,215)",
|
|
33
|
+
"rgb(0,95,255)",
|
|
34
|
+
"rgb(0,135,0)",
|
|
35
|
+
"rgb(0,135,95)",
|
|
36
|
+
"rgb(0,135,135)",
|
|
37
|
+
"rgb(0,135,175)",
|
|
38
|
+
"rgb(0,135,215)",
|
|
39
|
+
"rgb(0,135,255)",
|
|
40
|
+
"rgb(0,175,0)",
|
|
41
|
+
"rgb(0,175,95)",
|
|
42
|
+
"rgb(0,175,135)",
|
|
43
|
+
"rgb(0,175,175)",
|
|
44
|
+
"rgb(0,175,215)",
|
|
45
|
+
"rgb(0,175,255)",
|
|
46
|
+
"rgb(0,215,0)",
|
|
47
|
+
"rgb(0,215,95)",
|
|
48
|
+
"rgb(0,215,135)",
|
|
49
|
+
"rgb(0,215,175)",
|
|
50
|
+
"rgb(0,215,215)",
|
|
51
|
+
"rgb(0,215,255)",
|
|
52
|
+
"rgb(0,255,0)",
|
|
53
|
+
"rgb(0,255,95)",
|
|
54
|
+
"rgb(0,255,135)",
|
|
55
|
+
"rgb(0,255,175)",
|
|
56
|
+
"rgb(0,255,215)",
|
|
57
|
+
"rgb(0,255,255)",
|
|
58
|
+
"rgb(95,0,0)",
|
|
59
|
+
"rgb(95,0,95)",
|
|
60
|
+
"rgb(95,0,135)",
|
|
61
|
+
"rgb(95,0,175)",
|
|
62
|
+
"rgb(95,0,215)",
|
|
63
|
+
"rgb(95,0,255)",
|
|
64
|
+
"rgb(95,95,0)",
|
|
65
|
+
"rgb(95,95,95)",
|
|
66
|
+
"rgb(95,95,135)",
|
|
67
|
+
"rgb(95,95,175)",
|
|
68
|
+
"rgb(95,95,215)",
|
|
69
|
+
"rgb(95,95,255)",
|
|
70
|
+
"rgb(95,135,0)",
|
|
71
|
+
"rgb(95,135,95)",
|
|
72
|
+
"rgb(95,135,135)",
|
|
73
|
+
"rgb(95,135,175)",
|
|
74
|
+
"rgb(95,135,215)",
|
|
75
|
+
"rgb(95,135,255)",
|
|
76
|
+
"rgb(95,175,0)",
|
|
77
|
+
"rgb(95,175,95)",
|
|
78
|
+
"rgb(95,175,135)",
|
|
79
|
+
"rgb(95,175,175)",
|
|
80
|
+
"rgb(95,175,215)",
|
|
81
|
+
"rgb(95,175,255)",
|
|
82
|
+
"rgb(95,215,0)",
|
|
83
|
+
"rgb(95,215,95)",
|
|
84
|
+
"rgb(95,215,135)",
|
|
85
|
+
"rgb(95,215,175)",
|
|
86
|
+
"rgb(95,215,215)",
|
|
87
|
+
"rgb(95,215,255)",
|
|
88
|
+
"rgb(95,255,0)",
|
|
89
|
+
"rgb(95,255,95)",
|
|
90
|
+
"rgb(95,255,135)",
|
|
91
|
+
"rgb(95,255,175)",
|
|
92
|
+
"rgb(95,255,215)",
|
|
93
|
+
"rgb(95,255,255)",
|
|
94
|
+
"rgb(135,0,0)",
|
|
95
|
+
"rgb(135,0,95)",
|
|
96
|
+
"rgb(135,0,135)",
|
|
97
|
+
"rgb(135,0,175)",
|
|
98
|
+
"rgb(135,0,215)",
|
|
99
|
+
"rgb(135,0,255)",
|
|
100
|
+
"rgb(135,95,0)",
|
|
101
|
+
"rgb(135,95,95)",
|
|
102
|
+
"rgb(135,95,135)",
|
|
103
|
+
"rgb(135,95,175)",
|
|
104
|
+
"rgb(135,95,215)",
|
|
105
|
+
"rgb(135,95,255)",
|
|
106
|
+
"rgb(135,135,0)",
|
|
107
|
+
"rgb(135,135,95)",
|
|
108
|
+
"rgb(135,135,135)",
|
|
109
|
+
"rgb(135,135,175)",
|
|
110
|
+
"rgb(135,135,215)",
|
|
111
|
+
"rgb(135,135,255)",
|
|
112
|
+
"rgb(135,175,0)",
|
|
113
|
+
"rgb(135,175,95)",
|
|
114
|
+
"rgb(135,175,135)",
|
|
115
|
+
"rgb(135,175,175)",
|
|
116
|
+
"rgb(135,175,215)",
|
|
117
|
+
"rgb(135,175,255)",
|
|
118
|
+
"rgb(135,215,0)",
|
|
119
|
+
"rgb(135,215,95)",
|
|
120
|
+
"rgb(135,215,135)",
|
|
121
|
+
"rgb(135,215,175)",
|
|
122
|
+
"rgb(135,215,215)",
|
|
123
|
+
"rgb(135,215,255)",
|
|
124
|
+
"rgb(135,255,0)",
|
|
125
|
+
"rgb(135,255,95)",
|
|
126
|
+
"rgb(135,255,135)",
|
|
127
|
+
"rgb(135,255,175)",
|
|
128
|
+
"rgb(135,255,215)",
|
|
129
|
+
"rgb(135,255,255)",
|
|
130
|
+
"rgb(175,0,0)",
|
|
131
|
+
"rgb(175,0,95)",
|
|
132
|
+
"rgb(175,0,135)",
|
|
133
|
+
"rgb(175,0,175)",
|
|
134
|
+
"rgb(175,0,215)",
|
|
135
|
+
"rgb(175,0,255)",
|
|
136
|
+
"rgb(175,95,0)",
|
|
137
|
+
"rgb(175,95,95)",
|
|
138
|
+
"rgb(175,95,135)",
|
|
139
|
+
"rgb(175,95,175)",
|
|
140
|
+
"rgb(175,95,215)",
|
|
141
|
+
"rgb(175,95,255)",
|
|
142
|
+
"rgb(175,135,0)",
|
|
143
|
+
"rgb(175,135,95)",
|
|
144
|
+
"rgb(175,135,135)",
|
|
145
|
+
"rgb(175,135,175)",
|
|
146
|
+
"rgb(175,135,215)",
|
|
147
|
+
"rgb(175,135,255)",
|
|
148
|
+
"rgb(175,175,0)",
|
|
149
|
+
"rgb(175,175,95)",
|
|
150
|
+
"rgb(175,175,135)",
|
|
151
|
+
"rgb(175,175,175)",
|
|
152
|
+
"rgb(175,175,215)",
|
|
153
|
+
"rgb(175,175,255)",
|
|
154
|
+
"rgb(175,215,0)",
|
|
155
|
+
"rgb(175,215,95)",
|
|
156
|
+
"rgb(175,215,135)",
|
|
157
|
+
"rgb(175,215,175)",
|
|
158
|
+
"rgb(175,215,215)",
|
|
159
|
+
"rgb(175,215,255)",
|
|
160
|
+
"rgb(175,255,0)",
|
|
161
|
+
"rgb(175,255,95)",
|
|
162
|
+
"rgb(175,255,135)",
|
|
163
|
+
"rgb(175,255,175)",
|
|
164
|
+
"rgb(175,255,215)",
|
|
165
|
+
"rgb(175,255,255)",
|
|
166
|
+
"rgb(215,0,0)",
|
|
167
|
+
"rgb(215,0,95)",
|
|
168
|
+
"rgb(215,0,135)",
|
|
169
|
+
"rgb(215,0,175)",
|
|
170
|
+
"rgb(215,0,215)",
|
|
171
|
+
"rgb(215,0,255)",
|
|
172
|
+
"rgb(215,95,0)",
|
|
173
|
+
"rgb(215,95,95)",
|
|
174
|
+
"rgb(215,95,135)",
|
|
175
|
+
"rgb(215,95,175)",
|
|
176
|
+
"rgb(215,95,215)",
|
|
177
|
+
"rgb(215,95,255)",
|
|
178
|
+
"rgb(215,135,0)",
|
|
179
|
+
"rgb(215,135,95)",
|
|
180
|
+
"rgb(215,135,135)",
|
|
181
|
+
"rgb(215,135,175)",
|
|
182
|
+
"rgb(215,135,215)",
|
|
183
|
+
"rgb(215,135,255)",
|
|
184
|
+
"rgb(215,175,0)",
|
|
185
|
+
"rgb(215,175,95)",
|
|
186
|
+
"rgb(215,175,135)",
|
|
187
|
+
"rgb(215,175,175)",
|
|
188
|
+
"rgb(215,175,215)",
|
|
189
|
+
"rgb(215,175,255)",
|
|
190
|
+
"rgb(215,215,0)",
|
|
191
|
+
"rgb(215,215,95)",
|
|
192
|
+
"rgb(215,215,135)",
|
|
193
|
+
"rgb(215,215,175)",
|
|
194
|
+
"rgb(215,215,215)",
|
|
195
|
+
"rgb(215,215,255)",
|
|
196
|
+
"rgb(215,255,0)",
|
|
197
|
+
"rgb(215,255,95)",
|
|
198
|
+
"rgb(215,255,135)",
|
|
199
|
+
"rgb(215,255,175)",
|
|
200
|
+
"rgb(215,255,215)",
|
|
201
|
+
"rgb(215,255,255)",
|
|
202
|
+
"rgb(255,0,0)",
|
|
203
|
+
"rgb(255,0,95)",
|
|
204
|
+
"rgb(255,0,135)",
|
|
205
|
+
"rgb(255,0,175)",
|
|
206
|
+
"rgb(255,0,215)",
|
|
207
|
+
"rgb(255,0,255)",
|
|
208
|
+
"rgb(255,95,0)",
|
|
209
|
+
"rgb(255,95,95)",
|
|
210
|
+
"rgb(255,95,135)",
|
|
211
|
+
"rgb(255,95,175)",
|
|
212
|
+
"rgb(255,95,215)",
|
|
213
|
+
"rgb(255,95,255)",
|
|
214
|
+
"rgb(255,135,0)",
|
|
215
|
+
"rgb(255,135,95)",
|
|
216
|
+
"rgb(255,135,135)",
|
|
217
|
+
"rgb(255,135,175)",
|
|
218
|
+
"rgb(255,135,215)",
|
|
219
|
+
"rgb(255,135,255)",
|
|
220
|
+
"rgb(255,175,0)",
|
|
221
|
+
"rgb(255,175,95)",
|
|
222
|
+
"rgb(255,175,135)",
|
|
223
|
+
"rgb(255,175,175)",
|
|
224
|
+
"rgb(255,175,215)",
|
|
225
|
+
"rgb(255,175,255)",
|
|
226
|
+
"rgb(255,215,0)",
|
|
227
|
+
"rgb(255,215,95)",
|
|
228
|
+
"rgb(255,215,135)",
|
|
229
|
+
"rgb(255,215,175)",
|
|
230
|
+
"rgb(255,215,215)",
|
|
231
|
+
"rgb(255,215,255)",
|
|
232
|
+
"rgb(255,255,0)",
|
|
233
|
+
"rgb(255,255,95)",
|
|
234
|
+
"rgb(255,255,135)",
|
|
235
|
+
"rgb(255,255,175)",
|
|
236
|
+
"rgb(255,255,215)",
|
|
237
|
+
"rgb(255,255,255)",
|
|
238
|
+
"rgb(8,8,8)",
|
|
239
|
+
"rgb(18,18,18)",
|
|
240
|
+
"rgb(28,28,28)",
|
|
241
|
+
"rgb(38,38,38)",
|
|
242
|
+
"rgb(48,48,48)",
|
|
243
|
+
"rgb(58,58,58)",
|
|
244
|
+
"rgb(68,68,68)",
|
|
245
|
+
"rgb(78,78,78)",
|
|
246
|
+
"rgb(88,88,88)",
|
|
247
|
+
"rgb(98,98,98)",
|
|
248
|
+
"rgb(108,108,108)",
|
|
249
|
+
"rgb(118,118,118)",
|
|
250
|
+
"rgb(128,128,128)",
|
|
251
|
+
"rgb(138,138,138)",
|
|
252
|
+
"rgb(148,148,148)",
|
|
253
|
+
"rgb(158,158,158)",
|
|
254
|
+
"rgb(168,168,168)",
|
|
255
|
+
"rgb(178,178,178)",
|
|
256
|
+
"rgb(188,188,188)",
|
|
257
|
+
"rgb(198,198,198)",
|
|
258
|
+
"rgb(208,208,208)",
|
|
259
|
+
"rgb(218,218,218)",
|
|
260
|
+
"rgb(228,228,228)",
|
|
261
|
+
"rgb(238,238,238)",
|
|
262
|
+
]
|
|
263
|
+
|
|
264
|
+
ANSI_COLORS: list[Color] = [Color.parse(color) for color in _ANSI_COLORS]
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
CONTROL_CODES = {
|
|
2
|
+
"D": "ind",
|
|
3
|
+
"E": "nel",
|
|
4
|
+
"H": "hts",
|
|
5
|
+
"I": "htj",
|
|
6
|
+
"J": "vts",
|
|
7
|
+
"K": "pld",
|
|
8
|
+
"L": "plu",
|
|
9
|
+
"M": "ri",
|
|
10
|
+
"N": "ss2",
|
|
11
|
+
"O": "ss3",
|
|
12
|
+
"P": "dcs",
|
|
13
|
+
"Q": "pu1",
|
|
14
|
+
"R": "pu2",
|
|
15
|
+
"S": "sts",
|
|
16
|
+
"T": "cch",
|
|
17
|
+
"U": "mw",
|
|
18
|
+
"V": "spa",
|
|
19
|
+
"W": "epa",
|
|
20
|
+
"X": "sos",
|
|
21
|
+
"Z": "decid",
|
|
22
|
+
"[": "csi",
|
|
23
|
+
"\\": "st",
|
|
24
|
+
"]": "osc",
|
|
25
|
+
"^": "pm",
|
|
26
|
+
"_": "apc",
|
|
27
|
+
"c": "ris",
|
|
28
|
+
"7": "decsc",
|
|
29
|
+
"8": "decrc",
|
|
30
|
+
"=": "deckpam",
|
|
31
|
+
">": "deckpnm",
|
|
32
|
+
"#": "decaln",
|
|
33
|
+
"(": "scs_g0",
|
|
34
|
+
")": "scs_g1",
|
|
35
|
+
"*": "scs_g2",
|
|
36
|
+
"+": "scs_g3",
|
|
37
|
+
}
|
toad/ansi/_keys.py
ADDED
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
TERMINAL_KEY_MAP = {
|
|
2
|
+
# ============================================================================
|
|
3
|
+
# FUNCTION KEYS (F1-F12)
|
|
4
|
+
# ============================================================================
|
|
5
|
+
# Unmodified function keys
|
|
6
|
+
"f1": "\x1bOP", # ESC O P (SS3 P)
|
|
7
|
+
"f2": "\x1bOQ", # ESC O Q (SS3 Q)
|
|
8
|
+
"f3": "\x1bOR", # ESC O R (SS3 R)
|
|
9
|
+
"f4": "\x1bOS", # ESC O S (SS3 S)
|
|
10
|
+
"f5": "\x1b[15~", # CSI 15 ~
|
|
11
|
+
"f6": "\x1b[17~", # CSI 17 ~
|
|
12
|
+
"f7": "\x1b[18~", # CSI 18 ~
|
|
13
|
+
"f8": "\x1b[19~", # CSI 19 ~
|
|
14
|
+
"f9": "\x1b[20~", # CSI 20 ~
|
|
15
|
+
"f10": "\x1b[21~", # CSI 21 ~
|
|
16
|
+
"f11": "\x1b[23~", # CSI 23 ~
|
|
17
|
+
"f12": "\x1b[24~", # CSI 24 ~
|
|
18
|
+
# Shift+Function keys
|
|
19
|
+
"shift+f1": "\x1b[1;2P", # CSI 1 ; 2 P
|
|
20
|
+
"shift+f2": "\x1b[1;2Q", # CSI 1 ; 2 Q
|
|
21
|
+
"shift+f3": "\x1b[1;2R", # CSI 1 ; 2 R
|
|
22
|
+
"shift+f4": "\x1b[1;2S", # CSI 1 ; 2 S
|
|
23
|
+
"shift+f5": "\x1b[15;2~", # CSI 15 ; 2 ~
|
|
24
|
+
"shift+f6": "\x1b[17;2~", # CSI 17 ; 2 ~
|
|
25
|
+
"shift+f7": "\x1b[18;2~", # CSI 18 ; 2 ~
|
|
26
|
+
"shift+f8": "\x1b[19;2~", # CSI 19 ; 2 ~
|
|
27
|
+
"shift+f9": "\x1b[20;2~", # CSI 20 ; 2 ~
|
|
28
|
+
"shift+f10": "\x1b[21;2~", # CSI 21 ; 2 ~
|
|
29
|
+
"shift+f11": "\x1b[23;2~", # CSI 23 ; 2 ~
|
|
30
|
+
"shift+f12": "\x1b[24;2~", # CSI 24 ; 2 ~
|
|
31
|
+
# Ctrl+Function keys
|
|
32
|
+
"ctrl+f1": "\x1b[1;5P", # CSI 1 ; 5 P
|
|
33
|
+
"ctrl+f2": "\x1b[1;5Q", # CSI 1 ; 5 Q
|
|
34
|
+
"ctrl+f3": "\x1b[1;5R", # CSI 1 ; 5 R
|
|
35
|
+
"ctrl+f4": "\x1b[1;5S", # CSI 1 ; 5 S
|
|
36
|
+
"ctrl+f5": "\x1b[15;5~", # CSI 15 ; 5 ~
|
|
37
|
+
"ctrl+f6": "\x1b[17;5~", # CSI 17 ; 5 ~
|
|
38
|
+
"ctrl+f7": "\x1b[18;5~", # CSI 18 ; 5 ~
|
|
39
|
+
"ctrl+f8": "\x1b[19;5~", # CSI 19 ; 5 ~
|
|
40
|
+
"ctrl+f9": "\x1b[20;5~", # CSI 20 ; 5 ~
|
|
41
|
+
"ctrl+f10": "\x1b[21;5~", # CSI 21 ; 5 ~
|
|
42
|
+
"ctrl+f11": "\x1b[23;5~", # CSI 23 ; 5 ~
|
|
43
|
+
"ctrl+f12": "\x1b[24;5~", # CSI 24 ; 5 ~
|
|
44
|
+
# Ctrl+Shift+Function keys
|
|
45
|
+
"ctrl+shift+f1": "\x1b[1;6P", # CSI 1 ; 6 P
|
|
46
|
+
"ctrl+shift+f2": "\x1b[1;6Q", # CSI 1 ; 6 Q
|
|
47
|
+
"ctrl+shift+f3": "\x1b[1;6R", # CSI 1 ; 6 R
|
|
48
|
+
"ctrl+shift+f4": "\x1b[1;6S", # CSI 1 ; 6 S
|
|
49
|
+
"ctrl+shift+f5": "\x1b[15;6~", # CSI 15 ; 6 ~
|
|
50
|
+
"ctrl+shift+f6": "\x1b[17;6~", # CSI 17 ; 6 ~
|
|
51
|
+
"ctrl+shift+f7": "\x1b[18;6~", # CSI 18 ; 6 ~
|
|
52
|
+
"ctrl+shift+f8": "\x1b[19;6~", # CSI 19 ; 6 ~
|
|
53
|
+
"ctrl+shift+f9": "\x1b[20;6~", # CSI 20 ; 6 ~
|
|
54
|
+
"ctrl+shift+f10": "\x1b[21;6~", # CSI 21 ; 6 ~
|
|
55
|
+
"ctrl+shift+f11": "\x1b[23;6~", # CSI 23 ; 6 ~
|
|
56
|
+
"ctrl+shift+f12": "\x1b[24;6~", # CSI 24 ; 6 ~
|
|
57
|
+
# ============================================================================
|
|
58
|
+
# ARROW KEYS
|
|
59
|
+
# ============================================================================
|
|
60
|
+
# Unmodified arrow keys (Normal mode - CSI format)
|
|
61
|
+
"up": "\x1b[A", # CSI A
|
|
62
|
+
"down": "\x1b[B", # CSI B
|
|
63
|
+
"right": "\x1b[C", # CSI C
|
|
64
|
+
"left": "\x1b[D", # CSI D
|
|
65
|
+
# Shift+Arrow keys
|
|
66
|
+
"shift+up": "\x1b[1;2A", # CSI 1 ; 2 A
|
|
67
|
+
"shift+down": "\x1b[1;2B", # CSI 1 ; 2 B
|
|
68
|
+
"shift+right": "\x1b[1;2C", # CSI 1 ; 2 C
|
|
69
|
+
"shift+left": "\x1b[1;2D", # CSI 1 ; 2 D
|
|
70
|
+
# Ctrl+Arrow keys
|
|
71
|
+
"ctrl+up": "\x1b[1;5A", # CSI 1 ; 5 A
|
|
72
|
+
"ctrl+down": "\x1b[1;5B", # CSI 1 ; 5 B
|
|
73
|
+
"ctrl+right": "\x1b[1;5C", # CSI 1 ; 5 C
|
|
74
|
+
"ctrl+left": "\x1b[1;5D", # CSI 1 ; 5 D
|
|
75
|
+
# Ctrl+Shift+Arrow keys
|
|
76
|
+
"ctrl+shift+up": "\x1b[1;6A", # CSI 1 ; 6 A
|
|
77
|
+
"ctrl+shift+down": "\x1b[1;6B", # CSI 1 ; 6 B
|
|
78
|
+
"ctrl+shift+right": "\x1b[1;6C", # CSI 1 ; 6 C
|
|
79
|
+
"ctrl+shift+left": "\x1b[1;6D", # CSI 1 ; 6 D
|
|
80
|
+
# ============================================================================
|
|
81
|
+
# NAVIGATION KEYS
|
|
82
|
+
# ============================================================================
|
|
83
|
+
# Home
|
|
84
|
+
"home": "\x1b[H", # CSI H (or \x1b[1~)
|
|
85
|
+
"shift+home": "\x1b[1;2H", # CSI 1 ; 2 H
|
|
86
|
+
"ctrl+home": "\x1b[1;5H", # CSI 1 ; 5 H
|
|
87
|
+
"ctrl+shift+home": "\x1b[1;6H", # CSI 1 ; 6 H
|
|
88
|
+
# End
|
|
89
|
+
"end": "\x1b[F", # CSI F (or \x1b[4~)
|
|
90
|
+
"shift+end": "\x1b[1;2F", # CSI 1 ; 2 F
|
|
91
|
+
"ctrl+end": "\x1b[1;5F", # CSI 1 ; 5 F
|
|
92
|
+
"ctrl+shift+end": "\x1b[1;6F", # CSI 1 ; 6 F
|
|
93
|
+
# Page Up
|
|
94
|
+
"pageup": "\x1b[5~", # CSI 5 ~
|
|
95
|
+
"shift+pageup": "\x1b[5;2~", # CSI 5 ; 2 ~
|
|
96
|
+
"ctrl+pageup": "\x1b[5;5~", # CSI 5 ; 5 ~
|
|
97
|
+
"ctrl+shift+pageup": "\x1b[5;6~", # CSI 5 ; 6 ~
|
|
98
|
+
# Page Down
|
|
99
|
+
"pagedown": "\x1b[6~", # CSI 6 ~
|
|
100
|
+
"shift+pagedown": "\x1b[6;2~", # CSI 6 ; 2 ~
|
|
101
|
+
"ctrl+pagedown": "\x1b[6;5~", # CSI 6 ; 5 ~
|
|
102
|
+
"ctrl+shift+pagedown": "\x1b[6;6~", # CSI 6 ; 6 ~
|
|
103
|
+
# Insert
|
|
104
|
+
"insert": "\x1b[2~", # CSI 2 ~
|
|
105
|
+
"shift+insert": "\x1b[2;2~", # CSI 2 ; 2 ~
|
|
106
|
+
"ctrl+insert": "\x1b[2;5~", # CSI 2 ; 5 ~
|
|
107
|
+
"ctrl+shift+insert": "\x1b[2;6~", # CSI 2 ; 6 ~
|
|
108
|
+
# Delete
|
|
109
|
+
"delete": "\x1b[3~", # CSI 3 ~
|
|
110
|
+
"shift+delete": "\x1b[3;2~", # CSI 3 ; 2 ~
|
|
111
|
+
"ctrl+delete": "\x1b[3;5~", # CSI 3 ; 5 ~
|
|
112
|
+
"ctrl+shift+delete": "\x1b[3;6~", # CSI 3 ; 6 ~
|
|
113
|
+
# ============================================================================
|
|
114
|
+
# SPECIAL KEYS
|
|
115
|
+
# ============================================================================
|
|
116
|
+
# Tab
|
|
117
|
+
"tab": "\t", # Horizontal tab (0x09)
|
|
118
|
+
"shift+tab": "\x1b[Z", # CSI Z (Back tab)
|
|
119
|
+
"ctrl+tab": "\x1b[27;5;9~", # Modified tab (some terminals)
|
|
120
|
+
"ctrl+shift+tab": "\x1b[27;6;9~", # Modified back tab
|
|
121
|
+
# Enter/Return
|
|
122
|
+
"enter": "\r", # Carriage return (0x0D)
|
|
123
|
+
"ctrl+enter": "\x1b[27;5;13~", # Modified enter (some terminals)
|
|
124
|
+
"shift+enter": "\x1b[27;2;13~", # Modified enter (some terminals)
|
|
125
|
+
"ctrl+shift+enter": "\x1b[27;6;13~",
|
|
126
|
+
# Backspace
|
|
127
|
+
"backspace": "\x7f", # Delete (0x7F) - most common
|
|
128
|
+
"ctrl+backspace": "\x08", # Ctrl+H (0x08)
|
|
129
|
+
"shift+backspace": "\x7f", # Usually same as backspace
|
|
130
|
+
"ctrl+shift+backspace": "\x08",
|
|
131
|
+
# Escape
|
|
132
|
+
"escape": "\x1b", # ESC (0x1B)
|
|
133
|
+
# Space (for completeness with modifiers)
|
|
134
|
+
"ctrl+space": "\x00", # Ctrl+Space = NUL
|
|
135
|
+
"shift+space": " ", # Just space
|
|
136
|
+
# ============================================================================
|
|
137
|
+
# CTRL+LETTER COMBINATIONS (C0 controls)
|
|
138
|
+
# ============================================================================
|
|
139
|
+
# These are traditional C0 control characters
|
|
140
|
+
"ctrl+a": "\x01", # SOH
|
|
141
|
+
"ctrl+b": "\x02", # STX
|
|
142
|
+
"ctrl+c": "\x03", # ETX (interrupt)
|
|
143
|
+
"ctrl+d": "\x04", # EOT (EOF)
|
|
144
|
+
"ctrl+e": "\x05", # ENQ
|
|
145
|
+
"ctrl+f": "\x06", # ACK
|
|
146
|
+
"ctrl+g": "\x07", # BEL (bell)
|
|
147
|
+
"ctrl+h": "\x08", # BS (backspace)
|
|
148
|
+
"ctrl+i": "\t", # HT (tab) - same as tab
|
|
149
|
+
"ctrl+j": "\n", # LF (line feed)
|
|
150
|
+
"ctrl+k": "\x0b", # VT (vertical tab)
|
|
151
|
+
"ctrl+l": "\x0c", # FF (form feed)
|
|
152
|
+
"ctrl+m": "\r", # CR (carriage return) - same as enter
|
|
153
|
+
"ctrl+n": "\x0e", # SO
|
|
154
|
+
"ctrl+o": "\x0f", # SI
|
|
155
|
+
"ctrl+p": "\x10", # DLE
|
|
156
|
+
"ctrl+q": "\x11", # DC1 (XON)
|
|
157
|
+
"ctrl+r": "\x12", # DC2
|
|
158
|
+
"ctrl+s": "\x13", # DC3 (XOFF)
|
|
159
|
+
"ctrl+t": "\x14", # DC4
|
|
160
|
+
"ctrl+u": "\x15", # NAK
|
|
161
|
+
"ctrl+v": "\x16", # SYN
|
|
162
|
+
"ctrl+w": "\x17", # ETB
|
|
163
|
+
"ctrl+x": "\x18", # CAN
|
|
164
|
+
"ctrl+y": "\x19", # EM
|
|
165
|
+
"ctrl+z": "\x1a", # SUB
|
|
166
|
+
"ctrl+[": "\x1b", # ESC (escape) - alternative
|
|
167
|
+
"ctrl+\\": "\x1c", # FS
|
|
168
|
+
"ctrl+]": "\x1d", # GS
|
|
169
|
+
"ctrl+^": "\x1e", # RS (Ctrl+Shift+6)
|
|
170
|
+
"ctrl+_": "\x1f", # US (Ctrl+Shift+-)
|
|
171
|
+
# ============================================================================
|
|
172
|
+
# CTRL+SHIFT+LETTER COMBINATIONS (where distinct)
|
|
173
|
+
# ============================================================================
|
|
174
|
+
# Modern terminals often send different sequences for Ctrl+Shift+Letter
|
|
175
|
+
# These use the CSI 27 ; modifier ; ascii format
|
|
176
|
+
"ctrl+shift+a": "\x1b[27;6;65~", # CSI 27 ; 6 ; 65 ~ (ASCII A=65)
|
|
177
|
+
"ctrl+shift+b": "\x1b[27;6;66~",
|
|
178
|
+
"ctrl+shift+c": "\x1b[27;6;67~",
|
|
179
|
+
"ctrl+shift+d": "\x1b[27;6;68~",
|
|
180
|
+
"ctrl+shift+e": "\x1b[27;6;69~",
|
|
181
|
+
"ctrl+shift+f": "\x1b[27;6;70~",
|
|
182
|
+
"ctrl+shift+g": "\x1b[27;6;71~",
|
|
183
|
+
"ctrl+shift+h": "\x1b[27;6;72~",
|
|
184
|
+
"ctrl+shift+i": "\x1b[27;6;73~",
|
|
185
|
+
"ctrl+shift+j": "\x1b[27;6;74~",
|
|
186
|
+
"ctrl+shift+k": "\x1b[27;6;75~",
|
|
187
|
+
"ctrl+shift+l": "\x1b[27;6;76~",
|
|
188
|
+
"ctrl+shift+m": "\x1b[27;6;77~",
|
|
189
|
+
"ctrl+shift+n": "\x1b[27;6;78~",
|
|
190
|
+
"ctrl+shift+o": "\x1b[27;6;79~",
|
|
191
|
+
"ctrl+shift+p": "\x1b[27;6;80~",
|
|
192
|
+
"ctrl+shift+q": "\x1b[27;6;81~",
|
|
193
|
+
"ctrl+shift+r": "\x1b[27;6;82~",
|
|
194
|
+
"ctrl+shift+s": "\x1b[27;6;83~",
|
|
195
|
+
"ctrl+shift+t": "\x1b[27;6;84~",
|
|
196
|
+
"ctrl+shift+u": "\x1b[27;6;85~",
|
|
197
|
+
"ctrl+shift+v": "\x1b[27;6;86~",
|
|
198
|
+
"ctrl+shift+w": "\x1b[27;6;87~",
|
|
199
|
+
"ctrl+shift+x": "\x1b[27;6;88~",
|
|
200
|
+
"ctrl+shift+y": "\x1b[27;6;89~",
|
|
201
|
+
"ctrl+shift+z": "\x1b[27;6;90~",
|
|
202
|
+
# ============================================================================
|
|
203
|
+
# CTRL+DIGIT COMBINATIONS
|
|
204
|
+
# ============================================================================
|
|
205
|
+
"ctrl+0": "\x1b[27;5;48~", # CSI 27 ; 5 ; 48 ~ (ASCII 0=48)
|
|
206
|
+
"ctrl+1": "\x1b[27;5;49~",
|
|
207
|
+
"ctrl+2": "\x00", # Ctrl+2 = NUL (traditional)
|
|
208
|
+
"ctrl+3": "\x1b", # Ctrl+3 = ESC (traditional)
|
|
209
|
+
"ctrl+4": "\x1c", # Ctrl+4 = FS (traditional)
|
|
210
|
+
"ctrl+5": "\x1d", # Ctrl+5 = GS (traditional)
|
|
211
|
+
"ctrl+6": "\x1e", # Ctrl+6 = RS (traditional)
|
|
212
|
+
"ctrl+7": "\x1f", # Ctrl+7 = US (traditional)
|
|
213
|
+
"ctrl+8": "\x7f", # Ctrl+8 = DEL (traditional)
|
|
214
|
+
"ctrl+9": "\x1b[27;5;57~",
|
|
215
|
+
# ============================================================================
|
|
216
|
+
# CTRL+SYMBOL COMBINATIONS
|
|
217
|
+
# ============================================================================
|
|
218
|
+
"ctrl+`": "\x00", # Ctrl+` = NUL (same as Ctrl+Space)
|
|
219
|
+
"ctrl+-": "\x1f", # Ctrl+- = US
|
|
220
|
+
"ctrl+=": "\x1b[27;5;61~", # CSI 27 ; 5 ; 61 ~
|
|
221
|
+
"ctrl+[": "\x1b", # ESC (same as escape)
|
|
222
|
+
"ctrl+]": "\x1d", # GS
|
|
223
|
+
"ctrl+\\": "\x1c", # FS
|
|
224
|
+
"ctrl+;": "\x1b[27;5;59~",
|
|
225
|
+
"ctrl+'": "\x1b[27;5;39~",
|
|
226
|
+
"ctrl+,": "\x1b[27;5;44~",
|
|
227
|
+
"ctrl+.": "\x1b[27;5;46~",
|
|
228
|
+
"ctrl+/": "\x1f", # US (Ctrl+/ = Ctrl+_ on many terminals)
|
|
229
|
+
# ============================================================================
|
|
230
|
+
# SHIFT+FUNCTION KEYS (F13-F24 mappings)
|
|
231
|
+
# ============================================================================
|
|
232
|
+
# Some terminals map Shift+F1-F12 to F13-F24
|
|
233
|
+
"f13": "\x1b[25~", # Shift+F1 alternative
|
|
234
|
+
"f14": "\x1b[26~", # Shift+F2 alternative
|
|
235
|
+
"f15": "\x1b[28~", # Shift+F3 alternative
|
|
236
|
+
"f16": "\x1b[29~", # Shift+F4 alternative
|
|
237
|
+
"f17": "\x1b[31~", # Shift+F5 alternative
|
|
238
|
+
"f18": "\x1b[32~", # Shift+F6 alternative
|
|
239
|
+
"f19": "\x1b[33~", # Shift+F7 alternative
|
|
240
|
+
"f20": "\x1b[34~", # Shift+F8 alternative
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
|
|
244
|
+
CURSOR_KEYS_APPLICATION = {
|
|
245
|
+
"up": "\x1bOA",
|
|
246
|
+
"down": "\x1bOB",
|
|
247
|
+
"right": "\x1bOC",
|
|
248
|
+
"left": "\x1bOD",
|
|
249
|
+
"home": "\x1bOH",
|
|
250
|
+
"end": "\x1bOF",
|
|
251
|
+
}
|
toad/ansi/_sgr_styles.py
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
from typing import Mapping
|
|
2
|
+
|
|
3
|
+
from textual.color import Color
|
|
4
|
+
from textual.style import Style, NULL_STYLE
|
|
5
|
+
|
|
6
|
+
SGR_STYLES: Mapping[int, Style] = {
|
|
7
|
+
1: Style(bold=True),
|
|
8
|
+
2: Style(dim=True),
|
|
9
|
+
3: Style(italic=True),
|
|
10
|
+
4: Style(underline=True),
|
|
11
|
+
5: Style(blink=True),
|
|
12
|
+
6: Style(blink=True),
|
|
13
|
+
7: Style(reverse=True),
|
|
14
|
+
8: Style(reverse=True),
|
|
15
|
+
9: Style(strike=True),
|
|
16
|
+
21: Style(underline2=True),
|
|
17
|
+
22: Style(dim=False, bold=False),
|
|
18
|
+
23: Style(italic=False),
|
|
19
|
+
24: Style(underline=False),
|
|
20
|
+
25: Style(blink=False),
|
|
21
|
+
26: Style(blink=False),
|
|
22
|
+
27: Style(reverse=False),
|
|
23
|
+
28: NULL_STYLE, # "not conceal",
|
|
24
|
+
29: Style(strike=False),
|
|
25
|
+
30: Style(foreground=Color(0, 0, 0, ansi=0)),
|
|
26
|
+
31: Style(foreground=Color(128, 0, 0, ansi=1)),
|
|
27
|
+
32: Style(foreground=Color(0, 128, 0, ansi=2)),
|
|
28
|
+
33: Style(foreground=Color(128, 128, 0, ansi=3)),
|
|
29
|
+
34: Style(foreground=Color(0, 0, 128, ansi=4)),
|
|
30
|
+
35: Style(foreground=Color(128, 0, 128, ansi=5)),
|
|
31
|
+
36: Style(foreground=Color(0, 128, 128, ansi=6)),
|
|
32
|
+
37: Style(foreground=Color(192, 192, 192, ansi=7)),
|
|
33
|
+
39: Style(foreground=Color(0, 0, 0, ansi=-1)),
|
|
34
|
+
40: Style(background=Color(0, 0, 0, ansi=0)),
|
|
35
|
+
41: Style(background=Color(128, 0, 0, ansi=1)),
|
|
36
|
+
42: Style(background=Color(0, 128, 0, ansi=2)),
|
|
37
|
+
43: Style(background=Color(128, 128, 0, ansi=3)),
|
|
38
|
+
44: Style(background=Color(0, 0, 128, ansi=4)),
|
|
39
|
+
45: Style(background=Color(128, 0, 128, ansi=5)),
|
|
40
|
+
46: Style(background=Color(0, 128, 128, ansi=6)),
|
|
41
|
+
47: Style(background=Color(192, 192, 192, ansi=7)),
|
|
42
|
+
49: Style(background=Color(0, 0, 0, ansi=-1)),
|
|
43
|
+
51: NULL_STYLE, # "frame",
|
|
44
|
+
52: NULL_STYLE, # "encircle",
|
|
45
|
+
53: NULL_STYLE, # "overline",
|
|
46
|
+
54: NULL_STYLE, # "not frame not encircle",
|
|
47
|
+
55: NULL_STYLE, # "not overline",
|
|
48
|
+
90: Style(foreground=Color(128, 128, 128, ansi=8)),
|
|
49
|
+
91: Style(foreground=Color(255, 0, 0, ansi=9)),
|
|
50
|
+
92: Style(foreground=Color(0, 255, 0, ansi=10)),
|
|
51
|
+
93: Style(foreground=Color(255, 255, 0, ansi=11)),
|
|
52
|
+
94: Style(foreground=Color(0, 0, 255, ansi=12)),
|
|
53
|
+
95: Style(foreground=Color(255, 0, 255, ansi=13)),
|
|
54
|
+
96: Style(foreground=Color(0, 255, 255, ansi=14)),
|
|
55
|
+
97: Style(foreground=Color(255, 255, 255, ansi=15)),
|
|
56
|
+
100: Style(background=Color(128, 128, 128, ansi=8)),
|
|
57
|
+
101: Style(background=Color(255, 0, 0, ansi=9)),
|
|
58
|
+
102: Style(background=Color(0, 255, 0, ansi=10)),
|
|
59
|
+
103: Style(background=Color(255, 255, 0, ansi=11)),
|
|
60
|
+
104: Style(background=Color(0, 0, 255, ansi=12)),
|
|
61
|
+
105: Style(background=Color(255, 0, 255, ansi=13)),
|
|
62
|
+
106: Style(background=Color(0, 255, 255, ansi=14)),
|
|
63
|
+
107: Style(background=Color(255, 255, 255, ansi=15)),
|
|
64
|
+
}
|