From a48f183ee14cb042f594c5710f7c9e33a76dbeb1 Mon Sep 17 00:00:00 2001 From: Dustin Lieu Date: Fri, 16 Oct 2020 17:35:45 -0700 Subject: [PATCH] gui: Added special hotkey config rules for comma and semicolon --- src/gui/src/KeySequence.cpp | 21 +++++++++++---------- src/gui/test/HotkeyTests.cpp | 2 +- src/gui/test/KeySequenceTests.cpp | 4 ++-- 3 files changed, 14 insertions(+), 13 deletions(-) diff --git a/src/gui/src/KeySequence.cpp b/src/gui/src/KeySequence.cpp index a94aac28..ddf7d332 100644 --- a/src/gui/src/KeySequence.cpp +++ b/src/gui/src/KeySequence.cpp @@ -55,6 +55,8 @@ static const struct { Qt::Key_Help, "Help" }, { Qt::Key_Enter, "KP_Enter" }, { Qt::Key_Clear, "Clear" }, + { Qt::Key_Comma, "Comma" }, + { Qt::Key_Semicolon, "Semicolon" }, { Qt::Key_Back, "WWWBack" }, { Qt::Key_Forward, "WWWForward" }, @@ -211,23 +213,22 @@ QString KeySequence::keyToString(int key) // treat key pad like normal keys (FIXME: we should have another lookup table for keypad keys instead) key &= ~Qt::KeypadModifier; + // a special key? + int i = 0; + while (keyname[i].name) { + if (key == keyname[i].key) + return QString::fromUtf8(keyname[i].name); + i++; + } + // a printable 7 bit character? - if (key < 0x80 && key != Qt::Key_Space) + if (key < 0x80) return QChar(key & 0x7f).toLower(); // a function key? if (key >= Qt::Key_F1 && key <= Qt::Key_F35) return QString::fromUtf8("F%1").arg(key - Qt::Key_F1 + 1); - // a special key? - int i=0; - while (keyname[i].name) - { - if (key == keyname[i].key) - return QString::fromUtf8(keyname[i].name); - i++; - } - // representable in ucs2? if (key < 0x10000) return QString("\\u%1").arg(QChar(key).toLower().unicode(), 4, 16, QChar('0')); diff --git a/src/gui/test/HotkeyTests.cpp b/src/gui/test/HotkeyTests.cpp index be8741c3..0223f073 100644 --- a/src/gui/test/HotkeyTests.cpp +++ b/src/gui/test/HotkeyTests.cpp @@ -300,7 +300,7 @@ TEST(HotkeyToTexStreamTests, KeysCommaSingleAction) } }; ASSERT_EQ(hotkeyToStringViaTextStream(createHotkey(hotkey)), - "\tkeystroke(a+,+b) = keyDown(z,*)\n"); + "\tkeystroke(a+Comma+b) = keyDown(z,*)\n"); } TEST(HotkeyToTexStreamTests, KeysMultipleAction) diff --git a/src/gui/test/KeySequenceTests.cpp b/src/gui/test/KeySequenceTests.cpp index cc1743d9..9fa92732 100644 --- a/src/gui/test/KeySequenceTests.cpp +++ b/src/gui/test/KeySequenceTests.cpp @@ -133,9 +133,9 @@ TEST(KeySequenceTests, ToString) ASSERT_EQ(keySequenceToString({{Qt::Key_A, 0}, {Qt::Key_B, 0}}), "a+b"); ASSERT_EQ(keySequenceToString({{Qt::Key_A, 0}, {Qt::Key_Comma, 0}, {Qt::Key_B, 0}}), - "a+,+b"); + "a+Comma+b"); ASSERT_EQ(keySequenceToString({{Qt::Key_A, 0}, {Qt::Key_Semicolon, 0}, {Qt::Key_B, 0}}), - "a+;+b"); + "a+Semicolon+b"); ASSERT_EQ(keySequenceToString({{Qt::Key_A, 0}, {Qt::Key_Shift, Qt::ShiftModifier}, {Qt::Key_0, Qt::ShiftModifier}}), "a+Shift+0");