enableRawMode method
Enables raw mode which allows us to process each keypress as it comes in. https://viewsourcecode.org/snaptoken/kilo/02.enteringRawMode.html
Implementation
@override
void enableRawMode() {
final pInMode = calloc<Uint32>();
final pOutMode = calloc<Uint32>();
try {
if (GetConsoleMode(inputHandle, pInMode).value) {
_origInputMode ??= pInMode.value;
final dwInMode =
(pInMode.value &
~(ENABLE_ECHO_INPUT |
ENABLE_PROCESSED_INPUT |
ENABLE_LINE_INPUT |
ENABLE_WINDOW_INPUT)) |
ENABLE_VIRTUAL_TERMINAL_INPUT;
SetConsoleMode(inputHandle, CONSOLE_MODE(dwInMode));
}
if (GetConsoleMode(outputHandle, pOutMode).value) {
_origOutputMode ??= pOutMode.value;
final dwOutMode = pOutMode.value | ENABLE_VIRTUAL_TERMINAL_PROCESSING;
SetConsoleMode(outputHandle, CONSOLE_MODE(dwOutMode));
}
} finally {
calloc.free(pInMode);
calloc.free(pOutMode);
}
}