diff options
Diffstat (limited to 'source/gameengine/GamePlayer/common/windows/GPW_KeyboardDevice.cpp')
-rw-r--r-- | source/gameengine/GamePlayer/common/windows/GPW_KeyboardDevice.cpp | 283 |
1 files changed, 0 insertions, 283 deletions
diff --git a/source/gameengine/GamePlayer/common/windows/GPW_KeyboardDevice.cpp b/source/gameengine/GamePlayer/common/windows/GPW_KeyboardDevice.cpp deleted file mode 100644 index 7e8a50915c8..00000000000 --- a/source/gameengine/GamePlayer/common/windows/GPW_KeyboardDevice.cpp +++ /dev/null @@ -1,283 +0,0 @@ -/** - * $Id$ - * - * ***** BEGIN GPL LICENSE BLOCK ***** - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. - * All rights reserved. - * - * The Original Code is: all of this file. - * - * Contributor(s): none yet. - * - * ***** END GPL LICENSE BLOCK ***** - */ - -#include "GPW_KeyboardDevice.h" - -// Key code values not found in winuser.h -#ifndef VK_MINUS -#define VK_MINUS 0xBD -#endif // VK_MINUS -#ifndef VK_SEMICOLON -#define VK_SEMICOLON 0xBA -#endif // VK_SEMICOLON -#ifndef VK_PERIOD -#define VK_PERIOD 0xBE -#endif // VK_PERIOD -#ifndef VK_COMMA -#define VK_COMMA 0xBC -#endif // VK_COMMA -#ifndef VK_QUOTE -#define VK_QUOTE 0xDE -#endif // VK_QUOTE -#ifndef VK_BACK_QUOTE -#define VK_BACK_QUOTE 0xC0 -#endif // VK_BACK_QUOTE -#ifndef VK_SLASH -#define VK_SLASH 0xBF -#endif // VK_SLASH -#ifndef VK_BACK_SLASH -#define VK_BACK_SLASH 0xDC -#endif // VK_BACK_SLASH -#ifndef VK_EQUALS -#define VK_EQUALS 0xBB -#endif // VK_EQUALS -#ifndef VK_OPEN_BRACKET -#define VK_OPEN_BRACKET 0xDB -#endif // VK_OPEN_BRACKET -#ifndef VK_CLOSE_BRACKET -#define VK_CLOSE_BRACKET 0xDD -#endif // VK_CLOSE_BRACKET - - - -GPW_KeyboardDevice::GPW_KeyboardDevice(void) -{ - m_separateLeftRight = false; - m_separateLeftRightInitialized = false; - - m_reverseKeyTranslateTable['A' ] = KX_AKEY ; - m_reverseKeyTranslateTable['B' ] = KX_BKEY ; - m_reverseKeyTranslateTable['C' ] = KX_CKEY ; - m_reverseKeyTranslateTable['D' ] = KX_DKEY ; - m_reverseKeyTranslateTable['E' ] = KX_EKEY ; - m_reverseKeyTranslateTable['F' ] = KX_FKEY ; - m_reverseKeyTranslateTable['G' ] = KX_GKEY ; - m_reverseKeyTranslateTable['H' ] = KX_HKEY ; - m_reverseKeyTranslateTable['I' ] = KX_IKEY ; - m_reverseKeyTranslateTable['J' ] = KX_JKEY ; - m_reverseKeyTranslateTable['K' ] = KX_KKEY ; - m_reverseKeyTranslateTable['L' ] = KX_LKEY ; - m_reverseKeyTranslateTable['M' ] = KX_MKEY ; - m_reverseKeyTranslateTable['N' ] = KX_NKEY ; - m_reverseKeyTranslateTable['O' ] = KX_OKEY ; - m_reverseKeyTranslateTable['P' ] = KX_PKEY ; - m_reverseKeyTranslateTable['Q' ] = KX_QKEY ; - m_reverseKeyTranslateTable['R' ] = KX_RKEY ; - m_reverseKeyTranslateTable['S' ] = KX_SKEY ; - m_reverseKeyTranslateTable['T' ] = KX_TKEY ; - m_reverseKeyTranslateTable['U' ] = KX_UKEY ; - m_reverseKeyTranslateTable['V' ] = KX_VKEY ; - m_reverseKeyTranslateTable['W' ] = KX_WKEY ; - m_reverseKeyTranslateTable['X' ] = KX_XKEY ; - m_reverseKeyTranslateTable['Y' ] = KX_YKEY ; - m_reverseKeyTranslateTable['Z' ] = KX_ZKEY ; - - m_reverseKeyTranslateTable['0' ] = KX_ZEROKEY ; - m_reverseKeyTranslateTable['1' ] = KX_ONEKEY ; - m_reverseKeyTranslateTable['2' ] = KX_TWOKEY ; - m_reverseKeyTranslateTable['3' ] = KX_THREEKEY ; - m_reverseKeyTranslateTable['4' ] = KX_FOURKEY ; - m_reverseKeyTranslateTable['5' ] = KX_FIVEKEY ; - m_reverseKeyTranslateTable['6' ] = KX_SIXKEY ; - m_reverseKeyTranslateTable['7' ] = KX_SEVENKEY ; - m_reverseKeyTranslateTable['8' ] = KX_EIGHTKEY ; - m_reverseKeyTranslateTable['9' ] = KX_NINEKEY ; - - // Middle keyboard area keys - m_reverseKeyTranslateTable[VK_PAUSE ] = KX_PAUSEKEY ; - m_reverseKeyTranslateTable[VK_INSERT ] = KX_INSERTKEY ; - m_reverseKeyTranslateTable[VK_DELETE ] = KX_DELKEY ; - m_reverseKeyTranslateTable[VK_HOME ] = KX_HOMEKEY ; - m_reverseKeyTranslateTable[VK_END ] = KX_ENDKEY ; - m_reverseKeyTranslateTable[VK_PRIOR ] = KX_PAGEUPKEY ; - m_reverseKeyTranslateTable[VK_NEXT ] = KX_PAGEDOWNKEY ; - - // Arrow keys - m_reverseKeyTranslateTable[VK_UP ] = KX_UPARROWKEY ; - m_reverseKeyTranslateTable[VK_DOWN ] = KX_DOWNARROWKEY ; - m_reverseKeyTranslateTable[VK_LEFT ] = KX_LEFTARROWKEY ; - m_reverseKeyTranslateTable[VK_RIGHT ] = KX_RIGHTARROWKEY ; - - // Function keys - m_reverseKeyTranslateTable[VK_F1 ] = KX_F1KEY ; - m_reverseKeyTranslateTable[VK_F2 ] = KX_F2KEY ; - m_reverseKeyTranslateTable[VK_F3 ] = KX_F3KEY ; - m_reverseKeyTranslateTable[VK_F4 ] = KX_F4KEY ; - m_reverseKeyTranslateTable[VK_F5 ] = KX_F5KEY ; - m_reverseKeyTranslateTable[VK_F6 ] = KX_F6KEY ; - m_reverseKeyTranslateTable[VK_F7 ] = KX_F7KEY ; - m_reverseKeyTranslateTable[VK_F8 ] = KX_F8KEY ; - m_reverseKeyTranslateTable[VK_F9 ] = KX_F9KEY ; - m_reverseKeyTranslateTable[VK_F10 ] = KX_F10KEY ; - m_reverseKeyTranslateTable[VK_F11 ] = KX_F11KEY ; - m_reverseKeyTranslateTable[VK_F12 ] = KX_F12KEY ; - m_reverseKeyTranslateTable[VK_F13 ] = KX_F13KEY ; - m_reverseKeyTranslateTable[VK_F14 ] = KX_F14KEY ; - m_reverseKeyTranslateTable[VK_F15 ] = KX_F15KEY ; - m_reverseKeyTranslateTable[VK_F16 ] = KX_F16KEY ; - m_reverseKeyTranslateTable[VK_F17 ] = KX_F17KEY ; - m_reverseKeyTranslateTable[VK_F18 ] = KX_F18KEY ; - m_reverseKeyTranslateTable[VK_F19 ] = KX_F19KEY ; - - // Numpad keys - m_reverseKeyTranslateTable[VK_NUMPAD0 ] = KX_PAD0 ; - m_reverseKeyTranslateTable[VK_NUMPAD1 ] = KX_PAD1 ; - m_reverseKeyTranslateTable[VK_NUMPAD2 ] = KX_PAD2 ; - m_reverseKeyTranslateTable[VK_NUMPAD3 ] = KX_PAD3 ; - m_reverseKeyTranslateTable[VK_NUMPAD4 ] = KX_PAD4 ; - m_reverseKeyTranslateTable[VK_NUMPAD5 ] = KX_PAD5 ; - m_reverseKeyTranslateTable[VK_NUMPAD6 ] = KX_PAD6 ; - m_reverseKeyTranslateTable[VK_NUMPAD7 ] = KX_PAD7 ; - m_reverseKeyTranslateTable[VK_NUMPAD8 ] = KX_PAD8 ; - m_reverseKeyTranslateTable[VK_NUMPAD9 ] = KX_PAD9 ; - m_reverseKeyTranslateTable[VK_MULTIPLY ] = KX_PADASTERKEY ; - m_reverseKeyTranslateTable[VK_ADD ] = KX_PADPLUSKEY ; - m_reverseKeyTranslateTable[VK_DECIMAL ] = KX_PADPERIOD ; - m_reverseKeyTranslateTable[VK_SUBTRACT ] = KX_PADMINUS ; - m_reverseKeyTranslateTable[VK_DIVIDE ] = KX_PADSLASHKEY ; - m_reverseKeyTranslateTable[VK_SEPARATOR ] = KX_PADENTER ; - - // Other keys - m_reverseKeyTranslateTable[VK_CAPITAL ] = KX_CAPSLOCKKEY ; - m_reverseKeyTranslateTable[VK_ESCAPE ] = KX_ESCKEY ; - m_reverseKeyTranslateTable[VK_TAB ] = KX_TABKEY ; - //m_reverseKeyTranslateTable[VK_RETURN ] = KX_RETKEY ; - m_reverseKeyTranslateTable[VK_SPACE ] = KX_SPACEKEY ; - m_reverseKeyTranslateTable[VK_RETURN ] = KX_LINEFEEDKEY ; - m_reverseKeyTranslateTable[VK_BACK ] = KX_BACKSPACEKEY ; - m_reverseKeyTranslateTable[VK_SEMICOLON ] = KX_SEMICOLONKEY ; - m_reverseKeyTranslateTable[VK_PERIOD ] = KX_PERIODKEY ; - m_reverseKeyTranslateTable[VK_COMMA ] = KX_COMMAKEY ; - m_reverseKeyTranslateTable[VK_QUOTE ] = KX_QUOTEKEY ; - m_reverseKeyTranslateTable[VK_BACK_QUOTE ] = KX_ACCENTGRAVEKEY ; - m_reverseKeyTranslateTable[VK_MINUS ] = KX_MINUSKEY ; - m_reverseKeyTranslateTable[VK_SLASH ] = KX_SLASHKEY ; - m_reverseKeyTranslateTable[VK_BACK_SLASH ] = KX_BACKSLASHKEY ; - m_reverseKeyTranslateTable[VK_EQUALS ] = KX_EQUALKEY ; - m_reverseKeyTranslateTable[VK_OPEN_BRACKET ] = KX_LEFTBRACKETKEY ; - m_reverseKeyTranslateTable[VK_CLOSE_BRACKET ] = KX_RIGHTBRACKETKEY ; - - /* - * Need to handle Ctrl, Alt and Shift keys differently. - * Win32 messages do not discriminate left and right keys. - */ - m_reverseKeyTranslateTable[VK_LCONTROL ] = KX_LEFTCTRLKEY ; - m_reverseKeyTranslateTable[VK_RCONTROL ] = KX_RIGHTCTRLKEY ; - m_reverseKeyTranslateTable[VK_LMENU ] = KX_LEFTALTKEY ; - m_reverseKeyTranslateTable[VK_RMENU ] = KX_RIGHTALTKEY ; - m_reverseKeyTranslateTable[VK_RSHIFT ] = KX_RIGHTSHIFTKEY ; - m_reverseKeyTranslateTable[VK_LSHIFT ] = KX_LEFTSHIFTKEY ; -} - - -GPW_KeyboardDevice::~GPW_KeyboardDevice(void) -{ -} - - -void GPW_KeyboardDevice::ConvertWinEvent(WPARAM wParam, bool isDown) -{ - if ((wParam == VK_SHIFT) || (wParam == VK_MENU) || (wParam == VK_CONTROL)) { - ConvertModifierKey(wParam, isDown); - } - else { - ConvertEvent(wParam, isDown); - } -} - - -void GPW_KeyboardDevice::ConvertModifierKey(WPARAM wParam, bool isDown) -{ - /* - GetKeyState and GetAsyncKeyState only work with Win95, Win98, NT4, - Terminal Server and Windows 2000. - But on WinME it always returns zero. These two functions are simply - skipped by Millenium Edition! - - Official explanation from Microsoft: - Intentionally disabled. - It didn't work all that well on some newer hardware, and worked less - well with the passage of time, so it was fully disabled in ME. - */ - if (!m_separateLeftRightInitialized && isDown) { - CheckForSeperateLeftRight(wParam); - } - if (m_separateLeftRight) { - bool down = HIBYTE(::GetKeyState(VK_LSHIFT)) != 0; - ConvertEvent(VK_LSHIFT, down); - down = HIBYTE(::GetKeyState(VK_RSHIFT)) != 0; - ConvertEvent(VK_RSHIFT, down); - down = HIBYTE(::GetKeyState(VK_LMENU)) != 0; - ConvertEvent(VK_LMENU, down); - down = HIBYTE(::GetKeyState(VK_RMENU)) != 0; - ConvertEvent(VK_RMENU, down); - down = HIBYTE(::GetKeyState(VK_LCONTROL)) != 0; - ConvertEvent(VK_LCONTROL, down); - down = HIBYTE(::GetKeyState(VK_RCONTROL)) != 0; - ConvertEvent(VK_RCONTROL, down); - } - else { - bool down = HIBYTE(::GetKeyState(VK_SHIFT)) != 0; - ConvertEvent(VK_LSHIFT, down); - ConvertEvent(VK_RSHIFT, down); - down = HIBYTE(::GetKeyState(VK_MENU)) != 0; - ConvertEvent(VK_LMENU, down); - ConvertEvent(VK_RMENU, down); - down = HIBYTE(::GetKeyState(VK_CONTROL)) != 0; - ConvertEvent(VK_LCONTROL, down); - ConvertEvent(VK_RCONTROL, down); - } -} - - -void GPW_KeyboardDevice::CheckForSeperateLeftRight(WPARAM wParam) -{ - // Check whether this system supports separate left and right keys - switch (wParam) { - case VK_SHIFT: - m_separateLeftRight = - (HIBYTE(::GetKeyState(VK_LSHIFT)) != 0) || - (HIBYTE(::GetKeyState(VK_RSHIFT)) != 0) ? - true : false; - break; - case VK_CONTROL: - m_separateLeftRight = - (HIBYTE(::GetKeyState(VK_LCONTROL)) != 0) || - (HIBYTE(::GetKeyState(VK_RCONTROL)) != 0) ? - true : false; - break; - case VK_MENU: - m_separateLeftRight = - (HIBYTE(::GetKeyState(VK_LMENU)) != 0) || - (HIBYTE(::GetKeyState(VK_RMENU)) != 0) ? - true : false; - break; - } - m_separateLeftRightInitialized = true; -} |