aboutsummaryrefslogtreecommitdiff
path: root/modules/TUI/module.jai
diff options
context:
space:
mode:
Diffstat (limited to 'modules/TUI/module.jai')
-rw-r--r--modules/TUI/module.jai388
1 files changed, 5 insertions, 383 deletions
diff --git a/modules/TUI/module.jai b/modules/TUI/module.jai
index 11b5247..d93e4ff 100644
--- a/modules/TUI/module.jai
+++ b/modules/TUI/module.jai
@@ -1,4 +1,3 @@
-// TODO Move TUI into ./modules/TUI so we can stop calling --import_dir on compile.
#if OS == {
case .LINUX;
#load "unix.jai";
@@ -13,7 +12,7 @@
#import "Basic";
#import "String";
#import "Thread";
-#import "Hash_Table";
+#load "key_map.jai";
// Special Graphics Characters
Drawings :: struct {
@@ -238,387 +237,6 @@ Keys :: struct #type_info_none {
F12 : Key : #run to_key("#f12");
}
-key_map: Table(string, Key);
-
-setup_key_map :: () {
- /*
- This table was created/tested using the following terminals:
- - konsole
- - kitty
- - xterm
- - linux console
-
- To signal modifier keys, a letter is appended after a + (plus sign):
- "#f1" -> F1
- "#f1+$" -> F1+Shift
- "#f1+a" -> F1+Alt
- "#f1+A" -> F1+Shift+Alt
- "#f1+c" -> F1+Ctrl
- "#f1+C" -> F1+Shift+Ctrl
- "#f1+w" -> F1+Alt+Ctrl
- "#f1+W" -> F1+Shift+Alt+Ctrl
- "#f1+s" -> F1+Super
- "#f1+S" -> F1+Shift+Super
- "#f1+x" -> F1+Alt+Super
- "#f1+X" -> F1+Shift+Alt+Super
- "#f1+y" -> F1+Ctrl+Super
- "#f1+Y" -> F1+Shift+Ctrl+Super
- "#f1+z" -> F1+Alt+Ctrl+Super
- "#f1+Z" -> F1+Shift+Alt+Ctrl+Super
- */
-
- // Up
- table_set(*key_map, "\e[A", to_key("#up"));
- table_set(*key_map, "\e[1;1A", to_key("#up+m"));
- table_set(*key_map, "\e[1;2A", to_key("#up+s"));
- table_set(*key_map, "\e[1;3A", to_key("#up+a"));
- table_set(*key_map, "\e[1;4A", to_key("#up+A"));
- table_set(*key_map, "\e[1;5A", to_key("#up+c"));
- table_set(*key_map, "\e[1;6A", to_key("#up+C"));
- table_set(*key_map, "\e[1;7A", to_key("#up+x"));
- table_set(*key_map, "\e[1;8A", to_key("#up+X"));
- // Up - kitty
- table_set(*key_map, "\e[1;9A", to_key("#up+m"));
-
- // Down
- table_set(*key_map, "\e[B", to_key("#down"));
- table_set(*key_map, "\e[1;1B", to_key("#down+m"));
- table_set(*key_map, "\e[1;2B", to_key("#down+s"));
- table_set(*key_map, "\e[1;3B", to_key("#down+a"));
- table_set(*key_map, "\e[1;4B", to_key("#down+A"));
- table_set(*key_map, "\e[1;5B", to_key("#down+c"));
- table_set(*key_map, "\e[1;6B", to_key("#down+C"));
- table_set(*key_map, "\e[1;7B", to_key("#down+x"));
- table_set(*key_map, "\e[1;8B", to_key("#down+X"));
- // Down - kitty
- table_set(*key_map, "\e[1;9B", to_key("#down+m"));
-
- // Right
- table_set(*key_map, "\e[C", to_key("#right"));
- table_set(*key_map, "\e[1;1C", to_key("#right+m"));
- table_set(*key_map, "\e[1;2C", to_key("#right+s"));
- table_set(*key_map, "\e[1;3C", to_key("#right+a"));
- table_set(*key_map, "\e[1;4C", to_key("#right+A"));
- table_set(*key_map, "\e[1;5C", to_key("#right+c"));
- table_set(*key_map, "\e[1;6C", to_key("#right+C"));
- table_set(*key_map, "\e[1;7C", to_key("#right+x"));
- table_set(*key_map, "\e[1;8C", to_key("#right+X"));
- // Right - kitty
- table_set(*key_map, "\e[1;9C", to_key("#right+m"));
-
- // Left
- table_set(*key_map, "\e[D", to_key("#left"));
- table_set(*key_map, "\e[1;1D", to_key("#left+m"));
- table_set(*key_map, "\e[1;2D", to_key("#left+s"));
- table_set(*key_map, "\e[1;3D", to_key("#left+a"));
- table_set(*key_map, "\e[1;4D", to_key("#left+A"));
- table_set(*key_map, "\e[1;5D", to_key("#left+c"));
- table_set(*key_map, "\e[1;6D", to_key("#left+C"));
- table_set(*key_map, "\e[1;7D", to_key("#left+x"));
- table_set(*key_map, "\e[1;8D", to_key("#left+X"));
- // Left - kitty
- table_set(*key_map, "\e[1;9D", to_key("#left+m"));
-
- // Home
- table_set(*key_map, "\e[H", to_key("#home"));
- table_set(*key_map, "\e[1~", to_key("#home"));
- table_set(*key_map, "\e[1;1H", to_key("#home+m"));
- table_set(*key_map, "\e[1;2H", to_key("#home+s"));
- table_set(*key_map, "\e[1;3H", to_key("#home+a"));
- table_set(*key_map, "\e[1;4H", to_key("#home+A"));
- table_set(*key_map, "\e[1;5H", to_key("#home+c"));
- table_set(*key_map, "\e[1;6H", to_key("#home+C"));
- table_set(*key_map, "\e[1;7H", to_key("#home+x"));
- table_set(*key_map, "\e[1;8H", to_key("#home+X"));
- // Home - kitty
- table_set(*key_map, "\e[1;9H", to_key("#home+m"));
-
- // End
- table_set(*key_map, "\e[F", to_key("#end"));
- table_set(*key_map, "\e[4~", to_key("#end"));
- table_set(*key_map, "\e[1;1F", to_key("#end+m"));
- table_set(*key_map, "\e[1;2F", to_key("#end+s"));
- table_set(*key_map, "\e[1;3F", to_key("#end+a"));
- table_set(*key_map, "\e[1;4F", to_key("#end+A"));
- table_set(*key_map, "\e[1;5F", to_key("#end+c"));
- table_set(*key_map, "\e[1;6F", to_key("#end+C"));
- table_set(*key_map, "\e[1;7F", to_key("#end+x"));
- table_set(*key_map, "\e[1;8F", to_key("#end+X"));
- // End - kitty
- table_set(*key_map, "\e[1;9F", to_key("#end+m"));
-
- // Insert
- table_set(*key_map, "\e[2~", to_key("#ins"));
- table_set(*key_map, "\e[2;1~", to_key("#ins+m"));
- table_set(*key_map, "\e[2;2~", to_key("#ins+s"));
- table_set(*key_map, "\e[2;3~", to_key("#ins+a"));
- table_set(*key_map, "\e[2;4~", to_key("#ins+A"));
- table_set(*key_map, "\e[2;5~", to_key("#ins+c"));
- table_set(*key_map, "\e[2;6~", to_key("#ins+C"));
- table_set(*key_map, "\e[2;7~", to_key("#ins+x"));
- table_set(*key_map, "\e[2;8~", to_key("#ins+X"));
- // Insert - kitty
- table_set(*key_map, "\e[2;9~", to_key("#ins+m"));
-
- // Delete
- table_set(*key_map, "\e[3~", to_key("#del"));
- table_set(*key_map, "\e[3;1~", to_key("#del+m"));
- table_set(*key_map, "\e[3;2~", to_key("#del+s"));
- table_set(*key_map, "\e[3;3~", to_key("#del+a"));
- table_set(*key_map, "\e[3;4~", to_key("#del+A"));
- table_set(*key_map, "\e[3;5~", to_key("#del+c"));
- table_set(*key_map, "\e[3;6~", to_key("#del+C"));
- table_set(*key_map, "\e[3;7~", to_key("#del+x"));
- table_set(*key_map, "\e[3;8~", to_key("#del+X"));
- // Delete - kitty
- table_set(*key_map, "\e[3;9~", to_key("#del+m"));
-
- // Page Up
- table_set(*key_map, "\e[5~", to_key("#pup"));
- table_set(*key_map, "\e[5;1~", to_key("#pup+m"));
- table_set(*key_map, "\e[5;2~", to_key("#pup+s"));
- table_set(*key_map, "\e[5;3~", to_key("#pup+a"));
- table_set(*key_map, "\e[5;4~", to_key("#pup+A"));
- table_set(*key_map, "\e[5;5~", to_key("#pup+c"));
- table_set(*key_map, "\e[5;6~", to_key("#pup+C"));
- table_set(*key_map, "\e[5;7~", to_key("#pup+x"));
- table_set(*key_map, "\e[5;8~", to_key("#pup+X"));
- // Page Up - kitty
- table_set(*key_map, "\e[5;9~", to_key("#pup+m"));
-
- // Page Down
- table_set(*key_map, "\e[6~", to_key("#pdown"));
- table_set(*key_map, "\e[6;1~", to_key("#pdown+m"));
- table_set(*key_map, "\e[6;2~", to_key("#pdown+s"));
- table_set(*key_map, "\e[6;3~", to_key("#pdown+a"));
- table_set(*key_map, "\e[6;4~", to_key("#pdown+A"));
- table_set(*key_map, "\e[6;5~", to_key("#pdown+c"));
- table_set(*key_map, "\e[6;6~", to_key("#pdown+C"));
- table_set(*key_map, "\e[6;7~", to_key("#pdown+x"));
- table_set(*key_map, "\e[6;8~", to_key("#pdown+X"));
- // Page Down - kitty
- table_set(*key_map, "\e[6;9~", to_key("#pdown+m"));
-
- // F1
- table_set(*key_map, "\eOP", to_key("#f1"));
- table_set(*key_map, "\eO1P", to_key("#f1+m"));
- table_set(*key_map, "\eO2P", to_key("#f1+s"));
- table_set(*key_map, "\eO3P", to_key("#f1+a"));
- table_set(*key_map, "\eO4P", to_key("#f1+A"));
- table_set(*key_map, "\eO5P", to_key("#f1+c"));
- table_set(*key_map, "\eO6P", to_key("#f1+C"));
- table_set(*key_map, "\eO7P", to_key("#f1+x"));
- table_set(*key_map, "\eO8P", to_key("#f1+X"));
- // F1 - xterm
- table_set(*key_map, "\e[1;2P", to_key("#f1+s"));
- table_set(*key_map, "\e[1;3P", to_key("#f1+a"));
- table_set(*key_map, "\e[1;4P", to_key("#f1+A"));
- table_set(*key_map, "\e[1;5P", to_key("#f1+c"));
- table_set(*key_map, "\e[1;6P", to_key("#f1+C"));
- table_set(*key_map, "\e[1;7P", to_key("#f1+x"));
- table_set(*key_map, "\e[1;8P", to_key("#f1+X"));
- // F1 - kitty
- table_set(*key_map, "\e[1;9P", to_key("#f1+m"));
- // F1 - linux console
- table_set(*key_map, "\e[[A", to_key("#f1"));
- table_set(*key_map, "\e[25~", to_key("#f1+s"));
-
- // F2
- table_set(*key_map, "\eOQ", to_key("#f2"));
- table_set(*key_map, "\eO1Q", to_key("#f2+m"));
- table_set(*key_map, "\eO2Q", to_key("#f2+s"));
- table_set(*key_map, "\eO3Q", to_key("#f2+a"));
- table_set(*key_map, "\eO4Q", to_key("#f2+A"));
- table_set(*key_map, "\eO5Q", to_key("#f2+c"));
- table_set(*key_map, "\eO6Q", to_key("#f2+C"));
- table_set(*key_map, "\eO7Q", to_key("#f2+x"));
- table_set(*key_map, "\eO8Q", to_key("#f2+X"));
- // F2 - xterm
- table_set(*key_map, "\e[1;2Q", to_key("#f2+s"));
- table_set(*key_map, "\e[1;3Q", to_key("#f2+a"));
- table_set(*key_map, "\e[1;4Q", to_key("#f2+A"));
- table_set(*key_map, "\e[1;5Q", to_key("#f2+c"));
- table_set(*key_map, "\e[1;6Q", to_key("#f2+C"));
- table_set(*key_map, "\e[1;7Q", to_key("#f2+x"));
- table_set(*key_map, "\e[1;8Q", to_key("#f2+X"));
- // F2 - kitty
- table_set(*key_map, "\e[1;9Q", to_key("#f2+m"));
- // F2 - linux console
- table_set(*key_map, "\e[[B", to_key("#f2"));
- table_set(*key_map, "\e[26~", to_key("#f2+s"));
-
- // F3
- table_set(*key_map, "\eOR", to_key("#f3"));
- table_set(*key_map, "\eO1R", to_key("#f3+m"));
- table_set(*key_map, "\eO2R", to_key("#f3+s"));
- table_set(*key_map, "\eO3R", to_key("#f3+a"));
- table_set(*key_map, "\eO4R", to_key("#f3+A"));
- table_set(*key_map, "\eO5R", to_key("#f3+c"));
- table_set(*key_map, "\eO6R", to_key("#f3+C"));
- table_set(*key_map, "\eO7R", to_key("#f3+x"));
- table_set(*key_map, "\eO8R", to_key("#f3+X"));
- // F3 - xterm
- table_set(*key_map, "\e[1;2R", to_key("#f3+s"));
- table_set(*key_map, "\e[1;3R", to_key("#f3+a"));
- table_set(*key_map, "\e[1;4R", to_key("#f3+A"));
- table_set(*key_map, "\e[1;5R", to_key("#f3+c"));
- table_set(*key_map, "\e[1;6R", to_key("#f3+C"));
- table_set(*key_map, "\e[1;7R", to_key("#f3+x"));
- table_set(*key_map, "\e[1;8R", to_key("#f3+X"));
- // F3 - kitty
- table_set(*key_map, "\e[1;9R", to_key("#f3+m"));
- // F3 - linux console
- table_set(*key_map, "\e[[C", to_key("#f3"));
- table_set(*key_map, "\e[28~", to_key("#f3+s"));
-
- // F4
- table_set(*key_map, "\eOS", to_key("#f4"));
- table_set(*key_map, "\eO1S", to_key("#f4+m"));
- table_set(*key_map, "\eO2S", to_key("#f4+s"));
- table_set(*key_map, "\eO3S", to_key("#f4+a"));
- table_set(*key_map, "\eO4S", to_key("#f4+A"));
- table_set(*key_map, "\eO5S", to_key("#f4+c"));
- table_set(*key_map, "\eO6S", to_key("#f4+C"));
- table_set(*key_map, "\eO7S", to_key("#f4+x"));
- table_set(*key_map, "\eO8S", to_key("#f4+X"));
- // F4 - xterm
- table_set(*key_map, "\e[1;2S", to_key("#f4+s"));
- table_set(*key_map, "\e[1;3S", to_key("#f4+a"));
- table_set(*key_map, "\e[1;4S", to_key("#f4+A"));
- table_set(*key_map, "\e[1;5S", to_key("#f4+c"));
- table_set(*key_map, "\e[1;6S", to_key("#f4+C"));
- table_set(*key_map, "\e[1;7S", to_key("#f4+x"));
- table_set(*key_map, "\e[1;8S", to_key("#f4+X"));
- // F4 - kitty
- table_set(*key_map, "\e[1;9S", to_key("#f4+m"));
- // F4 - linux console
- table_set(*key_map, "\e[[D", to_key("#f4"));
- table_set(*key_map, "\e[29~", to_key("#f4+s"));
-
- // F5
- table_set(*key_map, "\e[15~", to_key("#f5"));
- table_set(*key_map, "\e[15;1~", to_key("#f5+m"));
- table_set(*key_map, "\e[15;2~", to_key("#f5+s"));
- table_set(*key_map, "\e[15;3~", to_key("#f5+a"));
- table_set(*key_map, "\e[15;4~", to_key("#f5+A"));
- table_set(*key_map, "\e[15;5~", to_key("#f5+c"));
- table_set(*key_map, "\e[15;6~", to_key("#f5+C"));
- table_set(*key_map, "\e[15;7~", to_key("#f5+x"));
- table_set(*key_map, "\e[15;8~", to_key("#f5+X"));
- // F5 - kitty
- table_set(*key_map, "\e[15;9~", to_key("#f5+m"));
- // F5 - linux console
- table_set(*key_map, "\e[[E", to_key("#f5"));
- table_set(*key_map, "\e[31~", to_key("#f5+s"));
-
- // F6
- table_set(*key_map, "\e[17~", to_key("#f6"));
- table_set(*key_map, "\e[17;1~", to_key("#f6+m"));
- table_set(*key_map, "\e[17;2~", to_key("#f6+s"));
- table_set(*key_map, "\e[17;3~", to_key("#f6+a"));
- table_set(*key_map, "\e[17;4~", to_key("#f6+A"));
- table_set(*key_map, "\e[17;5~", to_key("#f6+c"));
- table_set(*key_map, "\e[17;6~", to_key("#f6+C"));
- table_set(*key_map, "\e[17;7~", to_key("#f6+x"));
- table_set(*key_map, "\e[17;8~", to_key("#f6+X"));
- // F6 - kitty
- table_set(*key_map, "\e[17;9~", to_key("#f6+m"));
- // F6 - linux console
- table_set(*key_map, "\e[32~", to_key("#f6+s"));
-
- // F7
- table_set(*key_map, "\e[18~", to_key("#f7"));
-
-TODO FINISH THIS... WIP
-
- // table_set(*key_map, "\e[18;1~", to_key("#f7+m"));
- table_set(*key_map, "\e[18;2~", to_key("#f7+s")); // #f7+^
- table_set(*key_map, "\e[18;3~", to_key("#f7+a")); // #f7+a
- table_set(*key_map, "\e[18;4~", to_key("#f7+A")); // #f7+A
- table_set(*key_map, "\e[18;5~", to_key("#f7+c")); // #f7+s
- table_set(*key_map, "\e[18;6~", to_key("#f7+C"));
- table_set(*key_map, "\e[18;7~", to_key("#f7+x")); // x
- table_set(*key_map, "\e[18;8~", to_key("#f7+X")); // X
- // F7 - kitty
- // table_set(*key_map, "\e[18;9~", to_key("#f7+m")); // m
- // table_set(*key_map, "\e[18;10~",to_key("#f7+M")); // M
- // table_set(*key_map, "\e[18;11~",to_key("#f7+ma")); // ma -> y
- // table_set(*key_map, "\e[18;12~",to_key("#f7+mA")); // MA -> Y
- // table_set(*key_map, "\e[18;13~",to_key("#f7+mc")); // mc -> z
- // table_set(*key_map, "\e[18;14~",to_key("#f7+mC")); // MC -> Z
- // table_set(*key_map, "\e[18;15~",to_key("#f7+mx")); // mac-> w
- // table_set(*key_map, "\e[18;16~",to_key("#f7+mX")); // MAC-> W
- // F7 - linux console
- table_set(*key_map, "\e[33~", to_key("#f7+s"));
-
- // F8
- table_set(*key_map, "\e[19~", to_key("#f8"));
- table_set(*key_map, "\e[19;1~", to_key("#f8+m"));
- table_set(*key_map, "\e[19;2~", to_key("#f8+s"));
- table_set(*key_map, "\e[19;3~", to_key("#f8+a"));
- table_set(*key_map, "\e[19;4~", to_key("#f8+A"));
- table_set(*key_map, "\e[19;5~", to_key("#f8+c"));
- table_set(*key_map, "\e[19;6~", to_key("#f8+C"));
- table_set(*key_map, "\e[19;7~", to_key("#f8+x"));
- table_set(*key_map, "\e[19;8~", to_key("#f8+X"));
- // F8 - kitty
- table_set(*key_map, "\e[19;9~", to_key("#f8+m"));
- // F8 - linux console
- table_set(*key_map, "\e[34~", to_key("#f8+s"));
-
- // F9
- table_set(*key_map, "\e[20~", to_key("#f9"));
- table_set(*key_map, "\e[20;1~", to_key("#f9+m"));
- table_set(*key_map, "\e[20;2~", to_key("#f9+s"));
- table_set(*key_map, "\e[20;3~", to_key("#f9+a"));
- table_set(*key_map, "\e[20;4~", to_key("#f9+A"));
- table_set(*key_map, "\e[20;5~", to_key("#f9+c"));
- table_set(*key_map, "\e[20;6~", to_key("#f9+C"));
- table_set(*key_map, "\e[20;7~", to_key("#f9+x"));
- table_set(*key_map, "\e[20;8~", to_key("#f9+X"));
- // F9 - kitty
- table_set(*key_map, "\e[20;9~", to_key("#f9+m"));
-
- // F10
- table_set(*key_map, "\e[21~", to_key("#f10"));
- table_set(*key_map, "\e[21;1~", to_key("#f10+m"));
- table_set(*key_map, "\e[21;2~", to_key("#f10+s"));
- table_set(*key_map, "\e[21;3~", to_key("#f10+a"));
- table_set(*key_map, "\e[21;4~", to_key("#f10+A"));
- table_set(*key_map, "\e[21;5~", to_key("#f10+c"));
- table_set(*key_map, "\e[21;6~", to_key("#f10+C"));
- table_set(*key_map, "\e[21;7~", to_key("#f10+x"));
- table_set(*key_map, "\e[21;8~", to_key("#f10+X"));
- // F10 - kitty
- table_set(*key_map, "\e[21;9~", to_key("#f10+m"));
-
- // F11
- table_set(*key_map, "\e[23~", to_key("#f11"));
- table_set(*key_map, "\e[23;1~", to_key("#f11+m"));
- table_set(*key_map, "\e[23;2~", to_key("#f11+s"));
- table_set(*key_map, "\e[23;3~", to_key("#f11+a"));
- table_set(*key_map, "\e[23;4~", to_key("#f11+A"));
- table_set(*key_map, "\e[23;5~", to_key("#f11+c"));
- table_set(*key_map, "\e[23;6~", to_key("#f11+C"));
- table_set(*key_map, "\e[23;7~", to_key("#f11+x"));
- table_set(*key_map, "\e[23;8~", to_key("#f11+X"));
- // F11 - kitty
- table_set(*key_map, "\e[23;9~", to_key("#f11+m"));
-
- // F12
- table_set(*key_map, "\e[24~", to_key("#f12"));
- table_set(*key_map, "\e[24;1~", to_key("#f12+m"));
- table_set(*key_map, "\e[24;2~", to_key("#f12+s"));
- table_set(*key_map, "\e[24;3~", to_key("#f12+a"));
- table_set(*key_map, "\e[24;4~", to_key("#f12+A"));
- table_set(*key_map, "\e[24;5~", to_key("#f12+c"));
- table_set(*key_map, "\e[24;6~", to_key("#f12+C"));
- table_set(*key_map, "\e[24;7~", to_key("#f12+x"));
- table_set(*key_map, "\e[24;8~", to_key("#f12+X"));
- // F12 - kitty
- table_set(*key_map, "\e[24;9~", to_key("#f12+m"));
-}
-
initialized := false;
//input_buffer : [64] u8; // TODO FIXME Input buffer is too small!!!
@@ -728,6 +346,10 @@ get_key :: (timeout_milliseconds: s32 = -1) -> Key {
advance(*input_string, to_parse.count);
return key;
}
+ TODO If failed to parse... lets return a single char... but it's not working!
+ else {
+ to_parse.count = 1;
+ }
}
advance(*input_string, to_parse.count);