From 6f326ad1ef5e72aadd418f6b144131862eca0621 Mon Sep 17 00:00:00 2001 From: akallabeth Date: Tue, 25 Mar 2025 10:55:16 +0100 Subject: [PATCH 1/2] [clinet,sdl] send local layout to server --- client/SDL/SDL3/sdl_freerdp.cpp | 3 +++ client/SDL/SDL3/sdl_kbd.cpp | 36 ++++++++++++++++++++++++++------- client/SDL/SDL3/sdl_kbd.hpp | 2 ++ 3 files changed, 34 insertions(+), 7 deletions(-) diff --git a/client/SDL/SDL3/sdl_freerdp.cpp b/client/SDL/SDL3/sdl_freerdp.cpp index 1c6e8365d..8443eeba1 100644 --- a/client/SDL/SDL3/sdl_freerdp.cpp +++ b/client/SDL/SDL3/sdl_freerdp.cpp @@ -644,6 +644,9 @@ static BOOL sdl_pre_connect(freerdp* instance) WLog_Print(sdl->log, WLOG_INFO, "Authentication only. Don't connect SDL."); } + if (!sdl->input.initialize()) + return FALSE; + /* TODO: Any code your client requires */ return TRUE; } diff --git a/client/SDL/SDL3/sdl_kbd.cpp b/client/SDL/SDL3/sdl_kbd.cpp index 8a756731a..39360d351 100644 --- a/client/SDL/SDL3/sdl_kbd.cpp +++ b/client/SDL/SDL3/sdl_kbd.cpp @@ -30,6 +30,8 @@ #include #include +#include +#include #include @@ -590,13 +592,6 @@ BOOL sdlInput::keyboard_handle_event(const SDL_KeyboardEvent* ev) } } - if (!_remapTable) - { - auto list = - freerdp_settings_get_string(_sdl->context()->settings, FreeRDP_KeyboardRemappingList); - _remapTable = freerdp_keyboard_remap_string_to_list(list); - assert(_remapTable); - } auto scancode = freerdp_keyboard_remap_key(_remapTable, rdp_scancode); return freerdp_input_send_keyboard_event_ex( _sdl->context()->input, ev->type == SDL_EVENT_KEY_DOWN, ev->repeat, scancode); @@ -652,3 +647,30 @@ sdlInput::~sdlInput() { freerdp_keyboard_remap_free(_remapTable); } + +BOOL sdlInput::initialize() +{ + auto settings = _sdl->context()->settings; + WINPR_ASSERT(settings); + WINPR_ASSERT(!_remapTable); + + { + auto list = freerdp_settings_get_string(settings, FreeRDP_KeyboardRemappingList); + _remapTable = freerdp_keyboard_remap_string_to_list(list); + if (!_remapTable) + return FALSE; + } + + if (freerdp_settings_get_uint32(settings, FreeRDP_KeyboardLayout) == 0) + { + uint32_t KeyboardLayout = 0; + + freerdp_detect_keyboard_layout_from_system_locale(&KeyboardLayout); + if (KeyboardLayout == 0) + KeyboardLayout = ENGLISH_UNITED_STATES; + + if (!freerdp_settings_set_uint32(settings, FreeRDP_KeyboardLayout, KeyboardLayout)) + return FALSE; + } + return TRUE; +} diff --git a/client/SDL/SDL3/sdl_kbd.hpp b/client/SDL/SDL3/sdl_kbd.hpp index 66e334535..d767462b8 100644 --- a/client/SDL/SDL3/sdl_kbd.hpp +++ b/client/SDL/SDL3/sdl_kbd.hpp @@ -42,6 +42,8 @@ class sdlInput sdlInput& operator=(const sdlInput& other) = delete; sdlInput& operator=(sdlInput&& other) = delete; + BOOL initialize(); + BOOL keyboard_sync_state(); BOOL keyboard_focus_in(); From 85d11c48740ede31077576bec1c1b9ceea0a3b22 Mon Sep 17 00:00:00 2001 From: akallabeth Date: Tue, 25 Mar 2025 10:30:15 +0100 Subject: [PATCH 2/2] [ci,abi] split out deb package move --- .github/workflows/abi-checker.yml | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/.github/workflows/abi-checker.yml b/.github/workflows/abi-checker.yml index 43ac4e98d..0b77d613b 100644 --- a/.github/workflows/abi-checker.yml +++ b/.github/workflows/abi-checker.yml @@ -48,9 +48,12 @@ jobs: apt source libabigail cd libabigail-2.6 dpkg-buildpackage - cd .. - mkdir -p deb - mv *.deb deb/ + + - name: "Prepare abigail-tools debs" + if: always() && steps.cache-abigail-tools-restore.outputs.cache-hit != 'true' + run: | + mkdir deb + find . -name "*.deb" -print -exec mv {} deb \; - name: Save abigail tools id: cache-abigail-tools-save @@ -62,14 +65,15 @@ jobs: deb - name: "Install abigail-tools" + continue-on-error: true run: | cd deb - ls sudo dpkg -i *.deb - name: "Prepare environment" run: | sudo apt-get update -q -y + sudo apt-get --fix-broken install -q -y sudo apt-get install -q -y devscripts equivs \ clang \ pylint \