Problems found in Xl
I think extension events should be handled more flexible in XlImplMainLoop. Extensions ought be able to register different procedures for different event-codes.
Extension error messages should be registered.
Think again about taking advantage of keystate notify being immediately after focusin how this fits with extensions doing the same trick...
Missing requests: GetKeyboardControl, GetPointerControl, ChangeKeyboardControl, ChangePointerControl
Problems found in input extension semantics
Why do DeviceButtonStateNotify and DeviceKeyStateNotify contain MORE𡤎VENTS but DeviceValuator does not. It says nowhere that DeviceValuator are reported in order.
Why do replies repeat the opcode?
Problems found in input extension protocol doc
In a nutshell: It is terrible.
Why does protocol spec mention macros (chapter 2.7.)? Macros are not defined at this level; it better had the contents.
Encodings do not have event-offsets (called "code").
Encodings define DeviceValuator twice. The second definition of DeviceValuator defines "n" twice.
Protocol-spec uses in
OpenDevice: returns device←id: XID while encoding does not contain any bits for this field.
CloseDevice et all: device: DEVICE DEVICE is not defined.
Encoding has duplications with core protocol.
Encoding contains new errors; protocol does not.
Both GetDeviceControl and ChangeDeviceControl return a DEVICE←RESOLUTION. It ought to have different names or same fields.
Protocol-spec Proximity events contain axis-data; encoding does not.
Encodings for SetDeviceMode "3+first𡤎rror" is not comprehensible to me.
ListInputDevices: isXPointer, isXKeyboard order is different in protocol spec and encoding. This is of course not a bug but it is unconveniant and leads to errors.
2.7. Speaks about deviceButtonPressGrab; could it mean deviceButtonGrab?
In encoding of GrabDeviceButton there is a 1 byte field owner-events with a 2 byte suggested value for AnyModifier
In QueryDeviceState, it returns n = number of input classes. Is there a relationship between n and number of entries in list for LISTofINPUTSTATE?
In GetDeviceButtonMapping, protocol mentions an nmap parameter. This doesn't really exist according to encoding.
In GetDeviceModifierMapping, protocol mentions a count parameter. This doesn't really exist according to encoding.