diff options
Diffstat (limited to 'tools/ioemu/gui/keymap.h')
-rw-r--r-- | tools/ioemu/gui/keymap.h | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/tools/ioemu/gui/keymap.h b/tools/ioemu/gui/keymap.h new file mode 100644 index 0000000000..945729bd17 --- /dev/null +++ b/tools/ioemu/gui/keymap.h @@ -0,0 +1,77 @@ +///////////////////////////////////////////////////////////////////////// +// $Id: keymap.h,v 1.9 2003/07/12 08:17:10 vruppert Exp $ +///////////////////////////////////////////////////////////////////////// +// +// Copyright (C) 2002 MandrakeSoft S.A. +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +///////////////////////////////////////////////////////////////////////// +// +// Methods of bx_keymap_c : +// +// - loadKeymap(Bit32u convertStringToSymbol(const char*)); +// loads the configuration specified keymap file if keymapping is enabled +// using convertStringToSymbol to convert strings to client constants +// +// - loadKeymap(Bit32u convertStringToSymbol(const char*), const char* filename); +// loads the specified keymap file +// using convertStringToSymbol to convert strings to client constants +// +// - isKeymapLoaded () returns true if the keymap contains any valid key +// entries. +// +// - convertStringToBXKey +// convert a null-terminate string to a BX_KEY code +// +// - findHostKey(Bit32u key) +// - findAsciiChar(Bit8u ch) +// Each of these methods returns a pointer to a BXKeyEntry structure +// corresponding to a key. findHostKey() finds an entry whose hostKey +// value matches the target value, and findAsciiChar() finds an entry +// whose ASCII code matches the search value. + +// In case of unknown symbol +#define BX_KEYMAP_UNKNOWN 0xFFFFFFFF + +// Structure of an element of the keymap table +typedef struct BOCHSAPI { + Bit32u baseKey; // base key + Bit32u modKey; // modifier key that must be held down + Bit32s ascii; // ascii equivalent, if any + Bit32u hostKey; // value that the host's OS or library recognizes + } BXKeyEntry; + +class BOCHSAPI bx_keymap_c : public logfunctions { +public: + bx_keymap_c(void); + ~bx_keymap_c(void); + + void loadKeymap(Bit32u(*)(const char*)); + void loadKeymap(Bit32u(*)(const char*),const char *filename); + bx_bool isKeymapLoaded (); + + BXKeyEntry *findHostKey(Bit32u hostkeynum); + BXKeyEntry *findAsciiChar(Bit8u ascii); + char *getBXKeyName(Bit32u key); + +private: + Bit32u convertStringToBXKey(const char *); + + BXKeyEntry *keymapTable; + Bit16u keymapCount; + }; + +BOCHSAPI extern bx_keymap_c bx_keymap; |