Preserve terminal feedback while coalescing repaints
This commit is contained in:
1 parent
8c26aad128
commit
e222d336a5
13 files changed
+321
-39
No files matched your search
@@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user