Ref T650, added more hotkeys such as OEM keys

* based on http://www.kbdlayout.info/
* OEM key solves accent / dead key issue for most cases
* Mac/Linux parts still missing
This commit is contained in:
Klaus Basan
2019-05-10 03:43:51 +02:00
parent 6ff118b3c0
commit bad8ad2a8e
7 changed files with 97 additions and 14 deletions

View File

@@ -356,7 +356,7 @@ namespace BlackGui
void CHotkeyDialog::advancedKeyChanged(int oldIndex, int newIndex)
{
CKeySelectionBox *ksb = qobject_cast<CKeySelectionBox *>(sender());
const CKeySelectionBox *ksb = qobject_cast<CKeySelectionBox *>(sender());
Q_ASSERT(ksb);
if (ksb->itemData(oldIndex).canConvert<CKeyboardKey>() && ksb->itemData(newIndex).canConvert<CKeyboardKey>())

View File

@@ -78,7 +78,24 @@ namespace BlackInput
{ XK_Escape, Key_Esc },
{ XK_space, Key_Space },
{ XK_dead_grave, Key_DeadGrave },
{ XK_comma, Key_Comma },
{ XK_comma, Key_Comma }
/** fixme Missing ones
Key_Insert,
Key_Delete,
Key_Esc = 27,
Key_Space = 32,
CKeyboardKey(Key_NumpadEqual),
CKeyboardKey(Key_OEM1),
CKeyboardKey(Key_OEM2),
CKeyboardKey(Key_OEM3),
CKeyboardKey(Key_OEM4),
CKeyboardKey(Key_OEM5),
CKeyboardKey(Key_OEM6),
CKeyboardKey(Key_OEM7),
CKeyboardKey(Key_OEM8),
CKeyboardKey(Key_OEM102)
**/
};
CKeyboardLinux::CKeyboardLinux(QObject *parent) :
@@ -106,7 +123,7 @@ namespace BlackInput
{
QDir eventFiles(dir, QLatin1String("event*"), QDir::Name, QDir::System);
foreach(QFileInfo fileInfo, eventFiles.entryInfoList())
foreach (QFileInfo fileInfo, eventFiles.entryInfoList())
{
QString path = fileInfo.absoluteFilePath();
if (!m_keyboardDevices.contains(path))

View File

@@ -83,7 +83,24 @@ namespace BlackInput
{ kHIDUsage_KeyboardRightControl, Key_ControlRight },
{ kHIDUsage_KeyboardLeftControl, Key_ControlLeft },
{ kHIDUsage_KeyboardRightAlt, Key_AltRight },
{ kHIDUsage_KeyboardLeftAlt, Key_AltLeft },
{ kHIDUsage_KeyboardLeftAlt, Key_AltLeft }
/** fixme Missing ones
Key_Insert,
Key_Delete,
Key_Esc = 27,
Key_Space = 32,
CKeyboardKey(Key_NumpadEqual),
CKeyboardKey(Key_OEM1),
CKeyboardKey(Key_OEM2),
CKeyboardKey(Key_OEM3),
CKeyboardKey(Key_OEM4),
CKeyboardKey(Key_OEM5),
CKeyboardKey(Key_OEM6),
CKeyboardKey(Key_OEM7),
CKeyboardKey(Key_OEM8),
CKeyboardKey(Key_OEM102)
**/
};
CKeyboardMacOS::CKeyboardMacOS(QObject *parent) : IKeyboard(parent)

View File

@@ -68,9 +68,9 @@ namespace BlackInput
{ VK_TAB, Key_Tab },
{ VK_ESCAPE, Key_Esc },
{ VK_SPACE, Key_Space },
{ WM_DEADCHAR, Key_DeadGrave },
{ VK_INSERT, Key_Insert },
{ VK_DELETE, Key_Delete },
{ VK_MULTIPLY, Key_Multiply },
{ VK_OEM_COMMA, Key_Comma },
{ VK_NUMPAD0, Key_Numpad0 },
{ VK_NUMPAD1, Key_Numpad1 },
{ VK_NUMPAD2, Key_Numpad2 },
@@ -81,6 +81,17 @@ namespace BlackInput
{ VK_NUMPAD7, Key_Numpad7 },
{ VK_NUMPAD8, Key_Numpad8 },
{ VK_NUMPAD9, Key_Numpad9 },
{ VK_OEM_NEC_EQUAL, Key_NumpadEqual },
{ VK_OEM_COMMA, Key_Comma },
{ VK_OEM_1, Key_OEM1 },
{ VK_OEM_2, Key_OEM2 },
{ VK_OEM_3, Key_OEM3 },
{ VK_OEM_4, Key_OEM4 },
{ VK_OEM_5, Key_OEM5 },
{ VK_OEM_6, Key_OEM6 },
{ VK_OEM_7, Key_OEM7 },
{ VK_OEM_8, Key_OEM8 },
{ VK_OEM_102, Key_OEM102 }
};
return hash;
}

View File

@@ -68,11 +68,23 @@ namespace BlackMisc
case Key_Numpad7: return QStringLiteral("Num7");
case Key_Numpad8: return QStringLiteral("Num8");
case Key_Numpad9: return QStringLiteral("Num9");
case Key_NumpadEqual: return QStringLiteral("Num=");
case Key_Esc: return QStringLiteral("ESC");
case Key_Space: return QStringLiteral("Space");
case Key_DeadGrave: return QStringLiteral("DeadGrave");
case Key_Tab: return QStringLiteral("Tab");
case Key_Back: return QStringLiteral("Backspace");
case Key_Insert: return QStringLiteral("Insert");
case Key_Delete: return QStringLiteral("Delete");
case Key_OEM1: return QStringLiteral("OEM1");
case Key_OEM2: return QStringLiteral("OEM2");
case Key_OEM3: return QStringLiteral("OEM3");
case Key_OEM4: return QStringLiteral("OEM4");
case Key_OEM5: return QStringLiteral("OEM5");
case Key_OEM6: return QStringLiteral("OEM6");
case Key_OEM7: return QStringLiteral("OEM7");
case Key_OEM8: return QStringLiteral("OEM8");
case Key_OEM102: return QStringLiteral("OEM102");
case Key_DeadGrave: return QStringLiteral("DeadGrave");
default: return QChar::fromLatin1(static_cast<char>(m_keyCode));
}
}

View File

@@ -49,6 +49,8 @@ namespace BlackMisc
CKeyboardKey(Key_Tab),
CKeyboardKey(Key_Esc),
CKeyboardKey(Key_Space),
CKeyboardKey(Key_Delete),
CKeyboardKey(Key_Insert),
CKeyboardKey(Key_DeadGrave),
CKeyboardKey(Key_A),
CKeyboardKey(Key_B),
@@ -95,7 +97,17 @@ namespace BlackMisc
CKeyboardKey(Key_Numpad6),
CKeyboardKey(Key_Numpad7),
CKeyboardKey(Key_Numpad8),
CKeyboardKey(Key_Numpad9)
CKeyboardKey(Key_Numpad9),
CKeyboardKey(Key_NumpadEqual),
CKeyboardKey(Key_OEM1),
CKeyboardKey(Key_OEM2),
CKeyboardKey(Key_OEM3),
CKeyboardKey(Key_OEM4),
CKeyboardKey(Key_OEM5),
CKeyboardKey(Key_OEM6),
CKeyboardKey(Key_OEM7),
CKeyboardKey(Key_OEM8),
CKeyboardKey(Key_OEM102)
};
return allKeys;

View File

@@ -18,6 +18,7 @@ namespace BlackMisc
namespace Input
{
//! Key code
//! http://www.kbdlayout.info/
enum KeyCode
{
Key_Unknown,
@@ -29,6 +30,8 @@ namespace BlackMisc
Key_AltRight,
Key_Back,
Key_Tab,
Key_Insert,
Key_Delete,
Key_Esc = 27,
Key_Space = 32,
Key_DeadGrave, // message is sent for a combining key, such as a diacritic.
@@ -87,6 +90,17 @@ namespace BlackMisc
Key_Numpad7,
Key_Numpad8,
Key_Numpad9,
Key_NumpadEqual,
// OEM Keys
Key_OEM1,
Key_OEM2,
Key_OEM3,
Key_OEM4,
Key_OEM5,
Key_OEM6,
Key_OEM7,
Key_OEM8,
Key_OEM102
};
} //namespace