Modifier states returned from x backend should be 100% correct now
This commit is contained in:
@@ -113,13 +113,14 @@ func (backend *Backend) handleKeyPress (
|
||||
keyEvent := *event.KeyPressEvent
|
||||
button, num := backend.keycodeToButton(keyEvent.Detail, keyEvent.State)
|
||||
backend.callbackManager.RunPress (button, stone.Modifiers {
|
||||
// FIXME these may not be correct in all cases
|
||||
Shift: (keyEvent.State & xproto.ModMaskShift) > 0,
|
||||
Control: (keyEvent.State & xproto.ModMaskControl) > 0,
|
||||
Alt: (keyEvent.State & xproto.ModMask1) > 0,
|
||||
// Meta: (keyEvent.State & xproto.??) > 0,
|
||||
Super: (keyEvent.State & xproto.ModMask4) > 0,
|
||||
// Hyper: (keyEvent.State & xproto.??) > 0,
|
||||
Shift:
|
||||
(keyEvent.State & xproto.ModMaskShift) > 0 ||
|
||||
(keyEvent.State & backend.modifierMasks.shiftLock) > 0,
|
||||
Control: (keyEvent.State & xproto.ModMaskControl) > 0,
|
||||
Alt: (keyEvent.State & backend.modifierMasks.alt) > 0,
|
||||
Meta: (keyEvent.State & backend.modifierMasks.meta) > 0,
|
||||
Super: (keyEvent.State & backend.modifierMasks.super) > 0,
|
||||
Hyper: (keyEvent.State & backend.modifierMasks.hyper) > 0,
|
||||
NumberPad: num,
|
||||
})
|
||||
}
|
||||
|
||||
@@ -81,6 +81,11 @@ func factory (
|
||||
backend.modifierMasks.shiftLock = backend.keysymToMask(0xFFE6)
|
||||
backend.modifierMasks.numLock = backend.keysymToMask(0xFF7F)
|
||||
backend.modifierMasks.modeSwitch = backend.keysymToMask(0xFF7E)
|
||||
|
||||
backend.modifierMasks.hyper = backend.keysymToMask(0xffed)
|
||||
backend.modifierMasks.super = backend.keysymToMask(0xffeb)
|
||||
backend.modifierMasks.meta = backend.keysymToMask(0xffe7)
|
||||
backend.modifierMasks.alt = backend.keysymToMask(0xffe9)
|
||||
|
||||
// create the window
|
||||
backend.window.Create (
|
||||
|
||||
@@ -48,6 +48,11 @@ type Backend struct {
|
||||
shiftLock uint16
|
||||
numLock uint16
|
||||
modeSwitch uint16
|
||||
|
||||
alt uint16
|
||||
meta uint16
|
||||
super uint16
|
||||
hyper uint16
|
||||
}
|
||||
|
||||
windowBoundsClean bool
|
||||
|
||||
Reference in New Issue
Block a user