From 8e7d46e717cc189681608adceeec84bb483b8f70 Mon Sep 17 00:00:00 2001 From: StapleButter Date: Sun, 17 Sep 2017 23:25:32 +0200 Subject: * attempt at keyboard input, via raw scancodes * load config, etc * some things are nicer, too --- src/libui_sdl/libui/windows/areaevents.cpp | 14 ++++++++++++++ src/libui_sdl/libui/windows/box.cpp | 1 + src/libui_sdl/libui/windows/form.cpp | 1 + src/libui_sdl/libui/windows/grid.cpp | 1 + src/libui_sdl/libui/windows/group.cpp | 1 + src/libui_sdl/libui/windows/tab.cpp | 1 + src/libui_sdl/libui/windows/window.cpp | 1 + 7 files changed, 20 insertions(+) (limited to 'src/libui_sdl/libui/windows') diff --git a/src/libui_sdl/libui/windows/areaevents.cpp b/src/libui_sdl/libui/windows/areaevents.cpp index 7d391b8..842f2d7 100644 --- a/src/libui_sdl/libui/windows/areaevents.cpp +++ b/src/libui_sdl/libui/windows/areaevents.cpp @@ -262,8 +262,14 @@ static int areaKeyEvent(uiArea *a, int up, WPARAM wParam, LPARAM lParam) ke.Modifiers = getModifiers(); + ke.Scancode = (lParam >> 16) & 0x1FF; + ke.Up = up; + ke.Repeat = (lParam & 0x40000000) ? 1:0; + // StapleButter note: I don't actually need all this key decoding + // raw scancodes are all I need for this +#if 0 // the numeric keypad keys when Num Lock is off are considered left-hand keys as the separate navigation buttons were added later // the numeric keypad Enter, however, is a right-hand key because it has the same virtual-key code as the typewriter Enter righthand = (lParam & 0x01000000) != 0; @@ -306,9 +312,17 @@ static int areaKeyEvent(uiArea *a, int up, WPARAM wParam, LPARAM lParam) return 0; keyFound: +#endif return (*(a->ah->KeyEvent))(a->ah, a, &ke); } +char* uiKeyName(int scancode) +{ + WCHAR tmp[64]; + GetKeyNameText(scancode<<16, tmp, 64); + return toUTF8(tmp); +} + // We don't handle the standard Windows keyboard messages directly, to avoid both the dialog manager and TranslateMessage(). // Instead, we set up a message filter and do things there. // That stuff is later in this file. diff --git a/src/libui_sdl/libui/windows/box.cpp b/src/libui_sdl/libui/windows/box.cpp index 9567954..c306989 100644 --- a/src/libui_sdl/libui/windows/box.cpp +++ b/src/libui_sdl/libui/windows/box.cpp @@ -143,6 +143,7 @@ uiWindowsControlDefaultHide(uiBox) uiWindowsControlDefaultEnabled(uiBox) uiWindowsControlDefaultEnable(uiBox) uiWindowsControlDefaultDisable(uiBox) +uiWindowsControlDefaultSetFocus(uiBox) static void uiBoxSyncEnableState(uiWindowsControl *c, int enabled) { diff --git a/src/libui_sdl/libui/windows/form.cpp b/src/libui_sdl/libui/windows/form.cpp index febcc69..83ed587 100644 --- a/src/libui_sdl/libui/windows/form.cpp +++ b/src/libui_sdl/libui/windows/form.cpp @@ -147,6 +147,7 @@ uiWindowsControlDefaultHide(uiForm) uiWindowsControlDefaultEnabled(uiForm) uiWindowsControlDefaultEnable(uiForm) uiWindowsControlDefaultDisable(uiForm) +uiWindowsControlDefaultSetFocus(uiForm) static void uiFormSyncEnableState(uiWindowsControl *c, int enabled) { diff --git a/src/libui_sdl/libui/windows/grid.cpp b/src/libui_sdl/libui/windows/grid.cpp index c63cd1e..78719ac 100644 --- a/src/libui_sdl/libui/windows/grid.cpp +++ b/src/libui_sdl/libui/windows/grid.cpp @@ -436,6 +436,7 @@ uiWindowsControlDefaultHide(uiGrid) uiWindowsControlDefaultEnabled(uiGrid) uiWindowsControlDefaultEnable(uiGrid) uiWindowsControlDefaultDisable(uiGrid) +uiWindowsControlDefaultSetFocus(uiGrid) static void uiGridSyncEnableState(uiWindowsControl *c, int enabled) { diff --git a/src/libui_sdl/libui/windows/group.cpp b/src/libui_sdl/libui/windows/group.cpp index 8824c5a..f78e7de 100644 --- a/src/libui_sdl/libui/windows/group.cpp +++ b/src/libui_sdl/libui/windows/group.cpp @@ -75,6 +75,7 @@ uiWindowsControlDefaultHide(uiGroup) uiWindowsControlDefaultEnabled(uiGroup) uiWindowsControlDefaultEnable(uiGroup) uiWindowsControlDefaultDisable(uiGroup) +uiWindowsControlDefaultSetFocus(uiGroup) static void uiGroupSyncEnableState(uiWindowsControl *c, int enabled) { diff --git a/src/libui_sdl/libui/windows/tab.cpp b/src/libui_sdl/libui/windows/tab.cpp index 365f5a1..ea6209b 100644 --- a/src/libui_sdl/libui/windows/tab.cpp +++ b/src/libui_sdl/libui/windows/tab.cpp @@ -112,6 +112,7 @@ uiWindowsControlDefaultHide(uiTab) uiWindowsControlDefaultEnabled(uiTab) uiWindowsControlDefaultEnable(uiTab) uiWindowsControlDefaultDisable(uiTab) +uiWindowsControlDefaultSetFocus(uiTab) static void uiTabSyncEnableState(uiWindowsControl *c, int enabled) { diff --git a/src/libui_sdl/libui/windows/window.cpp b/src/libui_sdl/libui/windows/window.cpp index 9cf13a2..c04410d 100644 --- a/src/libui_sdl/libui/windows/window.cpp +++ b/src/libui_sdl/libui/windows/window.cpp @@ -229,6 +229,7 @@ static void uiWindowHide(uiControl *c) uiWindowsControlDefaultEnabled(uiWindow) uiWindowsControlDefaultEnable(uiWindow) uiWindowsControlDefaultDisable(uiWindow) +uiWindowsControlDefaultSetFocus(uiWindow) // TODO we need to do something about undocumented fields in the OS control types uiWindowsControlDefaultSyncEnableState(uiWindow) // TODO -- cgit v1.2.3