Preserve terminal feedback while coalescing repaints

This commit is contained in:
Storm Dragon committed 2026-11-04 12:22:11 -05:00
1 parent 8c26aad128
commit e222d336a5
13 files changed
+321 -39

No files matched your search

+7 -4
View File
@@ -61,8 +61,8 @@ func lower_symbol(symbol uint32) uint32 { return uint32(C.xkb_keysym_to_lower(C.
// registration and event handling translate through shift pairs taken from
// the default XKB keymap (the XKB_DEFAULT_* environment, else libxkbcommon
// defaults). The monitor interface does not expose the compositor's keymap;
// when its layout differs from that keymap, shifted digit and punctuation
// chords keep the previous pass-through behavior instead of misfiring.
// shifted digit and punctuation chords therefore require these defaults to
// match the compositor's layout. The protocol cannot verify that match.
func shifted_symbol(symbol uint32) uint32 {
return uint32(C.xkb_keysym_to_upper(C.xkb_keysym_t(symbol)))
}
@@ -183,8 +183,11 @@ func make_grabs(configuration keyboardConfiguration, policy keyboardPolicy) ([]u
unique[keyGrab{shifted_symbol(chord.Symbol), mask}] = true
}
if mask&1 != 0 {
for _, symbol := range loadShiftPairs().shifted[chord.Symbol] {
unique[keyGrab{symbol, mask}] = true
pairs := loadShiftPairs()
for _, symbol := range pairs.shifted[chord.Symbol] {
if pairs.unshifted[symbol] == chord.Symbol {
unique[keyGrab{symbol, mask}] = true
}
}
}
}