jag

showKey_rust

public

Shows what key you pressed last

Star0
Watch0

Commit 78de904080fc

tarball

Jaglekon <58274093+Jaglekon@users.noreply.github.com>2026-09-23 22:01 UTC

7 files changed+1923-0
init commit
Added file: .envrc+2 additions
@@ -0,0 +1,2 @@
1+use flake
2+
Added file: .gitignore+2 additions
@@ -0,0 +1,2 @@
1+/target
2+.direnv
Added file: Cargo.lock+1672 additions
@@ -0,0 +1,1672 @@
1+# This file is automatically @generated by Cargo.
2+# It is not intended for manual editing.
3+version = 4
4+
5+[[package]]
6+name = "aho-corasick"
7+version = "1.1.5"
8+source = "registry+https://github.com/rust-lang/crates.io-index"
9+checksum = "c982642fa9e8606056828ee9a8505737230110bb1099153c79efe865c59d12ba"
10+dependencies = [
11+ "memchr",
12+]
13+
14+[[package]]
15+name = "allocator-api2"
16+version = "0.2.21"
17+source = "registry+https://github.com/rust-lang/crates.io-index"
18+checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923"
19+
20+[[package]]
21+name = "anyhow"
22+version = "1.0.104"
23+source = "registry+https://github.com/rust-lang/crates.io-index"
24+checksum = "330a5ed07fa54e4702c9d6c4174f74427fc0ef6e214bbd677ae50a5099946470"
25+
26+[[package]]
27+name = "approx"
28+version = "0.5.1"
29+source = "registry+https://github.com/rust-lang/crates.io-index"
30+checksum = "cab112f0a86d568ea0e627cc1d6be74a1e9cd55214684db5561995f6dad897c6"
31+dependencies = [
32+ "num-traits",
33+]
34+
35+[[package]]
36+name = "atomic"
37+version = "0.6.1"
38+source = "registry+https://github.com/rust-lang/crates.io-index"
39+checksum = "a89cbf775b137e9b968e67227ef7f775587cde3fd31b0d8599dbd0f598a48340"
40+dependencies = [
41+ "bytemuck",
42+]
43+
44+[[package]]
45+name = "autocfg"
46+version = "1.5.1"
47+source = "registry+https://github.com/rust-lang/crates.io-index"
48+checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53"
49+
50+[[package]]
51+name = "base64"
52+version = "0.22.1"
53+source = "registry+https://github.com/rust-lang/crates.io-index"
54+checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6"
55+
56+[[package]]
57+name = "bit-set"
58+version = "0.5.3"
59+source = "registry+https://github.com/rust-lang/crates.io-index"
60+checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1"
61+dependencies = [
62+ "bit-vec",
63+]
64+
65+[[package]]
66+name = "bit-vec"
67+version = "0.6.3"
68+source = "registry+https://github.com/rust-lang/crates.io-index"
69+checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb"
70+
71+[[package]]
72+name = "bitflags"
73+version = "1.3.2"
74+source = "registry+https://github.com/rust-lang/crates.io-index"
75+checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
76+
77+[[package]]
78+name = "bitflags"
79+version = "2.13.2"
80+source = "registry+https://github.com/rust-lang/crates.io-index"
81+checksum = "3ded4057c258ba199e2d26386d3af3780957ecaee6c4ef4041c6b4b8b97c0b06"
82+
83+[[package]]
84+name = "block-buffer"
85+version = "0.10.4"
86+source = "registry+https://github.com/rust-lang/crates.io-index"
87+checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71"
88+dependencies = [
89+ "generic-array",
90+]
91+
92+[[package]]
93+name = "bumpalo"
94+version = "3.20.3"
95+source = "registry+https://github.com/rust-lang/crates.io-index"
96+checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649"
97+
98+[[package]]
99+name = "by_address"
100+version = "1.2.1"
101+source = "registry+https://github.com/rust-lang/crates.io-index"
102+checksum = "64fa3c856b712db6612c019f14756e64e4bcea13337a6b33b696333a9eaa2d06"
103+
104+[[package]]
105+name = "bytemuck"
106+version = "1.25.2"
107+source = "registry+https://github.com/rust-lang/crates.io-index"
108+checksum = "95832e849adfb21180ccb6826a99da14e5d266ae5c2e668e1602cf234f153797"
109+
110+[[package]]
111+name = "castaway"
112+version = "0.2.4"
113+source = "registry+https://github.com/rust-lang/crates.io-index"
114+checksum = "dec551ab6e7578819132c713a93c022a05d60159dc86e7a7050223577484c55a"
115+dependencies = [
116+ "rustversion",
117+]
118+
119+[[package]]
120+name = "cfg-if"
121+version = "1.0.5"
122+source = "registry+https://github.com/rust-lang/crates.io-index"
123+checksum = "4e7648175b45a9a48536d676f68d918270699102aa8dab5496df06904c914600"
124+
125+[[package]]
126+name = "cfg_aliases"
127+version = "0.2.2"
128+source = "registry+https://github.com/rust-lang/crates.io-index"
129+checksum = "f079e83a288787bcd14a6aea84cee5c87a67c5a3e660c30f557a3d24761b3527"
130+
131+[[package]]
132+name = "compact_str"
133+version = "0.9.1"
134+source = "registry+https://github.com/rust-lang/crates.io-index"
135+checksum = "9dfdd1c2274d9aa354115b09dc9a901d6c5576818cdf70d14cae2bdb47df00ab"
136+dependencies = [
137+ "castaway",
138+ "cfg-if",
139+ "itoa",
140+ "rustversion",
141+ "ryu",
142+ "static_assertions",
143+]
144+
145+[[package]]
146+name = "convert_case"
147+version = "0.10.0"
148+source = "registry+https://github.com/rust-lang/crates.io-index"
149+checksum = "633458d4ef8c78b72454de2d54fd6ab2e60f9e02be22f3c6104cdc8a4e0fceb9"
150+dependencies = [
151+ "unicode-segmentation",
152+]
153+
154+[[package]]
155+name = "cpufeatures"
156+version = "0.2.17"
157+source = "registry+https://github.com/rust-lang/crates.io-index"
158+checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280"
159+dependencies = [
160+ "libc",
161+]
162+
163+[[package]]
164+name = "critical-section"
165+version = "1.2.0"
166+source = "registry+https://github.com/rust-lang/crates.io-index"
167+checksum = "790eea4361631c5e7d22598ecd5723ff611904e3344ce8720784c93e3d83d40b"
168+
169+[[package]]
170+name = "crossterm"
171+version = "0.29.0"
172+source = "registry+https://github.com/rust-lang/crates.io-index"
173+checksum = "d8b9f2e4c67f833b660cdb0a3523065869fb35570177239812ed4c905aeff87b"
174+dependencies = [
175+ "bitflags 2.13.2",
176+ "crossterm_winapi",
177+ "derive_more",
178+ "document-features",
179+ "mio",
180+ "parking_lot",
181+ "rustix",
182+ "signal-hook",
183+ "signal-hook-mio",
184+ "winapi",
185+]
186+
187+[[package]]
188+name = "crossterm_winapi"
189+version = "0.9.1"
190+source = "registry+https://github.com/rust-lang/crates.io-index"
191+checksum = "acdd7c62a3665c7f6830a51635d9ac9b23ed385797f70a83bb8bafe9c572ab2b"
192+dependencies = [
193+ "winapi",
194+]
195+
196+[[package]]
197+name = "crypto-common"
198+version = "0.1.7"
199+source = "registry+https://github.com/rust-lang/crates.io-index"
200+checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a"
201+dependencies = [
202+ "generic-array",
203+ "typenum",
204+]
205+
206+[[package]]
207+name = "csscolorparser"
208+version = "0.6.2"
209+source = "registry+https://github.com/rust-lang/crates.io-index"
210+checksum = "eb2a7d3066da2de787b7f032c736763eb7ae5d355f81a68bab2675a96008b0bf"
211+dependencies = [
212+ "lab",
213+ "phf",
214+]
215+
216+[[package]]
217+name = "darling"
218+version = "0.24.1"
219+source = "registry+https://github.com/rust-lang/crates.io-index"
220+checksum = "ed17f5901b6630b993ca003def43f2f8ef4014fc13b047b57aad617ff32bc2ec"
221+dependencies = [
222+ "darling_core",
223+ "darling_macro",
224+]
225+
226+[[package]]
227+name = "darling_core"
228+version = "0.24.1"
229+source = "registry+https://github.com/rust-lang/crates.io-index"
230+checksum = "6837e2cf7485aaae18f86181d2f0e9a7ed297a025e220aeabf63fdebd3a2ddff"
231+dependencies = [
232+ "ident_case",
233+ "proc-macro2",
234+ "quote",
235+ "strsim",
236+ "syn 3.0.6",
237+]
238+
239+[[package]]
240+name = "darling_macro"
241+version = "0.24.1"
242+source = "registry+https://github.com/rust-lang/crates.io-index"
243+checksum = "2ac7135c3ef02b2f7833bbeb1be5ba7f966dcde8a87c6b87f65a778d71a02785"
244+dependencies = [
245+ "darling_core",
246+ "quote",
247+ "syn 3.0.6",
248+]
249+
250+[[package]]
251+name = "deltae"
252+version = "0.3.2"
253+source = "registry+https://github.com/rust-lang/crates.io-index"
254+checksum = "5729f5117e208430e437df2f4843f5e5952997175992d1414f94c57d61e270b4"
255+
256+[[package]]
257+name = "deranged"
258+version = "0.5.8"
259+source = "registry+https://github.com/rust-lang/crates.io-index"
260+checksum = "7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c"
261+
262+[[package]]
263+name = "derive_more"
264+version = "2.1.1"
265+source = "registry+https://github.com/rust-lang/crates.io-index"
266+checksum = "d751e9e49156b02b44f9c1815bcb94b984cdcc4396ecc32521c739452808b134"
267+dependencies = [
268+ "derive_more-impl",
269+]
270+
271+[[package]]
272+name = "derive_more-impl"
273+version = "2.1.1"
274+source = "registry+https://github.com/rust-lang/crates.io-index"
275+checksum = "799a97264921d8623a957f6c3b9011f3b5492f557bbb7a5a19b7fa6d06ba8dcb"
276+dependencies = [
277+ "convert_case",
278+ "proc-macro2",
279+ "quote",
280+ "rustc_version",
281+ "syn 2.0.119",
282+]
283+
284+[[package]]
285+name = "digest"
286+version = "0.10.7"
287+source = "registry+https://github.com/rust-lang/crates.io-index"
288+checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
289+dependencies = [
290+ "block-buffer",
291+ "crypto-common",
292+]
293+
294+[[package]]
295+name = "document-features"
296+version = "0.2.12"
297+source = "registry+https://github.com/rust-lang/crates.io-index"
298+checksum = "d4b8a88685455ed29a21542a33abd9cb6510b6b129abadabdcef0f4c55bc8f61"
299+dependencies = [
300+ "litrs",
301+]
302+
303+[[package]]
304+name = "either"
305+version = "1.18.0"
306+source = "registry+https://github.com/rust-lang/crates.io-index"
307+checksum = "252afb9ae5eaa683babdc6a068b3f5726eb19e05070c731f9b2a23a7c3e8ed34"
308+
309+[[package]]
310+name = "equivalent"
311+version = "1.0.2"
312+source = "registry+https://github.com/rust-lang/crates.io-index"
313+checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f"
314+
315+[[package]]
316+name = "errno"
317+version = "0.3.14"
318+source = "registry+https://github.com/rust-lang/crates.io-index"
319+checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb"
320+dependencies = [
321+ "libc",
322+ "windows-sys",
323+]
324+
325+[[package]]
326+name = "euclid"
327+version = "0.22.14"
328+source = "registry+https://github.com/rust-lang/crates.io-index"
329+checksum = "f1a05365e3b1c6d1650318537c7460c6923f1abdd272ad6842baa2b509957a06"
330+dependencies = [
331+ "num-traits",
332+]
333+
334+[[package]]
335+name = "fancy-regex"
336+version = "0.11.0"
337+source = "registry+https://github.com/rust-lang/crates.io-index"
338+checksum = "b95f7c0680e4142284cf8b22c14a476e87d61b004a3a0861872b32ef7ead40a2"
339+dependencies = [
340+ "bit-set",
341+ "regex",
342+]
343+
344+[[package]]
345+name = "filedescriptor"
346+version = "0.8.3"
347+source = "registry+https://github.com/rust-lang/crates.io-index"
348+checksum = "e40758ed24c9b2eeb76c35fb0aebc66c626084edd827e07e1552279814c6682d"
349+dependencies = [
350+ "libc",
351+ "thiserror 1.0.69",
352+ "winapi",
353+]
354+
355+[[package]]
356+name = "finl_unicode"
357+version = "1.5.0"
358+source = "registry+https://github.com/rust-lang/crates.io-index"
359+checksum = "80bb028c8b4148c9ee0cca68fcd9add6044e81d3619f48577ddf13a263d047a2"
360+
361+[[package]]
362+name = "fixedbitset"
363+version = "0.4.2"
364+source = "registry+https://github.com/rust-lang/crates.io-index"
365+checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80"
366+
367+[[package]]
368+name = "fnv"
369+version = "1.0.7"
370+source = "registry+https://github.com/rust-lang/crates.io-index"
371+checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
372+
373+[[package]]
374+name = "foldhash"
375+version = "0.2.0"
376+source = "registry+https://github.com/rust-lang/crates.io-index"
377+checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb"
378+
379+[[package]]
380+name = "futures-core"
381+version = "0.3.34"
382+source = "registry+https://github.com/rust-lang/crates.io-index"
383+checksum = "92d699e522242e69e3003b94ecc1f960f3a5e015aa7c5d7486e65ad01dd94f5e"
384+
385+[[package]]
386+name = "futures-task"
387+version = "0.3.34"
388+source = "registry+https://github.com/rust-lang/crates.io-index"
389+checksum = "cd417de3d1d015fc3bfd2b1ea46dfc7bab72ef86f1cc7cc9c78e728b34a6d1fd"
390+
391+[[package]]
392+name = "futures-util"
393+version = "0.3.34"
394+source = "registry+https://github.com/rust-lang/crates.io-index"
395+checksum = "0d50a92467f8ba5dd6e3ee5d4bd04d73ab2e4e1c44474a0674821dfce14b79bc"
396+dependencies = [
397+ "futures-core",
398+ "futures-task",
399+ "pin-project-lite",
400+ "slab",
401+]
402+
403+[[package]]
404+name = "generic-array"
405+version = "0.14.7"
406+source = "registry+https://github.com/rust-lang/crates.io-index"
407+checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
408+dependencies = [
409+ "typenum",
410+ "version_check",
411+]
412+
413+[[package]]
414+name = "getrandom"
415+version = "0.3.4"
416+source = "registry+https://github.com/rust-lang/crates.io-index"
417+checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd"
418+dependencies = [
419+ "cfg-if",
420+ "libc",
421+ "r-efi 5.3.0",
422+ "wasip2",
423+]
424+
425+[[package]]
426+name = "getrandom"
427+version = "0.4.3"
428+source = "registry+https://github.com/rust-lang/crates.io-index"
429+checksum = "300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099"
430+dependencies = [
431+ "cfg-if",
432+ "libc",
433+ "r-efi 6.0.0",
434+]
435+
436+[[package]]
437+name = "hashbrown"
438+version = "0.16.1"
439+source = "registry+https://github.com/rust-lang/crates.io-index"
440+checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100"
441+dependencies = [
442+ "allocator-api2",
443+ "equivalent",
444+ "foldhash",
445+]
446+
447+[[package]]
448+name = "hashbrown"
449+version = "0.17.1"
450+source = "registry+https://github.com/rust-lang/crates.io-index"
451+checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a"
452+dependencies = [
453+ "allocator-api2",
454+ "equivalent",
455+ "foldhash",
456+]
457+
458+[[package]]
459+name = "heck"
460+version = "0.5.0"
461+source = "registry+https://github.com/rust-lang/crates.io-index"
462+checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
463+
464+[[package]]
465+name = "hex"
466+version = "0.4.3"
467+source = "registry+https://github.com/rust-lang/crates.io-index"
468+checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70"
469+
470+[[package]]
471+name = "ident_case"
472+version = "1.0.1"
473+source = "registry+https://github.com/rust-lang/crates.io-index"
474+checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39"
475+
476+[[package]]
477+name = "indoc"
478+version = "2.0.7"
479+source = "registry+https://github.com/rust-lang/crates.io-index"
480+checksum = "79cf5c93f93228cf8efb3ba362535fb11199ac548a09ce117c9b1adc3030d706"
481+dependencies = [
482+ "rustversion",
483+]
484+
485+[[package]]
486+name = "instability"
487+version = "0.3.14"
488+source = "registry+https://github.com/rust-lang/crates.io-index"
489+checksum = "4c3b5acc1e2fd9375041a388da33d1eb8aed5f7a8c0dd3543e3ea2805adfbe20"
490+dependencies = [
491+ "darling",
492+ "indoc",
493+ "proc-macro2",
494+ "quote",
495+ "syn 3.0.6",
496+]
497+
498+[[package]]
499+name = "itertools"
500+version = "0.14.0"
501+source = "registry+https://github.com/rust-lang/crates.io-index"
502+checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285"
503+dependencies = [
504+ "either",
505+]
506+
507+[[package]]
508+name = "itoa"
509+version = "1.0.18"
510+source = "registry+https://github.com/rust-lang/crates.io-index"
511+checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682"
512+
513+[[package]]
514+name = "js-sys"
515+version = "0.3.105"
516+source = "registry+https://github.com/rust-lang/crates.io-index"
517+checksum = "ce57d20d1ea864ce2ac172ab472d409214f4fd359f0b2a2775abdf522e2af99e"
518+dependencies = [
519+ "cfg-if",
520+ "futures-util",
521+ "wasm-bindgen",
522+]
523+
524+[[package]]
525+name = "kasuari"
526+version = "0.4.12"
527+source = "registry+https://github.com/rust-lang/crates.io-index"
528+checksum = "bde5057d6143cc94e861d90f591b9303d6716c6b9602309150bd068853c10899"
529+dependencies = [
530+ "hashbrown 0.16.1",
531+ "portable-atomic",
532+ "thiserror 2.0.20",
533+]
534+
535+[[package]]
536+name = "lab"
537+version = "0.11.0"
538+source = "registry+https://github.com/rust-lang/crates.io-index"
539+checksum = "bf36173d4167ed999940f804952e6b08197cae5ad5d572eb4db150ce8ad5d58f"
540+
541+[[package]]
542+name = "lazy_static"
543+version = "1.5.0"
544+source = "registry+https://github.com/rust-lang/crates.io-index"
545+checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
546+
547+[[package]]
548+name = "libc"
549+version = "0.2.189"
550+source = "registry+https://github.com/rust-lang/crates.io-index"
551+checksum = "3eaf3ede3fee6db1a4c2ee091bf8a8b4dccdc6d17f656fb07896ee72867612f2"
552+
553+[[package]]
554+name = "libm"
555+version = "0.2.16"
556+source = "registry+https://github.com/rust-lang/crates.io-index"
557+checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981"
558+
559+[[package]]
560+name = "line-clipping"
561+version = "0.3.8"
562+source = "registry+https://github.com/rust-lang/crates.io-index"
563+checksum = "e752191d037c44ad111a8caa762921926658402f01cc1253f7bef2020ece4f5e"
564+dependencies = [
565+ "bitflags 2.13.2",
566+]
567+
568+[[package]]
569+name = "linux-raw-sys"
570+version = "0.12.1"
571+source = "registry+https://github.com/rust-lang/crates.io-index"
572+checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53"
573+
574+[[package]]
575+name = "litrs"
576+version = "1.0.0"
577+source = "registry+https://github.com/rust-lang/crates.io-index"
578+checksum = "11d3d7f243d5c5a8b9bb5d6dd2b1602c0cb0b9db1621bafc7ed66e35ff9fe092"
579+
580+[[package]]
581+name = "lock_api"
582+version = "0.4.14"
583+source = "registry+https://github.com/rust-lang/crates.io-index"
584+checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965"
585+dependencies = [
586+ "scopeguard",
587+]
588+
589+[[package]]
590+name = "log"
591+version = "0.4.34"
592+source = "registry+https://github.com/rust-lang/crates.io-index"
593+checksum = "f9f8bd3e56ce4dfc153cf470fffbfa98c7620958b312ca5c3a4b8d5181fd13c6"
594+
595+[[package]]
596+name = "lru"
597+version = "0.18.5"
598+source = "registry+https://github.com/rust-lang/crates.io-index"
599+checksum = "ef9ac18847474e638e3702b76c65d4eb93428471a74778ef0f1be711717f89b5"
600+dependencies = [
601+ "hashbrown 0.17.1",
602+]
603+
604+[[package]]
605+name = "mac_address"
606+version = "1.1.8"
607+source = "registry+https://github.com/rust-lang/crates.io-index"
608+checksum = "c0aeb26bf5e836cc1c341c8106051b573f1766dfa05aa87f0b98be5e51b02303"
609+dependencies = [
610+ "nix",
611+ "winapi",
612+]
613+
614+[[package]]
615+name = "memchr"
616+version = "2.8.3"
617+source = "registry+https://github.com/rust-lang/crates.io-index"
618+checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98"
619+
620+[[package]]
621+name = "memmem"
622+version = "0.1.1"
623+source = "registry+https://github.com/rust-lang/crates.io-index"
624+checksum = "a64a92489e2744ce060c349162be1c5f33c6969234104dbd99ddb5feb08b8c15"
625+
626+[[package]]
627+name = "memoffset"
628+version = "0.9.1"
629+source = "registry+https://github.com/rust-lang/crates.io-index"
630+checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a"
631+dependencies = [
632+ "autocfg",
633+]
634+
635+[[package]]
636+name = "minimal-lexical"
637+version = "0.2.1"
638+source = "registry+https://github.com/rust-lang/crates.io-index"
639+checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
640+
641+[[package]]
642+name = "mio"
643+version = "1.2.3"
644+source = "registry+https://github.com/rust-lang/crates.io-index"
645+checksum = "4b18443e9c262bfe8fa82f51666e2642c53393f7e5c27b3e1aeab922cff5b9d8"
646+dependencies = [
647+ "libc",
648+ "log",
649+ "wasi",
650+ "windows-sys",
651+]
652+
653+[[package]]
654+name = "nix"
655+version = "0.29.0"
656+source = "registry+https://github.com/rust-lang/crates.io-index"
657+checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46"
658+dependencies = [
659+ "bitflags 2.13.2",
660+ "cfg-if",
661+ "cfg_aliases",
662+ "libc",
663+ "memoffset",
664+]
665+
666+[[package]]
667+name = "nom"
668+version = "7.1.3"
669+source = "registry+https://github.com/rust-lang/crates.io-index"
670+checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a"
671+dependencies = [
672+ "memchr",
673+ "minimal-lexical",
674+]
675+
676+[[package]]
677+name = "num-conv"
678+version = "0.2.2"
679+source = "registry+https://github.com/rust-lang/crates.io-index"
680+checksum = "521739c6d2bac4aa25192232afe6841231376b2b26d4d9fae5ecf8ca5772e441"
681+
682+[[package]]
683+name = "num-derive"
684+version = "0.4.2"
685+source = "registry+https://github.com/rust-lang/crates.io-index"
686+checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202"
687+dependencies = [
688+ "proc-macro2",
689+ "quote",
690+ "syn 2.0.119",
691+]
692+
693+[[package]]
694+name = "num-traits"
695+version = "0.2.19"
696+source = "registry+https://github.com/rust-lang/crates.io-index"
697+checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
698+dependencies = [
699+ "autocfg",
700+]
701+
702+[[package]]
703+name = "num_threads"
704+version = "0.1.7"
705+source = "registry+https://github.com/rust-lang/crates.io-index"
706+checksum = "5c7398b9c8b70908f6371f47ed36737907c87c52af34c268fed0bf0ceb92ead9"
707+dependencies = [
708+ "libc",
709+]
710+
711+[[package]]
712+name = "once_cell"
713+version = "1.21.4"
714+source = "registry+https://github.com/rust-lang/crates.io-index"
715+checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50"
716+
717+[[package]]
718+name = "ordered-float"
719+version = "4.6.0"
720+source = "registry+https://github.com/rust-lang/crates.io-index"
721+checksum = "7bb71e1b3fa6ca1c61f383464aaf2bb0e2f8e772a1f01d486832464de363b951"
722+dependencies = [
723+ "num-traits",
724+]
725+
726+[[package]]
727+name = "palette"
728+version = "0.7.7"
729+source = "registry+https://github.com/rust-lang/crates.io-index"
730+checksum = "ddeed8580d347d2abf3dcf06a5f0b3dc020258338526b277847cd4248a70fc64"
731+dependencies = [
732+ "approx",
733+ "libm",
734+ "palette_derive",
735+ "palette_math",
736+]
737+
738+[[package]]
739+name = "palette_derive"
740+version = "0.7.7"
741+source = "registry+https://github.com/rust-lang/crates.io-index"
742+checksum = "88537020289b719d81be994ccf1bbf4990f477e2f69ee52fe3e45f43a02e56be"
743+dependencies = [
744+ "by_address",
745+ "proc-macro2",
746+ "quote",
747+ "syn 2.0.119",
748+]
749+
750+[[package]]
751+name = "palette_math"
752+version = "0.7.7"
753+source = "registry+https://github.com/rust-lang/crates.io-index"
754+checksum = "6e6eb142958d64335fb0e345c5b9ead2ecd6fc438c307e9d7d3c4fd428dbaf12"
755+dependencies = [
756+ "libm",
757+]
758+
759+[[package]]
760+name = "parking_lot"
761+version = "0.12.5"
762+source = "registry+https://github.com/rust-lang/crates.io-index"
763+checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a"
764+dependencies = [
765+ "lock_api",
766+ "parking_lot_core",
767+]
768+
769+[[package]]
770+name = "parking_lot_core"
771+version = "0.9.12"
772+source = "registry+https://github.com/rust-lang/crates.io-index"
773+checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1"
774+dependencies = [
775+ "cfg-if",
776+ "libc",
777+ "redox_syscall",
778+ "smallvec",
779+ "windows-link",
780+]
781+
782+[[package]]
783+name = "pest"
784+version = "2.9.2"
785+source = "registry+https://github.com/rust-lang/crates.io-index"
786+checksum = "45d3aca230fad2e6f6317ca0a72724338c4960cb97168a85cdee66df4a9a21a8"
787+dependencies = [
788+ "memchr",
789+ "ucd-trie",
790+]
791+
792+[[package]]
793+name = "pest_derive"
794+version = "2.9.2"
795+source = "registry+https://github.com/rust-lang/crates.io-index"
796+checksum = "284b60557f2c4a2e72ad3f2d34d42685a2fa4a6a61d0d2a10c0ae2a5e916c2cf"
797+dependencies = [
798+ "pest",
799+ "pest_generator",
800+]
801+
802+[[package]]
803+name = "pest_generator"
804+version = "2.9.2"
805+source = "registry+https://github.com/rust-lang/crates.io-index"
806+checksum = "1d9d1f08a115309ee99268cf85e5228e0e56aa9caf8841ec12866b6be07c3109"
807+dependencies = [
808+ "pest",
809+ "pest_meta",
810+ "proc-macro2",
811+ "quote",
812+ "syn 2.0.119",
813+]
814+
815+[[package]]
816+name = "pest_meta"
817+version = "2.9.2"
818+source = "registry+https://github.com/rust-lang/crates.io-index"
819+checksum = "ed93ba1a9ffcca32130a5188701c81c0c49cf00d4b7c5007d5148951d743adcb"
820+dependencies = [
821+ "pest",
822+]
823+
824+[[package]]
825+name = "phf"
826+version = "0.11.3"
827+source = "registry+https://github.com/rust-lang/crates.io-index"
828+checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078"
829+dependencies = [
830+ "phf_macros",
831+ "phf_shared",
832+]
833+
834+[[package]]
835+name = "phf_codegen"
836+version = "0.11.3"
837+source = "registry+https://github.com/rust-lang/crates.io-index"
838+checksum = "aef8048c789fa5e851558d709946d6d79a8ff88c0440c587967f8e94bfb1216a"
839+dependencies = [
840+ "phf_generator",
841+ "phf_shared",
842+]
843+
844+[[package]]
845+name = "phf_generator"
846+version = "0.11.3"
847+source = "registry+https://github.com/rust-lang/crates.io-index"
848+checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d"
849+dependencies = [
850+ "phf_shared",
851+ "rand",
852+]
853+
854+[[package]]
855+name = "phf_macros"
856+version = "0.11.3"
857+source = "registry+https://github.com/rust-lang/crates.io-index"
858+checksum = "f84ac04429c13a7ff43785d75ad27569f2951ce0ffd30a3321230db2fc727216"
859+dependencies = [
860+ "phf_generator",
861+ "phf_shared",
862+ "proc-macro2",
863+ "quote",
864+ "syn 2.0.119",
865+]
866+
867+[[package]]
868+name = "phf_shared"
869+version = "0.11.3"
870+source = "registry+https://github.com/rust-lang/crates.io-index"
871+checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5"
872+dependencies = [
873+ "siphasher",
874+]
875+
876+[[package]]
877+name = "pin-project-lite"
878+version = "0.2.17"
879+source = "registry+https://github.com/rust-lang/crates.io-index"
880+checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd"
881+
882+[[package]]
883+name = "portable-atomic"
884+version = "1.15.0"
885+source = "registry+https://github.com/rust-lang/crates.io-index"
886+checksum = "05c8b63e8d9609db387f0324918f81d68fe27748f084ef092fb35954d0539a85"
887+
888+[[package]]
889+name = "powerfmt"
890+version = "0.2.0"
891+source = "registry+https://github.com/rust-lang/crates.io-index"
892+checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391"
893+
894+[[package]]
895+name = "proc-macro2"
896+version = "1.0.107"
897+source = "registry+https://github.com/rust-lang/crates.io-index"
898+checksum = "985e7ec9bb745e6ce6535b544d84d6cd6f7ad8bd711c398938ae983b91a766d9"
899+dependencies = [
900+ "unicode-ident",
901+]
902+
903+[[package]]
904+name = "quote"
905+version = "1.0.47"
906+source = "registry+https://github.com/rust-lang/crates.io-index"
907+checksum = "1fbf4db142a473a8d80c26bbf18454ed458bf8d26c8219c331daecfdbd079001"
908+dependencies = [
909+ "proc-macro2",
910+]
911+
912+[[package]]
913+name = "r-efi"
914+version = "5.3.0"
915+source = "registry+https://github.com/rust-lang/crates.io-index"
916+checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f"
917+
918+[[package]]
919+name = "r-efi"
920+version = "6.0.0"
921+source = "registry+https://github.com/rust-lang/crates.io-index"
922+checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf"
923+
924+[[package]]
925+name = "rand"
926+version = "0.8.8"
927+source = "registry+https://github.com/rust-lang/crates.io-index"
928+checksum = "e058c7de0b26af77780c769414d6257830bb240f3c38477dbc2c16e5f54d6d4c"
929+dependencies = [
930+ "rand_core",
931+]
932+
933+[[package]]
934+name = "rand_core"
935+version = "0.6.4"
936+source = "registry+https://github.com/rust-lang/crates.io-index"
937+checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
938+
939+[[package]]
940+name = "ratatui"
941+version = "0.30.2"
942+source = "registry+https://github.com/rust-lang/crates.io-index"
943+checksum = "3274ba0a2c5e1bcad2a2005d20f4dc59dad26b2eb0940fb094500dba4099d57d"
944+dependencies = [
945+ "instability",
946+ "ratatui-core",
947+ "ratatui-crossterm",
948+ "ratatui-macros",
949+ "ratatui-termina",
950+ "ratatui-termwiz",
951+ "ratatui-widgets",
952+ "serde",
953+]
954+
955+[[package]]
956+name = "ratatui-core"
957+version = "0.1.2"
958+source = "registry+https://github.com/rust-lang/crates.io-index"
959+checksum = "cbb175c433c8e28a809d1f5773a2ae96e68c0ce40db865cbab1020bf33ae479c"
960+dependencies = [
961+ "bitflags 2.13.2",
962+ "compact_str",
963+ "critical-section",
964+ "hashbrown 0.17.1",
965+ "itertools",
966+ "kasuari",
967+ "lru",
968+ "palette",
969+ "serde",
970+ "strum",
971+ "thiserror 2.0.20",
972+ "unicode-segmentation",
973+ "unicode-truncate",
974+ "unicode-width",
975+]
976+
977+[[package]]
978+name = "ratatui-crossterm"
979+version = "0.1.2"
980+source = "registry+https://github.com/rust-lang/crates.io-index"
981+checksum = "567584a3b0e6a8203c23de40b4861497266725eb5363dbfd18a1edd603cca9f0"
982+dependencies = [
983+ "cfg-if",
984+ "crossterm",
985+ "instability",
986+ "ratatui-core",
987+]
988+
989+[[package]]
990+name = "ratatui-macros"
991+version = "0.7.2"
992+source = "registry+https://github.com/rust-lang/crates.io-index"
993+checksum = "ed7dc68daa7498a43e4d68e0eb078427e10c38fbcfbb1e42d955f1fa2140d814"
994+dependencies = [
995+ "ratatui-core",
996+ "ratatui-widgets",
997+]
998+
999+[[package]]
1000+name = "ratatui-termina"
1001+version = "0.1.0"
1002+source = "registry+https://github.com/rust-lang/crates.io-index"
1003+checksum = "c0bf912d9e66f057a759d92e386a280ea886b352ab757d6ac4d653c7ed2c43c2"
1004+dependencies = [
1005+ "instability",
1006+ "ratatui-core",
1007+ "termina",
1008+]
1009+
1010+[[package]]
1011+name = "ratatui-termwiz"
1012+version = "0.1.2"
1013+source = "registry+https://github.com/rust-lang/crates.io-index"
1014+checksum = "faf03e0380b7744054d6cb74224fe3adf062a029754933f575ca1e3b4c2ce977"
1015+dependencies = [
1016+ "ratatui-core",
1017+ "termwiz",
1018+]
1019+
1020+[[package]]
1021+name = "ratatui-widgets"
1022+version = "0.3.2"
1023+source = "registry+https://github.com/rust-lang/crates.io-index"
1024+checksum = "66e3d19bcc9130ca376277d93b60767ff121ace3be06f5f95f81dd68956407d1"
1025+dependencies = [
1026+ "bitflags 2.13.2",
1027+ "hashbrown 0.17.1",
1028+ "indoc",
1029+ "instability",
1030+ "itertools",
1031+ "line-clipping",
1032+ "ratatui-core",
1033+ "serde",
1034+ "strum",
1035+ "time",
1036+ "unicode-segmentation",
1037+ "unicode-width",
1038+]
1039+
1040+[[package]]
1041+name = "redox_syscall"
1042+version = "0.5.18"
1043+source = "registry+https://github.com/rust-lang/crates.io-index"
1044+checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d"
1045+dependencies = [
1046+ "bitflags 2.13.2",
1047+]
1048+
1049+[[package]]
1050+name = "regex"
1051+version = "1.13.1"
1052+source = "registry+https://github.com/rust-lang/crates.io-index"
1053+checksum = "f020237b6c8eed93db2e2cb53c00c60a8e1bc73da7d073199a1180401450218d"
1054+dependencies = [
1055+ "aho-corasick",
1056+ "memchr",
1057+ "regex-automata",
1058+ "regex-syntax",
1059+]
1060+
1061+[[package]]
1062+name = "regex-automata"
1063+version = "0.4.18"
1064+source = "registry+https://github.com/rust-lang/crates.io-index"
1065+checksum = "ad8553b9b26413251cbf30e620595c7a41b3887f03da04579c0e6b0d6a06b4b2"
1066+dependencies = [
1067+ "aho-corasick",
1068+ "memchr",
1069+ "regex-syntax",
1070+]
1071+
1072+[[package]]
1073+name = "regex-syntax"
1074+version = "0.8.11"
1075+source = "registry+https://github.com/rust-lang/crates.io-index"
1076+checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4"
1077+
1078+[[package]]
1079+name = "rustc_version"
1080+version = "0.4.1"
1081+source = "registry+https://github.com/rust-lang/crates.io-index"
1082+checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92"
1083+dependencies = [
1084+ "semver",
1085+]
1086+
1087+[[package]]
1088+name = "rustix"
1089+version = "1.1.5"
1090+source = "registry+https://github.com/rust-lang/crates.io-index"
1091+checksum = "891efababe418670775f199f0d233d84843c227a0949a883ce15b37c78d6629d"
1092+dependencies = [
1093+ "bitflags 2.13.2",
1094+ "errno",
1095+ "libc",
1096+ "linux-raw-sys",
1097+ "windows-sys",
1098+]
1099+
1100+[[package]]
1101+name = "rustversion"
1102+version = "1.0.23"
1103+source = "registry+https://github.com/rust-lang/crates.io-index"
1104+checksum = "cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f"
1105+
1106+[[package]]
1107+name = "ryu"
1108+version = "1.0.23"
1109+source = "registry+https://github.com/rust-lang/crates.io-index"
1110+checksum = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f"
1111+
1112+[[package]]
1113+name = "scopeguard"
1114+version = "1.2.0"
1115+source = "registry+https://github.com/rust-lang/crates.io-index"
1116+checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
1117+
1118+[[package]]
1119+name = "semver"
1120+version = "1.0.28"
1121+source = "registry+https://github.com/rust-lang/crates.io-index"
1122+checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd"
1123+
1124+[[package]]
1125+name = "serde"
1126+version = "1.0.229"
1127+source = "registry+https://github.com/rust-lang/crates.io-index"
1128+checksum = "4148590afebada386688f18773da617792bf2ef03ffc1e4cbd2b1d45b023e0ba"
1129+dependencies = [
1130+ "serde_core",
1131+ "serde_derive",
1132+]
1133+
1134+[[package]]
1135+name = "serde_core"
1136+version = "1.0.229"
1137+source = "registry+https://github.com/rust-lang/crates.io-index"
1138+checksum = "67dca2c9c51e58a4791a4b1ed58308b39c64224d349a935ab5039aa360942a48"
1139+dependencies = [
1140+ "serde_derive",
1141+]
1142+
1143+[[package]]
1144+name = "serde_derive"
1145+version = "1.0.229"
1146+source = "registry+https://github.com/rust-lang/crates.io-index"
1147+checksum = "e7a5d71263a5a7d47b41f6b3f06ba276f10cc18b0931f1799f710578e2309348"
1148+dependencies = [
1149+ "proc-macro2",
1150+ "quote",
1151+ "syn 3.0.6",
1152+]
1153+
1154+[[package]]
1155+name = "sha2"
1156+version = "0.10.9"
1157+source = "registry+https://github.com/rust-lang/crates.io-index"
1158+checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283"
1159+dependencies = [
1160+ "cfg-if",
1161+ "cpufeatures",
1162+ "digest",
1163+]
1164+
1165+[[package]]
1166+name = "show_key"
1167+version = "0.1.0"
1168+dependencies = [
1169+ "crossterm",
1170+ "ratatui",
1171+]
1172+
1173+[[package]]
1174+name = "signal-hook"
1175+version = "0.3.18"
1176+source = "registry+https://github.com/rust-lang/crates.io-index"
1177+checksum = "d881a16cf4426aa584979d30bd82cb33429027e42122b169753d6ef1085ed6e2"
1178+dependencies = [
1179+ "libc",
1180+ "signal-hook-registry",
1181+]
1182+
1183+[[package]]
1184+name = "signal-hook-mio"
1185+version = "0.2.5"
1186+source = "registry+https://github.com/rust-lang/crates.io-index"
1187+checksum = "b75a19a7a740b25bc7944bdee6172368f988763b744e3d4dfe753f6b4ece40cc"
1188+dependencies = [
1189+ "libc",
1190+ "mio",
1191+ "signal-hook",
1192+]
1193+
1194+[[package]]
1195+name = "signal-hook-registry"
1196+version = "1.4.8"
1197+source = "registry+https://github.com/rust-lang/crates.io-index"
1198+checksum = "c4db69cba1110affc0e9f7bcd48bbf87b3f4fc7c61fc9155afd4c469eb3d6c1b"
1199+dependencies = [
1200+ "errno",
1201+ "libc",
1202+]
1203+
1204+[[package]]
1205+name = "siphasher"
1206+version = "1.0.3"
1207+source = "registry+https://github.com/rust-lang/crates.io-index"
1208+checksum = "8ee5873ec9cce0195efcb7a4e9507a04cd49aec9c83d0389df45b1ef7ba2e649"
1209+
1210+[[package]]
1211+name = "slab"
1212+version = "0.4.12"
1213+source = "registry+https://github.com/rust-lang/crates.io-index"
1214+checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5"
1215+
1216+[[package]]
1217+name = "smallvec"
1218+version = "1.16.1"
1219+source = "registry+https://github.com/rust-lang/crates.io-index"
1220+checksum = "ba467056f1b547ed52077911161fc86985becbc60e8e1857c8a144dab0def891"
1221+
1222+[[package]]
1223+name = "static_assertions"
1224+version = "1.1.0"
1225+source = "registry+https://github.com/rust-lang/crates.io-index"
1226+checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
1227+
1228+[[package]]
1229+name = "strsim"
1230+version = "0.11.1"
1231+source = "registry+https://github.com/rust-lang/crates.io-index"
1232+checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
1233+
1234+[[package]]
1235+name = "strum"
1236+version = "0.28.0"
1237+source = "registry+https://github.com/rust-lang/crates.io-index"
1238+checksum = "9628de9b8791db39ceda2b119bbe13134770b56c138ec1d3af810d045c04f9bd"
1239+dependencies = [
1240+ "strum_macros",
1241+]
1242+
1243+[[package]]
1244+name = "strum_macros"
1245+version = "0.28.0"
1246+source = "registry+https://github.com/rust-lang/crates.io-index"
1247+checksum = "ab85eea0270ee17587ed4156089e10b9e6880ee688791d45a905f5b1ca36f664"
1248+dependencies = [
1249+ "heck",
1250+ "proc-macro2",
1251+ "quote",
1252+ "syn 2.0.119",
1253+]
1254+
1255+[[package]]
1256+name = "syn"
1257+version = "1.0.109"
1258+source = "registry+https://github.com/rust-lang/crates.io-index"
1259+checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
1260+dependencies = [
1261+ "proc-macro2",
1262+ "quote",
1263+ "unicode-ident",
1264+]
1265+
1266+[[package]]
1267+name = "syn"
1268+version = "2.0.119"
1269+source = "registry+https://github.com/rust-lang/crates.io-index"
1270+checksum = "872831b642d1a07999a962a351ed35b955ea2cfc8f3862091e2a240a84f17297"
1271+dependencies = [
1272+ "proc-macro2",
1273+ "quote",
1274+ "unicode-ident",
1275+]
1276+
1277+[[package]]
1278+name = "syn"
1279+version = "3.0.6"
1280+source = "registry+https://github.com/rust-lang/crates.io-index"
1281+checksum = "8593e8e72159ed2257d083c7a454a85cbf854f37a0966d8d483aff8c8a3ebcee"
1282+dependencies = [
1283+ "proc-macro2",
1284+ "quote",
1285+ "unicode-ident",
1286+]
1287+
1288+[[package]]
1289+name = "termina"
1290+version = "0.3.3"
1291+source = "registry+https://github.com/rust-lang/crates.io-index"
1292+checksum = "9048a889effe34a5cddee0af7f53285198b16dca3be510858d38dfdb3e62a04e"
1293+dependencies = [
1294+ "bitflags 2.13.2",
1295+ "parking_lot",
1296+ "rustix",
1297+ "signal-hook",
1298+ "windows-sys",
1299+]
1300+
1301+[[package]]
1302+name = "terminfo"
1303+version = "0.9.0"
1304+source = "registry+https://github.com/rust-lang/crates.io-index"
1305+checksum = "d4ea810f0692f9f51b382fff5893887bb4580f5fa246fde546e0b13e7fcee662"
1306+dependencies = [
1307+ "fnv",
1308+ "nom",
1309+ "phf",
1310+ "phf_codegen",
1311+]
1312+
1313+[[package]]
1314+name = "termios"
1315+version = "0.3.3"
1316+source = "registry+https://github.com/rust-lang/crates.io-index"
1317+checksum = "411c5bf740737c7918b8b1fe232dca4dc9f8e754b8ad5e20966814001ed0ac6b"
1318+dependencies = [
1319+ "libc",
1320+]
1321+
1322+[[package]]
1323+name = "termwiz"
1324+version = "0.23.3"
1325+source = "registry+https://github.com/rust-lang/crates.io-index"
1326+checksum = "4676b37242ccbd1aabf56edb093a4827dc49086c0ffd764a5705899e0f35f8f7"
1327+dependencies = [
1328+ "anyhow",
1329+ "base64",
1330+ "bitflags 2.13.2",
1331+ "fancy-regex",
1332+ "filedescriptor",
1333+ "finl_unicode",
1334+ "fixedbitset",
1335+ "hex",
1336+ "lazy_static",
1337+ "libc",
1338+ "log",
1339+ "memmem",
1340+ "nix",
1341+ "num-derive",
1342+ "num-traits",
1343+ "ordered-float",
1344+ "pest",
1345+ "pest_derive",
1346+ "phf",
1347+ "sha2",
1348+ "signal-hook",
1349+ "siphasher",
1350+ "terminfo",
1351+ "termios",
1352+ "thiserror 1.0.69",
1353+ "ucd-trie",
1354+ "unicode-segmentation",
1355+ "vtparse",
1356+ "wezterm-bidi",
1357+ "wezterm-blob-leases",
1358+ "wezterm-color-types",
1359+ "wezterm-dynamic",
1360+ "wezterm-input-types",
1361+ "winapi",
1362+]
1363+
1364+[[package]]
1365+name = "thiserror"
1366+version = "1.0.69"
1367+source = "registry+https://github.com/rust-lang/crates.io-index"
1368+checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52"
1369+dependencies = [
1370+ "thiserror-impl 1.0.69",
1371+]
1372+
1373+[[package]]
1374+name = "thiserror"
1375+version = "2.0.20"
1376+source = "registry+https://github.com/rust-lang/crates.io-index"
1377+checksum = "ec86235f5fcc2a73650310756d2ac5b138a5780bbbdfae3eeccec992c435ba4f"
1378+dependencies = [
1379+ "thiserror-impl 2.0.20",
1380+]
1381+
1382+[[package]]
1383+name = "thiserror-impl"
1384+version = "1.0.69"
1385+source = "registry+https://github.com/rust-lang/crates.io-index"
1386+checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1"
1387+dependencies = [
1388+ "proc-macro2",
1389+ "quote",
1390+ "syn 2.0.119",
1391+]
1392+
1393+[[package]]
1394+name = "thiserror-impl"
1395+version = "2.0.20"
1396+source = "registry+https://github.com/rust-lang/crates.io-index"
1397+checksum = "bc04cd3e1236dd4a98afca4569f2deb3f120e5422a4023be2cb683f8486292af"
1398+dependencies = [
1399+ "proc-macro2",
1400+ "quote",
1401+ "syn 3.0.6",
1402+]
1403+
1404+[[package]]
1405+name = "time"
1406+version = "0.3.55"
1407+source = "registry+https://github.com/rust-lang/crates.io-index"
1408+checksum = "cdb87b95ec50ddfa440816d227a17b2ccbdda963a316a727fda0fc4334f7d134"
1409+dependencies = [
1410+ "deranged",
1411+ "libc",
1412+ "num-conv",
1413+ "num_threads",
1414+ "powerfmt",
1415+ "serde_core",
1416+ "time-core",
1417+]
1418+
1419+[[package]]
1420+name = "time-core"
1421+version = "0.1.9"
1422+source = "registry+https://github.com/rust-lang/crates.io-index"
1423+checksum = "9e1c906769ad99c88eaa54e728060edef082f8e358ff32030cb7c7d315e81109"
1424+
1425+[[package]]
1426+name = "typenum"
1427+version = "1.20.1"
1428+source = "registry+https://github.com/rust-lang/crates.io-index"
1429+checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20"
1430+
1431+[[package]]
1432+name = "ucd-trie"
1433+version = "0.1.7"
1434+source = "registry+https://github.com/rust-lang/crates.io-index"
1435+checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971"
1436+
1437+[[package]]
1438+name = "unicode-ident"
1439+version = "1.0.26"
1440+source = "registry+https://github.com/rust-lang/crates.io-index"
1441+checksum = "d245f478577f809a851594d02313b640fb437e0bb33866753cff937863096954"
1442+
1443+[[package]]
1444+name = "unicode-segmentation"
1445+version = "1.13.3"
1446+source = "registry+https://github.com/rust-lang/crates.io-index"
1447+checksum = "c6f5d3c3b1bf09027a88a6bc961fc00497d651009560b5463668dc81b0fa87a8"
1448+
1449+[[package]]
1450+name = "unicode-truncate"
1451+version = "2.0.1"
1452+source = "registry+https://github.com/rust-lang/crates.io-index"
1453+checksum = "16b380a1238663e5f8a691f9039c73e1cdae598a30e9855f541d29b08b53e9a5"
1454+dependencies = [
1455+ "itertools",
1456+ "unicode-segmentation",
1457+ "unicode-width",
1458+]
1459+
1460+[[package]]
1461+name = "unicode-width"
1462+version = "0.2.2"
1463+source = "registry+https://github.com/rust-lang/crates.io-index"
1464+checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254"
1465+
1466+[[package]]
1467+name = "utf8parse"
1468+version = "0.2.2"
1469+source = "registry+https://github.com/rust-lang/crates.io-index"
1470+checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821"
1471+
1472+[[package]]
1473+name = "uuid"
1474+version = "1.26.1"
1475+source = "registry+https://github.com/rust-lang/crates.io-index"
1476+checksum = "2ef6dac1e96601b4fb3acccccff2139741fcb757cb9a36089bf5be91cfb285ce"
1477+dependencies = [
1478+ "atomic",
1479+ "getrandom 0.4.3",
1480+ "js-sys",
1481+ "wasm-bindgen",
1482+]
1483+
1484+[[package]]
1485+name = "version_check"
1486+version = "0.9.5"
1487+source = "registry+https://github.com/rust-lang/crates.io-index"
1488+checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
1489+
1490+[[package]]
1491+name = "vtparse"
1492+version = "0.6.2"
1493+source = "registry+https://github.com/rust-lang/crates.io-index"
1494+checksum = "6d9b2acfb050df409c972a37d3b8e08cdea3bddb0c09db9d53137e504cfabed0"
1495+dependencies = [
1496+ "utf8parse",
1497+]
1498+
1499+[[package]]
1500+name = "wasi"
1501+version = "0.11.1+wasi-snapshot-preview1"
1502+source = "registry+https://github.com/rust-lang/crates.io-index"
1503+checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b"
1504+
1505+[[package]]
1506+name = "wasip2"
1507+version = "1.0.4+wasi-0.2.12"
1508+source = "registry+https://github.com/rust-lang/crates.io-index"
1509+checksum = "b67efb37e106e55ce722a510d6b5f9c17f083e5fc79afc2badeb12cc313d9487"
1510+dependencies = [
1511+ "wit-bindgen",
1512+]
1513+
1514+[[package]]
1515+name = "wasm-bindgen"
1516+version = "0.2.128"
1517+source = "registry+https://github.com/rust-lang/crates.io-index"
1518+checksum = "aecb87a33d3b0c5e3b7aa46336eaf486cffafbd281b195e4c8b80d50df2351bf"
1519+dependencies = [
1520+ "cfg-if",
1521+ "once_cell",
1522+ "rustversion",
1523+ "wasm-bindgen-macro",
1524+ "wasm-bindgen-shared",
1525+]
1526+
1527+[[package]]
1528+name = "wasm-bindgen-macro"
1529+version = "0.2.128"
1530+source = "registry+https://github.com/rust-lang/crates.io-index"
1531+checksum = "a690d511e3c1a8b3a55e33511e3c2c00c78415cd23650f32b808627f5696b9ed"
1532+dependencies = [
1533+ "quote",
1534+ "wasm-bindgen-macro-support",
1535+]
1536+
1537+[[package]]
1538+name = "wasm-bindgen-macro-support"
1539+version = "0.2.128"
1540+source = "registry+https://github.com/rust-lang/crates.io-index"
1541+checksum = "411e4887f0071ef2d2164a9d5fdf2d20efbef78fccd3a78b0c10a1dc5295e48a"
1542+dependencies = [
1543+ "bumpalo",
1544+ "proc-macro2",
1545+ "quote",
1546+ "syn 3.0.6",
1547+ "wasm-bindgen-shared",
1548+]
1549+
1550+[[package]]
1551+name = "wasm-bindgen-shared"
1552+version = "0.2.128"
1553+source = "registry+https://github.com/rust-lang/crates.io-index"
1554+checksum = "81941cd78d0c92026c33e5e01312845a4cb1e9af3407f9134b100dd03144103e"
1555+dependencies = [
1556+ "unicode-ident",
1557+]
1558+
1559+[[package]]
1560+name = "wezterm-bidi"
1561+version = "0.2.3"
1562+source = "registry+https://github.com/rust-lang/crates.io-index"
1563+checksum = "0c0a6e355560527dd2d1cf7890652f4f09bb3433b6aadade4c9b5ed76de5f3ec"
1564+dependencies = [
1565+ "log",
1566+ "wezterm-dynamic",
1567+]
1568+
1569+[[package]]
1570+name = "wezterm-blob-leases"
1571+version = "0.1.1"
1572+source = "registry+https://github.com/rust-lang/crates.io-index"
1573+checksum = "692daff6d93d94e29e4114544ef6d5c942a7ed998b37abdc19b17136ea428eb7"
1574+dependencies = [
1575+ "getrandom 0.3.4",
1576+ "mac_address",
1577+ "sha2",
1578+ "thiserror 1.0.69",
1579+ "uuid",
1580+]
1581+
1582+[[package]]
1583+name = "wezterm-color-types"
1584+version = "0.3.0"
1585+source = "registry+https://github.com/rust-lang/crates.io-index"
1586+checksum = "7de81ef35c9010270d63772bebef2f2d6d1f2d20a983d27505ac850b8c4b4296"
1587+dependencies = [
1588+ "csscolorparser",
1589+ "deltae",
1590+ "lazy_static",
1591+ "wezterm-dynamic",
1592+]
1593+
1594+[[package]]
1595+name = "wezterm-dynamic"
1596+version = "0.2.1"
1597+source = "registry+https://github.com/rust-lang/crates.io-index"
1598+checksum = "5f2ab60e120fd6eaa68d9567f3226e876684639d22a4219b313ff69ec0ccd5ac"
1599+dependencies = [
1600+ "log",
1601+ "ordered-float",
1602+ "strsim",
1603+ "thiserror 1.0.69",
1604+ "wezterm-dynamic-derive",
1605+]
1606+
1607+[[package]]
1608+name = "wezterm-dynamic-derive"
1609+version = "0.1.1"
1610+source = "registry+https://github.com/rust-lang/crates.io-index"
1611+checksum = "46c0cf2d539c645b448eaffec9ec494b8b19bd5077d9e58cb1ae7efece8d575b"
1612+dependencies = [
1613+ "proc-macro2",
1614+ "quote",
1615+ "syn 1.0.109",
1616+]
1617+
1618+[[package]]
1619+name = "wezterm-input-types"
1620+version = "0.1.0"
1621+source = "registry+https://github.com/rust-lang/crates.io-index"
1622+checksum = "7012add459f951456ec9d6c7e6fc340b1ce15d6fc9629f8c42853412c029e57e"
1623+dependencies = [
1624+ "bitflags 1.3.2",
1625+ "euclid",
1626+ "lazy_static",
1627+ "serde",
1628+ "wezterm-dynamic",
1629+]
1630+
1631+[[package]]
1632+name = "winapi"
1633+version = "0.3.9"
1634+source = "registry+https://github.com/rust-lang/crates.io-index"
1635+checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
1636+dependencies = [
1637+ "winapi-i686-pc-windows-gnu",
1638+ "winapi-x86_64-pc-windows-gnu",
1639+]
1640+
1641+[[package]]
1642+name = "winapi-i686-pc-windows-gnu"
1643+version = "0.4.0"
1644+source = "registry+https://github.com/rust-lang/crates.io-index"
1645+checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
1646+
1647+[[package]]
1648+name = "winapi-x86_64-pc-windows-gnu"
1649+version = "0.4.0"
1650+source = "registry+https://github.com/rust-lang/crates.io-index"
1651+checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
1652+
1653+[[package]]
1654+name = "windows-link"
1655+version = "0.2.1"
1656+source = "registry+https://github.com/rust-lang/crates.io-index"
1657+checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5"
1658+
1659+[[package]]
1660+name = "windows-sys"
1661+version = "0.61.2"
1662+source = "registry+https://github.com/rust-lang/crates.io-index"
1663+checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc"
1664+dependencies = [
1665+ "windows-link",
1666+]
1667+
1668+[[package]]
1669+name = "wit-bindgen"
1670+version = "0.57.1"
1671+source = "registry+https://github.com/rust-lang/crates.io-index"
1672+checksum = "1ebf944e87a7c253233ad6766e082e3cd714b5d03812acc24c318f549614536e"
Added file: Cargo.toml+8 additions
@@ -0,0 +1,8 @@
1+[package]
2+name = "show_key"
3+version = "0.1.0"
4+edition = "2024"
5+
6+[dependencies]
7+crossterm = "0.29.0"
8+ratatui = "0.30.2"
Added file: flake.lock+27 additions
@@ -0,0 +1,27 @@
1+{
2+ "nodes": {
3+ "nixpkgs": {
4+ "locked": {
5+ "lastModified": 1790149054,
6+ "narHash": "sha256-FfjXg6mAzKQBCY+7V9keGWOXG4DV2Eym/qA987lFl8A=",
7+ "owner": "NixOS",
8+ "repo": "nixpkgs",
9+ "rev": "8825bebf6324e0579d012936eff73379af284b6d",
10+ "type": "github"
11+ },
12+ "original": {
13+ "owner": "NixOS",
14+ "ref": "nixpkgs-unstable",
15+ "repo": "nixpkgs",
16+ "type": "github"
17+ }
18+ },
19+ "root": {
20+ "inputs": {
21+ "nixpkgs": "nixpkgs"
22+ }
23+ }
24+ },
25+ "root": "root",
26+ "version": 7
27+}
Added file: flake.nix+33 additions
@@ -0,0 +1,33 @@
1+{
2+ description = "Rust 2048 game";
3+
4+ inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
5+
6+ outputs = {nixpkgs, ...}: let
7+ system = "x86_64-linux";
8+ pkgs = nixpkgs.legacyPackages.${system};
9+ in {
10+ packages.${system}.default = pkgs.rustPlatform.buildRustPackage {
11+ pname = "jag_2048";
12+ version = "1.0.0";
13+
14+ src = ./.;
15+
16+ cargoLock.lockFile = ./Cargo.lock;
17+
18+ meta = {
19+ description = "Rust 2048 game";
20+ mainProgram = "jag_2048";
21+ };
22+ };
23+
24+ devShells.${system}.default = pkgs.mkShell {
25+ packages = with pkgs; [
26+ rustc
27+ cargo
28+ rustfmt
29+ clippy
30+ ];
31+ };
32+ };
33+}
Added file: src/main.rs+179 additions
@@ -0,0 +1,179 @@
1+use std::{
2+ io,
3+ time::{
4+ Duration,
5+ Instant,
6+ },
7+};
8+
9+use crossterm::event::{
10+ self,
11+ poll,
12+ KeyCode,
13+ KeyModifiers,
14+ KeyEvent,
15+ KeyEventKind,
16+ Event,
17+};
18+
19+use ratatui::{
20+ buffer::Buffer,
21+ layout::{Rect, Constraint},
22+ text::{Line, Span},
23+ style::Stylize,
24+ symbols::border,
25+ DefaultTerminal,
26+ widgets::{Widget, Block},
27+ Frame,
28+};
29+
30+#[derive(Debug, PartialEq, Eq)]
31+enum State {
32+ Run,
33+ Consider,
34+ Quit,
35+}
36+
37+#[derive(Debug)]
38+pub struct ShowKey {
39+ state: State,
40+ current_key: Option<KeyEvent>,
41+ key_time: Option<Instant>,
42+}
43+
44+impl Default for ShowKey {
45+ fn default() -> Self {
46+ Self {
47+ state: State::Run,
48+ current_key: None,
49+ key_time: None,
50+ }
51+ }
52+}
53+
54+impl Widget for &ShowKey {
55+ fn render(self, area: Rect, buf: &mut Buffer) {
56+
57+ let title = Line::from(" Show Key ".bold());
58+
59+ let block = Block::bordered()
60+ .title(title.centered())
61+ .border_set(border::ROUNDED);
62+
63+ let block_area = area.centered(
64+ Constraint::Length(25),
65+ Constraint::Length(7),
66+ );
67+
68+ let pressed = Line::from(self
69+ .current_key.map(|key| vec![
70+ Span::from(match key.modifiers {
71+ KeyModifiers::NONE => "".into(),
72+ other => format!("{other} + "),
73+ }),
74+ Span::from(match key.code {
75+ KeyCode::Char(c) => if c == ' ' {
76+ "\" \"".into()
77+ } else {
78+ c.to_lowercase().to_string()
79+ },
80+ KeyCode::F(f) => format!("F{f}"),
81+ other => format!("{other}"),
82+ }),
83+ ]
84+
85+
86+ )
87+ .unwrap_or(vec![Span::from("Fuck you")])
88+ );
89+
90+ let pressed_area = block
91+ .inner(block_area)
92+ .centered(
93+ Constraint::Length(pressed.width() as u16),
94+ Constraint::Length(1),
95+ );
96+
97+ block.render(block_area, buf);
98+ pressed.render(pressed_area, buf);
99+ }
100+}
101+
102+impl ShowKey {
103+ fn run(&mut self, terminal: &mut DefaultTerminal) -> io::Result<()> {
104+
105+ terminal.draw(|frame| self.draw(frame))?;
106+
107+ while self.state != State::Quit {
108+
109+ if poll(Duration::from_millis(100))? {
110+ self.handle_events()?;
111+ }
112+
113+ match self.key_time {
114+ Some(time) if time.elapsed() >= Duration::from_secs(1) => {
115+ self.unset();
116+ self.detime();
117+ },
118+ _ => {},
119+ }
120+
121+ terminal.draw(|frame| self.draw(frame))?;
122+ }
123+ Ok(())
124+ }
125+
126+ fn draw(&self, frame: &mut Frame) {
127+ frame.render_widget(self, frame.area());
128+ }
129+
130+ fn handle_events(&mut self) -> io::Result<()> {
131+ match event::read()? {
132+ Event::Key(key_event) if key_event.kind == KeyEventKind::Press => {
133+ self.key_time = Some(Instant::now());
134+ self.handle_key_event(key_event);
135+ },
136+ _ => {},
137+ }
138+ Ok(())
139+ }
140+
141+ fn handle_key_event(&mut self, key_event: KeyEvent) {
142+
143+ self.current_key = Some(key_event);
144+
145+ match key_event.code {
146+ KeyCode::Esc => self.deeper(),
147+ _ => self.higher(),
148+ }
149+ }
150+
151+ fn unset(&mut self) {
152+ self.current_key = None;
153+ }
154+
155+ fn detime(&mut self) {
156+ self.key_time = None;
157+ }
158+
159+ fn deeper(&mut self) {
160+ match self.state {
161+ State::Run => self.state = State::Consider,
162+ State::Consider => self.state = State::Quit,
163+ State::Quit => {}
164+ }
165+ }
166+
167+ fn higher(&mut self) {
168+ match self.state {
169+ State::Run => {}
170+ State::Consider => self.state = State::Run,
171+ State::Quit => self.state = State::Consider,
172+ }
173+ }
174+}
175+
176+
177+fn main() -> io::Result<()> {
178+ ratatui::run(|term| ShowKey::default().run(term))
179+}