diff --git a/src/add-ons/input_server/devices/virtualkeyboard/VirtualKeyboardInputDevice.cpp b/src/add-ons/input_server/devices/virtualkeyboard/VirtualKeyboardInputDevice.cpp index 0d82a1a30f..004796aae7 100644 --- a/src/add-ons/input_server/devices/virtualkeyboard/VirtualKeyboardInputDevice.cpp +++ b/src/add-ons/input_server/devices/virtualkeyboard/VirtualKeyboardInputDevice.cpp @@ -59,5 +59,7 @@ status_t VirtualKeyboardInputDevice::Control(const char* name, void* cookie, uint32 command, BMessage* message) { + if (command == B_KEY_MAP_CHANGED) + fKeyboardWindow->PostMessage(kKeymapChange); return B_OK; } diff --git a/src/add-ons/input_server/devices/virtualkeyboard/VirtualKeyboardWindow.cpp b/src/add-ons/input_server/devices/virtualkeyboard/VirtualKeyboardWindow.cpp index 7f23e007dd..21fc82c462 100644 --- a/src/add-ons/input_server/devices/virtualkeyboard/VirtualKeyboardWindow.cpp +++ b/src/add-ons/input_server/devices/virtualkeyboard/VirtualKeyboardWindow.cpp @@ -51,9 +51,7 @@ VirtualKeyboardWindow::VirtualKeyboardWindow(BInputServerDevice* dev) _LoadLayouts(fLayoutMenu); _LoadFonts(); - KeymapListItem* current = static_cast(fMapListView->LastItem()); - fCurrentKeymap.Load(current->EntryRef()); - + fCurrentKeymap.SetToCurrent(); fKeyboardView = new KeyboardLayoutView("Keyboard", fDevice); fKeyboardView->GetKeyboardLayout()->SetDefault(); @@ -155,6 +153,10 @@ VirtualKeyboardWindow::_LoadFonts() void VirtualKeyboardWindow::MessageReceived(BMessage* message) { + if (message->what == kKeymapChange) { + fCurrentKeymap.SetToCurrent(); + fKeyboardView->SetKeymap(&fCurrentKeymap); + } BWindow::MessageReceived(message); } diff --git a/src/add-ons/input_server/devices/virtualkeyboard/VirtualKeyboardWindow.h b/src/add-ons/input_server/devices/virtualkeyboard/VirtualKeyboardWindow.h index 44850c2116..2474a993ff 100644 --- a/src/add-ons/input_server/devices/virtualkeyboard/VirtualKeyboardWindow.h +++ b/src/add-ons/input_server/devices/virtualkeyboard/VirtualKeyboardWindow.h @@ -16,6 +16,9 @@ class BDirectory; class BListView; class BMenu; +static const uint32 kKeymapChange = 'vKCG'; + + class VirtualKeyboardWindow : public BWindow { public: VirtualKeyboardWindow(BInputServerDevice* dev);