diff options
| author | dam <dam@gudinoff> | 2023-08-17 20:28:47 +0100 |
|---|---|---|
| committer | dam <dam@gudinoff> | 2023-08-17 20:28:47 +0100 |
| commit | 709879ee56d31fe543a0ad882713bd4e3d17d2d2 (patch) | |
| tree | 12a35282bdd0f1f8a2159ade147944c89254db24 /kscurses/io.jai | |
| parent | fa1b8ea54646f1a0f3eadef33e3a660b875cc1ff (diff) | |
| download | task-time-tracker-709879ee56d31fe543a0ad882713bd4e3d17d2d2.tar.zst task-time-tracker-709879ee56d31fe543a0ad882713bd4e3d17d2d2.zip | |
Added kscurses and testing program.
Diffstat (limited to 'kscurses/io.jai')
| -rw-r--r-- | kscurses/io.jai | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/kscurses/io.jai b/kscurses/io.jai new file mode 100644 index 0000000..b2c2df9 --- /dev/null +++ b/kscurses/io.jai @@ -0,0 +1,81 @@ +Key :: enum u64 { + READ_ERROR :: 0xffffffff_ffffffff; + + UP :: 0x41_5b1b; + DOWN :: 0x42_5b1b; + RIGHT :: 0x43_5b1b; + LEFT :: 0x44_5b1b; + + CTRL_UP :: 0x4135_3b315b1b; + CTRL_DOWN :: 0x4235_3b315b1b; + CTRL_RIGHT :: 0x4335_3b315b1b; + CTRL_LEFT :: 0x4435_3b315b1b; + + SHIFT_UP :: 0x4132_3b315b1b; + SHIFT_DOWN :: 0x4232_3b315b1b; + SHIFT_RIGHT :: 0x4332_3b315b1b; + SHIFT_LEFT :: 0x4432_3b315b1b; + + CTRL_SHIFT_UP :: 0x4136_3b315b1b; + CTRL_SHIFT_DOWN :: 0x4236_3b315b1b; + CTRL_SHIFT_RIGHT:: 0x4336_3b315b1b; + CTRL_SHIFT_LEFT :: 0x4436_3b315b1b; + + ALT_UP :: 0x4133_3b315b1b; + ALT_DOWN :: 0x4233_3b315b1b; + ALT_RIGHT :: 0x4333_3b315b1b; + ALT_LEFT :: 0x4433_3b315b1b; + + CTRL_C :: 0x03; + CTRL_V :: 0x16; + CTRL_X :: 0x18; + CTRL_Y :: 0x19; + CTRL_Z :: 0x1A; + CTRL_BACKSLASH :: 0x1C; + + // ALT_SHIFT_UP :: 0x4133_3b315b1b; + // ALT_SHIFT_DOWN :: 0x4233_3b315b1b; + // ALT_SHIFT_RIGHT :: 0x4333_3b315b1b; + // ALT_SHIFT_LEFT :: 0x4433_3b315b1b; + + ENTER :: 0x0D; + ESCAPE :: 0x1B; + BACKSPACE :: 0x7F; + DELETE :: 0x7E335B1B; +} +ks_getch :: (block := true) -> Key { + #if OS == .LINUX { + buf : Key = xx 0; + l := read(STDIN_FILENO, (cast(*u8)*buf), 8); //!!! + check_signal :: inline (key : Key) { + #if ENABLE_SIGINT if key == .CTRL_C raise(SIGINT); //!!! + #if ENABLE_SIGQUIT if key == .CTRL_BACKSLASH raise(SIGQUIT); + } + check_signal(buf); + return ifx l <= 0 then Key.READ_ERROR else buf; + } else { + return .READ_ERROR; + } +} +ks_write :: (str : string) { + #if OS == .LINUX { + printed := 0; + // while 1 { + r := write(STDIN_FILENO, str.data + printed, xx (str.count - printed)); + // if printed + r == str.count { + // break; + // } else if r >= 0 { + // printed += r; + // } + // } + } else { + + } + __write_counter += str.count; +} +__write_counter := 0; +write_counter_delta :: () -> int { + result := __write_counter; + __write_counter = 0; + return result; +}
\ No newline at end of file |
