Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/contour/helper.h
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ constexpr inline vtbackend::Modifiers makeModifiers(Qt::KeyboardModifiers qtModi

Modifiers modifiers {};

if (qtModifiers & Qt::KeypadModifier)
if (qtModifiers & Qt::GroupSwitchModifier)
modifiers |= Modifier::NumLock;

if (qtModifiers & Qt::AltModifier)
Expand Down
7 changes: 4 additions & 3 deletions src/vtbackend/InputGenerator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -154,13 +154,14 @@ std::string StandardKeyboardInputGenerator::selectNumpad(Modifiers modifiers,
if (modifiers.contains(Modifier::NumLock))
return select(modifiers, { .std = mapping.std, .mods = mapping.std, .appKeypad = mapping.std });

return select(modifiers, mapping);
return select(modifiers.without(Modifier::NumLock), mapping);
}

std::string StandardKeyboardInputGenerator::select(Modifiers modifiers, FunctionKeyMapping mapping) const
{
if (modifiers && !mapping.mods.empty())
return crispy::replace(mapping.mods, "{}"sv, makeVirtualTerminalParam(modifiers));
if (modifiers.without(Modifier::NumLock) && !mapping.mods.empty())
return crispy::replace(
mapping.mods, "{}"sv, makeVirtualTerminalParam(modifiers.without(Modifier::NumLock)));

auto const prefix = modifiers.contains(Modifier::Alt) ? "\033" : ""s;

Expand Down
5 changes: 5 additions & 0 deletions src/vtbackend/InputGenerator.h
Original file line number Diff line number Diff line change
Expand Up @@ -279,11 +279,16 @@ class StandardKeyboardInputGenerator: public KeyboardInputGenerator
}

protected:
/// Maps a function key to its corresponding VT sequences based on different modes and modifiers.
struct FunctionKeyMapping
{
/// Standard VT sequence.
std::string_view std {};
/// VT sequence when modifiers are pressed.
std::string_view mods {};
/// VT sequence when Application Cursor Keys mode is enabled.
std::string_view appCursor {};
/// VT sequence when Application Keypad mode is enabled.
std::string_view appKeypad {};
};

Expand Down
Loading