From dbf6aa568b5236dfa032891867969431bf217a97 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Duval?= Date: Tue, 31 Aug 2004 22:06:54 +0000 Subject: [PATCH] integration of the system keymap, loaded when settings one loading fails git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8752 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/servers/input/InputServer.cpp | 23 +++++++++++++++++++++-- src/servers/input/InputServer.h | 1 + src/servers/input/Jamfile | 8 ++++---- 3 files changed, 26 insertions(+), 6 deletions(-) diff --git a/src/servers/input/InputServer.cpp b/src/servers/input/InputServer.cpp index 3d2f212b01..97b5d1d200 100644 --- a/src/servers/input/InputServer.cpp +++ b/src/servers/input/InputServer.cpp @@ -164,10 +164,13 @@ InputServer::InitKeyboardMouseStates(void) sMousePos.x = 200; sMousePos.y = 200; - LoadKeymap(); + if (LoadKeymap()!=B_OK) + LoadSystemKeymap(); } +#include "SystemKeymap.cpp" + status_t InputServer::LoadKeymap() { @@ -208,6 +211,21 @@ InputServer::LoadKeymap() return B_OK; } + +status_t +InputServer::LoadSystemKeymap() +{ + if (!fChars) + delete[] fChars; + fKeys = sSystemKeymap; + fCharsSize = sSystemKeyCharsSize; + fChars = new char[fCharsSize]; + memcpy(fChars, sSystemKeyChars, fCharsSize); + + // TODO : save this keymap to file +} + + /* * Method: InputServer::QuitRequested() * Descr: @@ -654,7 +672,8 @@ InputServer::HandleGetSetKeyMap(BMessage *message, if (status == B_OK) status = reply->AddData("key_buffer", B_ANY_TYPE, fChars, fCharsSize); } else { - LoadKeymap(); + if (LoadKeymap()!=B_OK) + LoadSystemKeymap(); status = ControlDevices(NULL, B_KEYBOARD_DEVICE, B_KEY_MAP_CHANGED, NULL); } diff --git a/src/servers/input/InputServer.h b/src/servers/input/InputServer.h index 3192bd62bc..e9ec01d823 100644 --- a/src/servers/input/InputServer.h +++ b/src/servers/input/InputServer.h @@ -183,6 +183,7 @@ public: private: status_t LoadKeymap(); + status_t LoadSystemKeymap(); bool sEventLoopRunning; bool sSafeMode; diff --git a/src/servers/input/Jamfile b/src/servers/input/Jamfile index 36a96b2220..c0c2bf589e 100644 --- a/src/servers/input/Jamfile +++ b/src/servers/input/Jamfile @@ -1,5 +1,9 @@ SubDir OBOS_TOP src servers input ; +if $(COMPILE_FOR_R5) { + SubDirC++Flags -DCOMPILE_FOR_R5 ; +} + rule MkKeymapHeader { local binary = $(1) ; @@ -25,10 +29,6 @@ MkKeymapHeader [ FGristFiles SystemKeymap.cpp ] : US-International.keymap ; SEARCH on US-International.keymap += [ FDirName $(SUBDIR) $(DOTDOT) $(DOTDOT) apps bin keymap ] ; -if $(COMPILE_FOR_R5) { - SubDirC++Flags -DCOMPILE_FOR_R5 ; -} - AddResources input_server : input_server.rdef ; UsePrivateHeaders app ;