mirror of
https://github.com/XProger/OpenLara.git
synced 2025-08-16 10:04:28 +02:00
#121 add full keyboard
This commit is contained in:
@@ -142,6 +142,9 @@ enum InputKey { ikNone,
|
||||
ik0, ik1, ik2, ik3, ik4, ik5, ik6, ik7, ik8, ik9,
|
||||
ikA, ikB, ikC, ikD, ikE, ikF, ikG, ikH, ikI, ikJ, ikK, ikL, ikM,
|
||||
ikN, ikO, ikP, ikQ, ikR, ikS, ikT, ikU, ikV, ikW, ikX, ikY, ikZ,
|
||||
ikN0, ikN1, ikN2, ikN3, ikN4, ikN5, ikN6, ikN7, ikN8, ikN9, ikNAdd, ikNSub, ikNMul, ikNDiv, ikNDot,
|
||||
ikF1, ikF2, ikF3, ikF4, ikF5, ikF6, ikF7, ikF8, ikF9, ikF10, ikF11, ikF12,
|
||||
ikMinus, ikPlus, ikLSB, ikRSB, ikSlash, ikBSlash, ikComa, ikDot, ikTilda, ikColon, ikApos, ikPrev, ikNext, ikHome, ikEnd, ikDel, ikIns, ikBack,
|
||||
// mouse
|
||||
ikMouseL, ikMouseR, ikMouseM,
|
||||
// touch
|
||||
|
@@ -88,7 +88,7 @@ namespace Input {
|
||||
}
|
||||
down[key] = value;
|
||||
|
||||
if (value && key <= ikZ) {
|
||||
if (value && key <= ikBack) {
|
||||
lastKey = key;
|
||||
touchTimerVis = 0.0f;
|
||||
}
|
||||
|
@@ -92,7 +92,7 @@ enum StringID {
|
||||
, STR_CTRL_LAST = STR_CTRL_FIRST + cMAX - 1
|
||||
// keys
|
||||
, STR_KEY_FIRST
|
||||
, STR_KEY_LAST = STR_KEY_FIRST + ikZ
|
||||
, STR_KEY_LAST = STR_KEY_FIRST + ikBack
|
||||
// gamepad
|
||||
, STR_JOY_FIRST
|
||||
, STR_JOY_LAST = STR_JOY_FIRST + jkMAX - 1
|
||||
@@ -258,6 +258,9 @@ enum StringID {
|
||||
, "0", "1", "2", "3", "4", "5", "6", "7", "8", "9" \
|
||||
, "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M" \
|
||||
, "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z" \
|
||||
, "PAD0", "PAD1", "PAD2", "PAD3", "PAD4", "PAD5", "PAD6", "PAD7", "PAD8", "PAD9", "PAD+", "PAD-", "PADx", "PAD/", "PAD." \
|
||||
, "F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9", "F10", "F11", "F12" \
|
||||
, "-", "+", "<", ">", "/", "\\", ",", ".", "$", ":", "'", "PGUP", "PGDN", "HOME", "END", "DEL", "INS", "BKSP" \
|
||||
, "NONE", "A", "B", "X", "Y", "L BUMPER", "R BUMPER", "SELECT", "START", "L STICK", "R STICK", "L TRIGGER", "R TRIGGER", "D-LEFT", "D-RIGHT", "D-UP", "D-DOWN"
|
||||
|
||||
const char *helpText =
|
||||
|
@@ -272,11 +272,16 @@ InputKey keyToInputKey(int code) {
|
||||
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
|
||||
'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',
|
||||
'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',
|
||||
0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6B, 0x6D, 0x6A, 0x6F, 0x6E,
|
||||
0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x7B,
|
||||
0xBB, 0xBD, 0xDB, 0xDD, 0xBF, 0xDC, 0xBC, 0xBE, 0xC0, 0xBA, 0xDE, 0x21, 0x22, 0x24, 0x23, 0x2E, 0x2D, 0x08
|
||||
};
|
||||
|
||||
for (int i = 0; i < sizeof(codes) / sizeof(codes[0]); i++)
|
||||
if (codes[i] == code)
|
||||
for (int i = 0; i < COUNT(codes); i++) {
|
||||
if (codes[i] == code) {
|
||||
return (InputKey)(ikLeft + i);
|
||||
}
|
||||
}
|
||||
return ikNone;
|
||||
}
|
||||
|
||||
|
@@ -79,11 +79,16 @@ InputKey keyToInputKey(int code) {
|
||||
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
|
||||
'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',
|
||||
'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',
|
||||
VK_NUMPAD0, VK_NUMPAD1, VK_NUMPAD2, VK_NUMPAD3, VK_NUMPAD4, VK_NUMPAD5, VK_NUMPAD6, VK_NUMPAD7, VK_NUMPAD8, VK_NUMPAD9, VK_ADD, VK_SUBTRACT, VK_MULTIPLY, VK_DIVIDE, VK_DECIMAL,
|
||||
VK_F1, VK_F2, VK_F3, VK_F4, VK_F5, VK_F6, VK_F7, VK_F8, VK_F9, VK_F10, VK_F11, VK_F12,
|
||||
VK_OEM_MINUS, VK_OEM_PLUS, VK_OEM_4, VK_OEM_6, VK_OEM_2, VK_OEM_5, VK_OEM_COMMA, VK_OEM_PERIOD, VK_OEM_3, VK_OEM_1, VK_OEM_7, VK_PRIOR, VK_NEXT, VK_HOME, VK_END, VK_DELETE, VK_INSERT, VK_BACK,
|
||||
};
|
||||
|
||||
for (int i = 0; i < sizeof(codes) / sizeof(codes[0]); i++)
|
||||
if (codes[i] == code)
|
||||
for (int i = 0; i < COUNT(codes); i++) {
|
||||
if (codes[i] == code) {
|
||||
return (InputKey)(ikLeft + i);
|
||||
}
|
||||
}
|
||||
return ikNone;
|
||||
}
|
||||
|
||||
|
8
src/ui.h
8
src/ui.h
@@ -161,7 +161,7 @@ namespace UI {
|
||||
if (c == '\xBF') c = '?';
|
||||
if (c == '\xA1') c = '!';
|
||||
|
||||
if (skipChar(c)) {
|
||||
if (skipChar(c) && *text && *text != '@') {
|
||||
//
|
||||
} else if (c == ' ' || c == '_') {
|
||||
x += 6;
|
||||
@@ -193,7 +193,7 @@ namespace UI {
|
||||
if (c == '\xBF') c = '?';
|
||||
if (c == '\xA1') c = '!';
|
||||
|
||||
if (skipChar(c)) {
|
||||
if (skipChar(c) && *text && *text != '@') {
|
||||
//
|
||||
} else if (c == ' ' || c == '_') {
|
||||
x += 6;
|
||||
@@ -344,7 +344,7 @@ namespace UI {
|
||||
if (charFrame == '{') charFrame = '(';
|
||||
|
||||
int frame = charRemap(charFrame);
|
||||
if (c == '+') frame = CHAR_SPR_TILDA;
|
||||
if (c == '+' && *text && *text != '@') frame = CHAR_SPR_TILDA;
|
||||
if (c == 'i' && skipChar(lastChar)) frame = CHAR_SPR_I;
|
||||
lastChar = c;
|
||||
|
||||
@@ -365,7 +365,7 @@ namespace UI {
|
||||
}
|
||||
}
|
||||
|
||||
bool isSkipChar = skipChar(c);
|
||||
bool isSkipChar = skipChar(c) && *text && *text != '@';
|
||||
|
||||
if (isSkipChar) {
|
||||
int idx = charRemap(remapCyrillic(*text));
|
||||
|
Reference in New Issue
Block a user