1b44c25deSAxel Dörfler /* 2b44c25deSAxel Dörfler * Copyright 2004-2010, Haiku, Inc. All Rights Reserved. 3b44c25deSAxel Dörfler * Distributed under the terms of the MIT License. 4b44c25deSAxel Dörfler * 5b44c25deSAxel Dörfler * Authors: 6b44c25deSAxel Dörfler * Jérôme Duval 7b44c25deSAxel Dörfler * Axel Dörfler, axeld@pinc-software.de. 8b44c25deSAxel Dörfler */ 9b44c25deSAxel Dörfler #ifndef _KEYMAP_H 10b44c25deSAxel Dörfler #define _KEYMAP_H 11b44c25deSAxel Dörfler 12b44c25deSAxel Dörfler 13b44c25deSAxel Dörfler #include <DataIO.h> 14b44c25deSAxel Dörfler #include <InterfaceDefs.h> 15*bd336e3aSJohn Scipione #include <ObjectList.h> 16b44c25deSAxel Dörfler 17b44c25deSAxel Dörfler 18b44c25deSAxel Dörfler class BKeymap { 19b44c25deSAxel Dörfler public: 20b44c25deSAxel Dörfler BKeymap(); 21b44c25deSAxel Dörfler virtual ~BKeymap(); 22b44c25deSAxel Dörfler 23b44c25deSAxel Dörfler status_t SetTo(const char* path); 24b44c25deSAxel Dörfler status_t SetTo(BDataIO& stream); 25b44c25deSAxel Dörfler status_t SetToCurrent(); 26b44c25deSAxel Dörfler status_t SetToDefault(); 27b44c25deSAxel Dörfler void Unset(); 28b44c25deSAxel Dörfler 29b44c25deSAxel Dörfler bool IsModifierKey(uint32 keyCode) const; 30b44c25deSAxel Dörfler uint32 Modifier(uint32 keyCode) const; 31b44c25deSAxel Dörfler uint32 KeyForModifier(uint32 modifier) const; 32b19e758bSAxel Dörfler uint8 ActiveDeadKey(uint32 keyCode, 33b19e758bSAxel Dörfler uint32 modifiers) const; 34b19e758bSAxel Dörfler uint8 DeadKey(uint32 keyCode, uint32 modifiers, 35b44c25deSAxel Dörfler bool* isEnabled = NULL) const; 36b44c25deSAxel Dörfler bool IsDeadSecondKey(uint32 keyCode, 37b44c25deSAxel Dörfler uint32 modifiers, 38b44c25deSAxel Dörfler uint8 activeDeadKey) const; 39b44c25deSAxel Dörfler void GetChars(uint32 keyCode, uint32 modifiers, 40b44c25deSAxel Dörfler uint8 activeDeadKey, char** chars, 41b44c25deSAxel Dörfler int32* numBytes) const; 42*bd336e3aSJohn Scipione status_t GetModifiedCharacters(const char* in, 43*bd336e3aSJohn Scipione int32 inModifiers, int32 outModifiers, 44*bd336e3aSJohn Scipione BObjectList<const char>* _outList); 45b44c25deSAxel Dörfler Map()46b44c25deSAxel Dörfler const key_map& Map() const { return fKeys; } 47b44c25deSAxel Dörfler 48b44c25deSAxel Dörfler bool operator==(const BKeymap& other) const; 49b44c25deSAxel Dörfler bool operator!=(const BKeymap& other) const; 50b44c25deSAxel Dörfler 51b44c25deSAxel Dörfler BKeymap& operator=(const BKeymap& other); 52b44c25deSAxel Dörfler 53b44c25deSAxel Dörfler protected: 54b44c25deSAxel Dörfler int32 Offset(uint32 keyCode, uint32 modifiers, 55b44c25deSAxel Dörfler uint32* _table = NULL) const; 56b44c25deSAxel Dörfler uint8 DeadKeyIndex(int32 offset) const; 57b44c25deSAxel Dörfler 58b44c25deSAxel Dörfler protected: 59b44c25deSAxel Dörfler char* fChars; 60b44c25deSAxel Dörfler key_map fKeys; 61b44c25deSAxel Dörfler uint32 fCharsSize; 62b44c25deSAxel Dörfler }; 63b44c25deSAxel Dörfler 64b44c25deSAxel Dörfler 65b44c25deSAxel Dörfler #endif // KEYMAP_H 66