Defer windows start to first type.

This commit is contained in:
Brad Nelson
2022-02-11 20:20:37 -08:00
parent 5421f829a6
commit b64e43f701

View File

@ -100,18 +100,27 @@ wargc @ 'argc !
here 'argv ! wargc @ cells allot
'argv @ wargs-convert
AllocConsole drop
STD_INPUT_HANDLE GetStdHandle constant stdin
STD_OUTPUT_HANDLE GetStdHandle constant stdout
STD_ERROR_HANDLE GetStdHandle constant stderr
0 value console-started
0 value stdin
0 value stdout
0 value stderr
variable console-mode
stdin console-mode GetConsoleMode drop
stdin console-mode @ ENABLE_LINE_INPUT ENABLE_MOUSE_INPUT or
ENABLE_WINDOW_INPUT or invert and SetConsoleMode drop
stdout console-mode GetConsoleMode drop
stdout console-mode @ ENABLE_VIRTUAL_TERMINAL_PROCESSING or SetConsoleMode drop
: win-type ( a n -- ) stdout -rot NULL NULL WriteFile drop ;
: init-console
console-started if exit then
-1 to console-started
AllocConsole drop
STD_INPUT_HANDLE GetStdHandle to stdin
STD_OUTPUT_HANDLE GetStdHandle to stdout
STD_ERROR_HANDLE GetStdHandle to stderr
stdin console-mode GetConsoleMode drop
stdin console-mode @ ENABLE_LINE_INPUT ENABLE_MOUSE_INPUT or
ENABLE_WINDOW_INPUT or invert and SetConsoleMode drop
stdout console-mode GetConsoleMode drop
stdout console-mode @ ENABLE_VIRTUAL_TERMINAL_PROCESSING or SetConsoleMode drop
;
: win-type ( a n -- ) init-console stdout -rot NULL NULL WriteFile drop ;
: raw-key ( -- n ) 0 >r stdin rp@ 1 NULL NULL ReadFile drop r> ;
: win-key? ( -- f ) stdin 0 WaitForSingleObject 0= ;
: win-key ( -- n ) raw-key dup 13 = if drop nl then ;