Add an AltGr key; full-mode letters flick to their AltGr symbol

The right alt in full mode is now AltGr: sticky like the other modifiers,
it types the keymap's third/fourth level (sk: AltGr+J = ') instead of an
Alt shortcut. In hold-keys mode it holds the physical right alt, since
KWin resets the modifier state after an ISO_Level3_Shift keysym.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-30 23:59:37 +01:00
co-authored by Claude Opus 5.5
parent 441c1d615b
commit b50667e508
18 changed files with 167 additions and 52 deletions
+13
View File
@@ -137,6 +137,19 @@ private Q_SLOTS:
QCOMPARE(letterKey(sk, u"l"_s).alternates.first(), u"ľ");
}
void fullModeLettersFlickToTheirAltGrSymbol()
{
const Layout sk = TestLayouts::build("sk", KeyboardMode::Full);
const KeyDef j = letterKey(sk, u"j"_s);
QCOMPARE(j.altGr, u"'");
QCOMPARE(j.flick, u"'");
QCOMPARE(j.text({ShiftLevel::None, true}), u"'");
QCOMPARE(letterKey(sk, u"ô"_s).flick, u"\""); // keys with a shifted symbol keep it
const KeyDef plus = letterKey(sk, u"+"_s);
QCOMPARE(plus.deadAt({ShiftLevel::Shifted, true}), quint32(XKB_KEY_dead_tilde));
QCOMPARE(plus.text({ShiftLevel::None, true}), u"!");
}
void noPlaceholdersRemain()
{
for (const Layer &layer : TestLayouts::build("us").layers) {