From d57634f732be41fbe05490df36e2c7510c260d0d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Duval?= Date: Mon, 16 Jul 2007 18:40:32 +0000 Subject: [PATCH] the keymap is now saved when key locks or key modifiers are changed this fixes bug #1282 git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21625 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- headers/private/input/InputServerTypes.h | 1 + src/servers/input/InputServer.cpp | 15 +++++++++++++++ src/servers/input/InputServer.h | 1 + 3 files changed, 17 insertions(+) diff --git a/headers/private/input/InputServerTypes.h b/headers/private/input/InputServerTypes.h index d7f69716e2..7ccec544d4 100644 --- a/headers/private/input/InputServerTypes.h +++ b/headers/private/input/InputServerTypes.h @@ -40,6 +40,7 @@ #define SYSTEM_SHUTTING_DOWN 'SSDn' #define IS_SAVE_SETTINGS 'Isst' +#define IS_SAVE_KEYMAP 'Iskp' // app_server communication #define IS_ACQUIRE_INPUT 'Iaqi' diff --git a/src/servers/input/InputServer.cpp b/src/servers/input/InputServer.cpp index 9d7257f58f..2629c71ea6 100644 --- a/src/servers/input/InputServer.cpp +++ b/src/servers/input/InputServer.cpp @@ -322,6 +322,13 @@ InputServer::_LoadSystemKeymap() memcpy(fChars, kSystemKeyChars, fCharsSize); // TODO: why are we doing this? + return _SaveKeymap(); +} + + +status_t +InputServer::_SaveKeymap() +{ // we save this keymap to file BPath path; if (find_directory(B_USER_SETTINGS_DIRECTORY, &path) != B_OK) @@ -585,6 +592,10 @@ InputServer::MessageReceived(BMessage* message) fMouseSettings.SaveSettings(); return; + case IS_SAVE_KEYMAP: + _SaveKeymap(); + return; + case B_SOME_APP_LAUNCHED: { const char *signature; @@ -738,6 +749,8 @@ InputServer::HandleSetModifierKey(BMessage* message, BMessage* reply) // TODO: unmap the key ? + be_app_messenger.SendMessage(IS_SAVE_KEYMAP); + BMessage msg(IS_CONTROL_DEVICES); msg.AddInt32("type", B_KEYBOARD_DEVICE); msg.AddInt32("code", B_KEY_MAP_CHANGED); @@ -752,6 +765,8 @@ status_t InputServer::HandleSetKeyboardLocks(BMessage* message, BMessage* reply) { if (message->FindInt32("locks", (int32*)&fKeys.lock_settings) == B_OK) { + be_app_messenger.SendMessage(IS_SAVE_KEYMAP); + BMessage msg(IS_CONTROL_DEVICES); msg.AddInt32("type", B_KEYBOARD_DEVICE); msg.AddInt32("code", B_KEY_LOCKS_CHANGED); diff --git a/src/servers/input/InputServer.h b/src/servers/input/InputServer.h index d1653f9eca..e5273322dd 100644 --- a/src/servers/input/InputServer.h +++ b/src/servers/input/InputServer.h @@ -171,6 +171,7 @@ class InputServer : public BApplication { status_t _LoadKeymap(); status_t _LoadSystemKeymap(); + status_t _SaveKeymap(); void _InitKeyboardMouseStates(); status_t _StartEventLoop();