More long-press accents; number-row letters stay choices in full mode

- Template alternates cover Central/Eastern European, Turkish, Romanian,
  Baltic, Nordic and Esperanto letters, at most 11 per key
- Only letters on the letter rows are skipped as choices, so sk ť, ľ, š…
  are offered on their base letter in full mode too

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-14 22:46:13 +02:00
co-authored by Claude Opus 5.5
parent ac67ceac18
commit 076bc14e2f
3 changed files with 27 additions and 19 deletions
+6 -5
View File
@@ -101,14 +101,15 @@ Row expandPlaceholders(const Row &row, const KeymapKeys &keymap)
return result;
}
// Long-press choices per letter: the keymap's letters that have no key here
// first (they're what this language types), then the template's.
// Long-press choices per letter: the keymap's letters that have no letter key
// first (they're what this language types), then the template's. Letters on the
// number row (sk: ť) stay choices in full mode too: they're out of the way there.
void addAlternates(Layer &layer, const Layout &tmpl, const KeymapKeys &keymap)
{
QSet<QString> onKeys;
for (const Row &row : layer.rows) {
for (const KeyDef &key : row)
onKeys << key.label << key.shifted.toLower();
for (int row = 0; row < 3; ++row) {
for (const KeyDef &key : letterKeys(keymap, row, {}))
onKeys << key.label;
}
QHash<QString, QStringList> choices;