Full keyboard mode, Ctrl/Alt/Super, dead keys, shift levels
- Full (iPad Pro) mode: every typing key from the keymap, number row, tab, caps lock, ctrl/super/alt; shifted symbol shown above and flickable - Dead keys compose with the locale's XKB compose table - Ctrl/Alt/Super stick like shift and turn keys into shortcuts; a tapped or held shift joins shortcuts and non-text keys, auto-shift and caps lock don't - Auto-capitalization and caps lock only capitalize letters; the user's shift picks the keymap's shifted level - Mode switch in settings keeps key size by resizing the window Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
+5
-5
@@ -1,6 +1,6 @@
|
||||
#pragma once
|
||||
|
||||
#include "layout/KeymapLetters.h"
|
||||
#include "layout/KeymapKeys.h"
|
||||
#include "layout/LayoutBuilder.h"
|
||||
#include "layout/LayoutLoader.h"
|
||||
|
||||
@@ -26,7 +26,7 @@ inline Layout builtinTemplate()
|
||||
return *layout;
|
||||
}
|
||||
|
||||
inline KeymapLetters letters(const char *layout, const char *variant = nullptr)
|
||||
inline KeymapKeys keymapKeys(const char *layout, const char *variant = nullptr)
|
||||
{
|
||||
const std::unique_ptr<xkb_context, void (*)(xkb_context *)> context(
|
||||
xkb_context_new(XKB_CONTEXT_NO_ENVIRONMENT_NAMES), xkb_context_unref);
|
||||
@@ -36,12 +36,12 @@ inline KeymapLetters letters(const char *layout, const char *variant = nullptr)
|
||||
xkb_keymap_new_from_names(context.get(), &names, XKB_KEYMAP_COMPILE_NO_FLAGS), xkb_keymap_unref);
|
||||
if (!keymap)
|
||||
qFatal("no XKB keymap for %s", layout);
|
||||
return readKeymapLetters(keymap.get(), 0);
|
||||
return readKeymapKeys(keymap.get(), 0);
|
||||
}
|
||||
|
||||
inline Layout build(const char *layout, const char *variant = nullptr)
|
||||
inline Layout build(const char *layout, KeyboardMode mode = KeyboardMode::Compact)
|
||||
{
|
||||
return buildLayout(builtinTemplate(), letters(layout, variant));
|
||||
return buildLayout(builtinTemplate(), keymapKeys(layout), mode);
|
||||
}
|
||||
|
||||
} // namespace TestLayouts
|
||||
|
||||
Reference in New Issue
Block a user