Files
scummvm-cursorfix/engines/hpl1/engine/input/ActionKeyboard.cpp
2026-02-02 04:50:13 +01:00

486 lines
9.7 KiB
C++

/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* 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 3 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, see <http://www.gnu.org/licenses/>.
*
*/
/*
* Copyright (C) 2006-2010 - Frictional Games
*
* This file is part of HPL1 Engine.
*/
#include "hpl1/engine/input/ActionKeyboard.h"
#include "hpl1/engine/input/Input.h"
#include "hpl1/engine/input/Keyboard.h"
#include "hpl1/engine/system/low_level_system.h"
namespace hpl {
//////////////////////////////////////////////////////////////////////////
// PUBLIC METHODS
//////////////////////////////////////////////////////////////////////////
//-----------------------------------------------------------------------
bool cActionKeyboard::IsTriggerd() {
return mpInput->GetKeyboard()->KeyIsDown(_key.keycode) &&
((mpInput->GetKeyboard()->GetModifier() & _key.flags) > 0 || _key.flags == 0);
}
//-----------------------------------------------------------------------
float cActionKeyboard::GetValue() {
if (IsTriggerd())
return 1.0;
else
return 0.0;
}
//-----------------------------------------------------------------------
tString cActionKeyboard::GetInputName() {
tString tsKey = "";
if (_key.flags & Common::KBD_SHIFT) {
tsKey += "Shift ";
}
if (_key.flags & Common::KBD_ALT) {
tsKey += "Alt ";
}
if (_key.flags & Common::KBD_CTRL) {
tsKey += "Control ";
}
if (_key.flags & Common::KBD_META) {
#ifdef __APPLE__
tsKey += "Command ";
#else
tsKey += "Windows ";
#endif
}
switch (_key.keycode) {
case Common::KEYCODE_BACKSPACE:
tsKey += "BackSpace";
break;
case Common::KEYCODE_TAB:
tsKey += "Tab";
break;
case Common::KEYCODE_CLEAR:
tsKey += "Clear";
break;
case Common::KEYCODE_RETURN:
tsKey += "Return";
break;
case Common::KEYCODE_PAUSE:
tsKey += "Pause";
break;
case Common::KEYCODE_ESCAPE:
tsKey += "Escape";
break;
case Common::KEYCODE_SPACE:
tsKey += "Space";
break;
case Common::KEYCODE_EXCLAIM:
tsKey += "Exclaim";
break;
case Common::KEYCODE_QUOTEDBL:
tsKey += "DblQoute";
break;
case Common::KEYCODE_HASH:
tsKey += "Hash";
break;
case Common::KEYCODE_DOLLAR:
tsKey += "Dollar";
break;
case Common::KEYCODE_AMPERSAND:
tsKey += "Ampersand";
break;
case Common::KEYCODE_QUOTE:
tsKey += "Quote";
break;
case Common::KEYCODE_LEFTPAREN:
tsKey += "LeftParent";
break;
case Common::KEYCODE_RIGHTPAREN:
tsKey += "RightParent";
break;
case Common::KEYCODE_ASTERISK:
tsKey += "Asterisk";
break;
case Common::KEYCODE_PLUS:
tsKey += "Plus";
break;
case Common::KEYCODE_COMMA:
tsKey += "Comma";
break;
case Common::KEYCODE_MINUS:
tsKey += "Minus";
break;
case Common::KEYCODE_PERIOD:
tsKey += "Period";
break;
case Common::KEYCODE_SLASH:
tsKey += "Slash";
break;
case Common::KEYCODE_0:
tsKey += "0";
break;
case Common::KEYCODE_1:
tsKey += "1";
break;
case Common::KEYCODE_2:
tsKey += "2";
break;
case Common::KEYCODE_3:
tsKey += "3";
break;
case Common::KEYCODE_4:
tsKey += "4";
break;
case Common::KEYCODE_5:
tsKey += "5";
break;
case Common::KEYCODE_6:
tsKey += "6";
break;
case Common::KEYCODE_7:
tsKey += "7";
break;
case Common::KEYCODE_8:
tsKey += "8";
break;
case Common::KEYCODE_9:
tsKey += "9";
break;
case Common::KEYCODE_COLON:
tsKey += "Colon";
break;
case Common::KEYCODE_SEMICOLON:
tsKey += "SemiColon";
break;
case Common::KEYCODE_LESS:
tsKey += "Less";
break;
case Common::KEYCODE_EQUALS:
tsKey += "Equals";
break;
case Common::KEYCODE_GREATER:
tsKey += "Greater";
break;
case Common::KEYCODE_QUESTION:
tsKey += "Question";
break;
case Common::KEYCODE_AT:
tsKey += "At";
break;
case Common::KEYCODE_LEFTBRACKET:
tsKey += "LeftBracket";
break;
case Common::KEYCODE_BACKSLASH:
tsKey += "BackSlash";
break;
case Common::KEYCODE_RIGHTBRACKET:
tsKey += "RightBracket";
break;
case Common::KEYCODE_CARET:
tsKey += "Caret";
break;
case Common::KEYCODE_UNDERSCORE:
tsKey += "Underscore";
break;
case Common::KEYCODE_BACKQUOTE:
tsKey += "BackQuote";
break;
case Common::KEYCODE_a:
tsKey += "A";
break;
case Common::KEYCODE_b:
tsKey += "B";
break;
case Common::KEYCODE_c:
tsKey += "C";
break;
case Common::KEYCODE_d:
tsKey += "D";
break;
case Common::KEYCODE_e:
tsKey += "E";
break;
case Common::KEYCODE_f:
tsKey += "F";
break;
case Common::KEYCODE_g:
tsKey += "G";
break;
case Common::KEYCODE_h:
tsKey += "H";
break;
case Common::KEYCODE_i:
tsKey += "I";
break;
case Common::KEYCODE_j:
tsKey += "J";
break;
case Common::KEYCODE_k:
tsKey += "K";
break;
case Common::KEYCODE_l:
tsKey += "L";
break;
case Common::KEYCODE_m:
tsKey += "M";
break;
case Common::KEYCODE_n:
tsKey += "N";
break;
case Common::KEYCODE_o:
tsKey += "O";
break;
case Common::KEYCODE_p:
tsKey += "P";
break;
case Common::KEYCODE_q:
tsKey += "Q";
break;
case Common::KEYCODE_r:
tsKey += "R";
break;
case Common::KEYCODE_s:
tsKey += "S";
break;
case Common::KEYCODE_t:
tsKey += "T";
break;
case Common::KEYCODE_u:
tsKey += "U";
break;
case Common::KEYCODE_v:
tsKey += "V";
break;
case Common::KEYCODE_w:
tsKey += "W";
break;
case Common::KEYCODE_x:
tsKey += "X";
break;
case Common::KEYCODE_y:
tsKey += "Y";
break;
case Common::KEYCODE_z:
tsKey += "Z";
break;
case Common::KEYCODE_DELETE:
tsKey += "Delete";
break;
case Common::KEYCODE_KP0:
tsKey += "Kp0";
break;
case Common::KEYCODE_KP1:
tsKey += "Kp1";
break;
case Common::KEYCODE_KP2:
tsKey += "Kp2";
break;
case Common::KEYCODE_KP3:
tsKey += "Kp3";
break;
case Common::KEYCODE_KP4:
tsKey += "Kp4";
break;
case Common::KEYCODE_KP5:
tsKey += "Kp5";
break;
case Common::KEYCODE_KP6:
tsKey += "Kp6";
break;
case Common::KEYCODE_KP7:
tsKey += "Kp7";
break;
case Common::KEYCODE_KP8:
tsKey += "Kp8";
break;
case Common::KEYCODE_KP9:
tsKey += "Kp9";
break;
case Common::KEYCODE_KP_PERIOD:
tsKey += "Period";
break;
case Common::KEYCODE_KP_DIVIDE:
tsKey += "Divide";
break;
case Common::KEYCODE_KP_MULTIPLY:
tsKey += "Multiply";
break;
case Common::KEYCODE_KP_MINUS:
tsKey += "Minus";
break;
case Common::KEYCODE_KP_PLUS:
tsKey += "Plus";
break;
case Common::KEYCODE_KP_ENTER:
tsKey += "Enter";
break;
case Common::KEYCODE_KP_EQUALS:
tsKey += "Equals";
break;
case Common::KEYCODE_UP:
tsKey += "Up";
break;
case Common::KEYCODE_DOWN:
tsKey += "Down";
break;
case Common::KEYCODE_RIGHT:
tsKey += "Right";
break;
case Common::KEYCODE_LEFT:
tsKey += "Left";
break;
case Common::KEYCODE_INSERT:
tsKey += "Insert";
break;
case Common::KEYCODE_HOME:
tsKey += "Home";
break;
case Common::KEYCODE_END:
tsKey += "End";
break;
case Common::KEYCODE_PAGEUP:
tsKey += "PageUp";
break;
case Common::KEYCODE_PAGEDOWN:
tsKey += "PageDown";
break;
case Common::KEYCODE_F1:
tsKey += "F1";
break;
case Common::KEYCODE_F2:
tsKey += "F2";
break;
case Common::KEYCODE_F3:
tsKey += "F3";
break;
case Common::KEYCODE_F4:
tsKey += "F4";
break;
case Common::KEYCODE_F5:
tsKey += "F5";
break;
case Common::KEYCODE_F6:
tsKey += "F6";
break;
case Common::KEYCODE_F7:
tsKey += "F7";
break;
case Common::KEYCODE_F8:
tsKey += "F8";
break;
case Common::KEYCODE_F9:
tsKey += "F9";
break;
case Common::KEYCODE_F10:
tsKey += "F10";
break;
case Common::KEYCODE_F11:
tsKey += "F11";
break;
case Common::KEYCODE_F12:
tsKey += "F12";
break;
case Common::KEYCODE_F13:
tsKey += "F13";
break;
case Common::KEYCODE_F14:
tsKey += "F14";
break;
case Common::KEYCODE_F15:
tsKey += "F15";
break;
case Common::KEYCODE_NUMLOCK:
tsKey += "NumLock";
break;
case Common::KEYCODE_CAPSLOCK:
tsKey += "CapsLock";
break;
case Common::KEYCODE_SCROLLOCK:
tsKey += "ScrollLock";
break;
case Common::KEYCODE_RSHIFT:
tsKey += "RightShift";
break;
case Common::KEYCODE_LSHIFT:
tsKey += "LeftShift";
break;
case Common::KEYCODE_RCTRL:
tsKey += "RightControl";
break;
case Common::KEYCODE_LCTRL:
tsKey += "LeftControl";
break;
case Common::KEYCODE_RALT:
tsKey += "RightAlt";
break;
case Common::KEYCODE_LALT:
tsKey += "LeftAlt";
break;
case Common::KEYCODE_RMETA:
tsKey += "RightMeta";
break;
case Common::KEYCODE_LMETA:
tsKey += "LeftMeta";
break;
case Common::KEYCODE_LSUPER:
tsKey += "LeftSuper";
break;
case Common::KEYCODE_RSUPER:
tsKey += "RightSuper";
break;
case Common::KEYCODE_MODE:
tsKey += "Mode";
break;
case Common::KEYCODE_HELP:
tsKey += "Help";
break;
case Common::KEYCODE_PRINT:
tsKey += "Print";
break;
case Common::KEYCODE_SYSREQ:
tsKey += "SysReq";
break;
case Common::KEYCODE_BREAK:
tsKey += "Break";
break;
case Common::KEYCODE_MENU:
tsKey += "Menu";
break;
case Common::KEYCODE_POWER:
tsKey += "Power";
break;
case Common::KEYCODE_EURO:
tsKey += "Euro";
break;
default:
break;
}
if (tsKey != "") {
return tsKey;
} else {
return "Unknown";
}
}
//-----------------------------------------------------------------------
} // namespace hpl