Skip to content

Commit

Permalink
fix(windows): Fix coninput not handling control sequences
Browse files Browse the repository at this point in the history
Thanks @robotastronaut for sharing their research in the Charm Discord server and for the initial fix.
In contrast to their fix, this should fully align with the key handling on Unix and fix other issues like Shift+Tab not working on Windows.
  • Loading branch information
Sculas committed Jun 18, 2024
1 parent ab28057 commit 2dbfc40
Showing 1 changed file with 12 additions and 2 deletions.
14 changes: 12 additions & 2 deletions key_windows.go
Original file line number Diff line number Diff line change
Expand Up @@ -39,9 +39,19 @@ func readConInputs(ctx context.Context, msgsch chan<- Msg, con windows.Handle) e
}

for i := 0; i < int(e.RepeatCount); i++ {
eventKeyType := keyType(e)
var runes []rune

// Add the character only if the key type is an actual character and not a control sequence.
// This mimics the behavior in readAnsiInputs where the character is also removed.
// We don't need to handle KeySpace here. See the comment in keyType().
if eventKeyType != KeyRunes {
runes = []rune{e.Char}
}

msgs = append(msgs, KeyMsg{
Type: keyType(e),
Runes: []rune{e.Char},
Type: eventKeyType,
Runes: runes,
Alt: e.ControlKeyState.Contains(coninput.LEFT_ALT_PRESSED | coninput.RIGHT_ALT_PRESSED),
})
}
Expand Down

0 comments on commit 2dbfc40

Please sign in to comment.