virtualkeyboard: update keymap when it changed

load current keymap on start

Change-Id: I1030cf5aaf9641f7e915f8fc10dec3144cab014f
Reviewed-on: https://review.haiku-os.org/c/haiku/+/8904
Reviewed-by: waddlesplash <[email protected]>
This commit is contained in:
Jérôme Duval
2025-02-03 21:27:47 +00:00
parent 6670202514
commit aedcf2476d
3 changed files with 10 additions and 3 deletions
@@ -59,5 +59,7 @@ status_t
VirtualKeyboardInputDevice::Control(const char* name, void* cookie, uint32 command, VirtualKeyboardInputDevice::Control(const char* name, void* cookie, uint32 command,
BMessage* message) BMessage* message)
{ {
if (command == B_KEY_MAP_CHANGED)
fKeyboardWindow->PostMessage(kKeymapChange);
return B_OK; return B_OK;
} }
@@ -51,9 +51,7 @@ VirtualKeyboardWindow::VirtualKeyboardWindow(BInputServerDevice* dev)
_LoadLayouts(fLayoutMenu); _LoadLayouts(fLayoutMenu);
_LoadFonts(); _LoadFonts();
KeymapListItem* current = static_cast<KeymapListItem*>(fMapListView->LastItem()); fCurrentKeymap.SetToCurrent();
fCurrentKeymap.Load(current->EntryRef());
fKeyboardView = new KeyboardLayoutView("Keyboard", fDevice); fKeyboardView = new KeyboardLayoutView("Keyboard", fDevice);
fKeyboardView->GetKeyboardLayout()->SetDefault(); fKeyboardView->GetKeyboardLayout()->SetDefault();
@@ -155,6 +153,10 @@ VirtualKeyboardWindow::_LoadFonts()
void void
VirtualKeyboardWindow::MessageReceived(BMessage* message) VirtualKeyboardWindow::MessageReceived(BMessage* message)
{ {
if (message->what == kKeymapChange) {
fCurrentKeymap.SetToCurrent();
fKeyboardView->SetKeymap(&fCurrentKeymap);
}
BWindow::MessageReceived(message); BWindow::MessageReceived(message);
} }
@@ -16,6 +16,9 @@ class BDirectory;
class BListView; class BListView;
class BMenu; class BMenu;
static const uint32 kKeymapChange = 'vKCG';
class VirtualKeyboardWindow : public BWindow { class VirtualKeyboardWindow : public BWindow {
public: public:
VirtualKeyboardWindow(BInputServerDevice* dev); VirtualKeyboardWindow(BInputServerDevice* dev);