- Added support for PrtSc and cosmetic changes.

This commit is contained in:
drfrag 2019-09-22 19:34:56 +02:00
parent 6535f837b7
commit a1e19657f9
4 changed files with 43 additions and 59 deletions

View file

@ -109,7 +109,8 @@ enum ESpecialGUIKeys
GK_FREE1 = 28,
GK_FREE2 = 29,
GK_BACK = 30, // browser back key
GK_CESCAPE = 31 // color escape
GK_CESCAPE = 31, // color escape
GK_SYSRQ = 32 // PrtSc
};
#endif //__D_GUI_H__

View file

@ -268,6 +268,7 @@ bool GUIWndProcHook(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam, LRESU
case VK_F11: ev.data1 = GK_F11; break;
case VK_F12: ev.data1 = GK_F12; break;
case VK_BROWSER_BACK: ev.data1 = GK_BACK; break;
case VK_SNAPSHOT: ev.data1 = GK_SYSRQ; break;
}
if (ev.data1 != 0)
{

View file

@ -115,7 +115,8 @@ struct UiEvent native ui version("2.4")
Key_Free1 = 28,
Key_Free2 = 29,
Key_Back = 30, // browser back key
Key_CEscape = 31 // color escape
Key_CEscape = 31, // color escape
Key_SysRq = 32 // PrtSc
}
//
@ -190,6 +191,8 @@ struct InputEvent native play version("2.4")
Key_PgUp = 0xc9, // DIK_PRIOR
Key_PgDn = 0xd1, // DIK_NEXT
Key_SysRq = 0xb7, // DIK_SYSRQ
Key_Mouse1 = 0x100,
Key_Mouse2 = 0x101,
Key_Mouse3 = 0x102,
@ -270,7 +273,7 @@ struct InputEvent native play version("2.4")
Key_Pad_X = 0x1C2,
Key_Pad_Y = 0x1C3,
Num_Keys = 0x1C4
Num_Keys = 0x224
}
//

View file

@ -211,7 +211,7 @@ class Menu : Object native ui version("2.4")
res |= MouseEvent(MOUSE_Release, ev.MouseX, y);
}
}
else if (ev.type == UIEvent.Type_KeyDown)
else if (ev.type == UIEvent.Type_KeyDown || ev.KeyChar == UiEvent.Key_SysRq)
{
checkPrintScreen(ev);
}
@ -321,71 +321,50 @@ class Menu : Object native ui version("2.4")
int overlay = grayed? Color(96,48,0,0) : 0;
screen.DrawText (OptionFont(), color, x, y, text, DTA_CleanNoMove_1, true, DTA_ColorOverlay, overlay);
}
private static int uiKeyToInputKey(UiEvent ev)
{
int uiKey = ev.KeyChar;
switch (uiKey)
{
case UiEvent.Key_PgDn : return 0; // used by menu
case UiEvent.Key_PgUp : return 0; // used by menu
case UiEvent.Key_Home : return InputEvent.Key_Home;
case UiEvent.Key_End : return InputEvent.Key_End;
case UiEvent.Key_Left : return 0; // used by menu
case UiEvent.Key_Right : return 0; // used by menu
case UiEvent.Key_Alert : return 0; // ASCII bell, not present in EDoomInputKeys
case UiEvent.Key_Backspace : return 0; // used by menu
case UiEvent.Key_Tab : return InputEvent.Key_Tab;
case UiEvent.Key_LineFeed : return 0; // ASCII, not present in EDoomInputKeys
case UiEvent.Key_Down : return 0; // used by menu
case UiEvent.Key_VTab : return 0; // not present in EDoomInputKeys
case UiEvent.Key_Up : return 0; // used by menu
case UiEvent.Key_FormFeed : return 0; // ASCII, not present in EDoomInputKeys
case UiEvent.Key_Return : return 0; // used by menu
case UiEvent.Key_F1 : return InputEvent.Key_F1;
case UiEvent.Key_F2 : return InputEvent.Key_F2;
case UiEvent.Key_F3 : return InputEvent.Key_F3;
case UiEvent.Key_F4 : return InputEvent.Key_F4;
case UiEvent.Key_F5 : return InputEvent.Key_F5;
case UiEvent.Key_F6 : return InputEvent.Key_F6;
case UiEvent.Key_F7 : return InputEvent.Key_F7;
case UiEvent.Key_F8 : return InputEvent.Key_F8;
case UiEvent.Key_F9 : return InputEvent.Key_F9;
case UiEvent.Key_F10 : return InputEvent.Key_F10;
case UiEvent.Key_F11 : return InputEvent.Key_F11;
case UiEvent.Key_F12 : return InputEvent.Key_F12;
case UiEvent.Key_Del : return InputEvent.Key_Del;
case UiEvent.Key_Escape : return 0; // used by menu
case UiEvent.Key_Free1 : return 0; // ?
case UiEvent.Key_Free2 : return 0; // ?
case UiEvent.Key_Back : return 0; // browser back key, ?
case UiEvent.Key_CEscape : return 0; // color escape, not present in EDoomInputKeys
}
if (ev.IsShift) { return InputEvent.Key_LShift; }
if (ev.IsCtrl) { return InputEvent.Key_LCtrl; }
if (ev.IsAlt) { return InputEvent.Key_LAlt; }
return 0;
}
private static bool uiKeyIsInputKey(UiEvent ev, int inputKey)
{
int convertedKey = uiKeyToInputKey(ev);
int convertedKey;
switch (ev.KeyChar)
{
case UiEvent.Key_Home: convertedKey = InputEvent.Key_Home; break;
case UiEvent.Key_End: convertedKey = InputEvent.Key_End; break;
case UiEvent.Key_Tab: convertedKey = InputEvent.Key_Tab; break;
case UiEvent.Key_Del: convertedKey = InputEvent.Key_Del; break;
case UiEvent.Key_SysRq: convertedKey = InputEvent.Key_SysRq; break;
case UiEvent.Key_F1: convertedKey = InputEvent.Key_F1; break;
case UiEvent.Key_F2: convertedKey = InputEvent.Key_F2; break;
case UiEvent.Key_F3: convertedKey = InputEvent.Key_F3; break;
case UiEvent.Key_F4: convertedKey = InputEvent.Key_F4; break;
case UiEvent.Key_F5: convertedKey = InputEvent.Key_F5; break;
case UiEvent.Key_F6: convertedKey = InputEvent.Key_F6; break;
case UiEvent.Key_F7: convertedKey = InputEvent.Key_F7; break;
case UiEvent.Key_F8: convertedKey = InputEvent.Key_F8; break;
case UiEvent.Key_F9: convertedKey = InputEvent.Key_F9; break;
case UiEvent.Key_F10: convertedKey = InputEvent.Key_F10; break;
case UiEvent.Key_F11: convertedKey = InputEvent.Key_F11; break;
case UiEvent.Key_F12: convertedKey = InputEvent.Key_F12; break;
default:
// either used by menu or not present in EDoomInputKeys
convertedKey = 0;
}
if (ev.IsShift) convertedKey = InputEvent.Key_LShift;
else if (ev.IsCtrl) convertedKey = InputEvent.Key_LCtrl;
else if (ev.IsAlt) convertedKey = InputEvent.Key_LAlt;
if (convertedKey)
{
return (convertedKey == inputKey);
return convertedKey == inputKey;
}
String inputKeyName = KeyBindings.NameKeys(inputKey, 0);
if (inputKeyName.length() == 1)
{
int byte = inputKeyName.ByteAt(0);
int uiKey = ev.KeyChar;
return (byte == uiKey);
return inputKeyName.ByteAt(0) == ev.KeyChar;
}
return false;