diff options
Diffstat (limited to 'nexgb/xinput')
| -rw-r--r-- | nexgb/xinput/xinput.go | 7219 | 
1 files changed, 7219 insertions, 0 deletions
| diff --git a/nexgb/xinput/xinput.go b/nexgb/xinput/xinput.go new file mode 100644 index 0000000..40635f3 --- /dev/null +++ b/nexgb/xinput/xinput.go @@ -0,0 +1,7219 @@ +package xinput + +/* +	This file was generated by xinput.xml on May 10 2012 4:20:28pm EDT. +	This file is automatically generated. Edit at your peril! +*/ + +import ( +	"github.com/BurntSushi/xgb" + +	"github.com/BurntSushi/xgb/xproto" +) + +// Init must be called before using the XInputExtension extension. +func Init(c *xgb.Conn) error { +	reply, err := xproto.QueryExtension(c, 15, "XInputExtension").Reply() +	switch { +	case err != nil: +		return err +	case !reply.Present: +		return xgb.Errorf("No extension named XInputExtension could be found on on the server.") +	} + +	xgb.ExtLock.Lock() +	c.Extensions["XInputExtension"] = reply.MajorOpcode +	for evNum, fun := range xgb.NewExtEventFuncs["XInputExtension"] { +		xgb.NewEventFuncs[int(reply.FirstEvent)+evNum] = fun +	} +	for errNum, fun := range xgb.NewExtErrorFuncs["XInputExtension"] { +		xgb.NewErrorFuncs[int(reply.FirstError)+errNum] = fun +	} +	xgb.ExtLock.Unlock() + +	return nil +} + +func init() { +	xgb.NewExtEventFuncs["XInputExtension"] = make(map[int]xgb.NewEventFun) +	xgb.NewExtErrorFuncs["XInputExtension"] = make(map[int]xgb.NewErrorFun) +} + +// Skipping definition for base type 'Void' + +// Skipping definition for base type 'Byte' + +// Skipping definition for base type 'Int8' + +// Skipping definition for base type 'Card16' + +// Skipping definition for base type 'Char' + +// Skipping definition for base type 'Card32' + +// Skipping definition for base type 'Double' + +// Skipping definition for base type 'Bool' + +// Skipping definition for base type 'Float' + +// Skipping definition for base type 'Card8' + +// Skipping definition for base type 'Int16' + +// Skipping definition for base type 'Int32' + +const ( +	ValuatorModeRelative = 0 +	ValuatorModeAbsolute = 1 +) + +const ( +	PropagateModeAddToList      = 0 +	PropagateModeDeleteFromList = 1 +) + +const ( +	DeviceUseIsXPointer           = 0 +	DeviceUseIsXKeyboard          = 1 +	DeviceUseIsXExtensionDevice   = 2 +	DeviceUseIsXExtensionKeyboard = 3 +	DeviceUseIsXExtensionPointer  = 4 +) + +const ( +	InputClassKey       = 0 +	InputClassButton    = 1 +	InputClassValuator  = 2 +	InputClassFeedback  = 3 +	InputClassProximity = 4 +	InputClassFocus     = 5 +	InputClassOther     = 6 +) + +const ( +	DeviceInputModeAsyncThisDevice   = 0 +	DeviceInputModeSyncThisDevice    = 1 +	DeviceInputModeReplayThisDevice  = 2 +	DeviceInputModeAsyncOtherDevices = 3 +	DeviceInputModeAsyncAll          = 4 +	DeviceInputModeSyncAll           = 5 +) + +const ( +	FeedbackClassKeyboard = 0 +	FeedbackClassPointer  = 1 +	FeedbackClassString   = 2 +	FeedbackClassInteger  = 3 +	FeedbackClassLed      = 4 +	FeedbackClassBell     = 5 +) + +type KeyCode byte + +type EventClass uint32 + +// 'DeviceInfo' struct definition +// Size: 8 +type DeviceInfo struct { +	DeviceType   xproto.Atom +	DeviceId     byte +	NumClassInfo byte +	DeviceUse    byte +	// padding: 1 bytes +} + +// Struct read DeviceInfo +func DeviceInfoRead(buf []byte, v *DeviceInfo) int { +	b := 0 + +	v.DeviceType = xproto.Atom(xgb.Get32(buf[b:])) +	b += 4 + +	v.DeviceId = buf[b] +	b += 1 + +	v.NumClassInfo = buf[b] +	b += 1 + +	v.DeviceUse = buf[b] +	b += 1 + +	b += 1 // padding + +	return b +} + +// Struct list read DeviceInfo +func DeviceInfoReadList(buf []byte, dest []DeviceInfo) int { +	b := 0 +	for i := 0; i < len(dest); i++ { +		dest[i] = DeviceInfo{} +		b += DeviceInfoRead(buf[b:], &dest[i]) +	} +	return xgb.Pad(b) +} + +// Struct write DeviceInfo +func (v DeviceInfo) Bytes() []byte { +	buf := make([]byte, 8) +	b := 0 + +	xgb.Put32(buf[b:], uint32(v.DeviceType)) +	b += 4 + +	buf[b] = v.DeviceId +	b += 1 + +	buf[b] = v.NumClassInfo +	b += 1 + +	buf[b] = v.DeviceUse +	b += 1 + +	b += 1 // padding + +	return buf +} + +// Write struct list DeviceInfo +func DeviceInfoListBytes(buf []byte, list []DeviceInfo) int { +	b := 0 +	var structBytes []byte +	for _, item := range list { +		structBytes = item.Bytes() +		copy(buf[b:], structBytes) +		b += xgb.Pad(len(structBytes)) +	} +	return b +} + +// 'InputInfo' struct definition +// Size: 2 +type InputInfo struct { +	ClassId byte +	Len     byte +} + +// Struct read InputInfo +func InputInfoRead(buf []byte, v *InputInfo) int { +	b := 0 + +	v.ClassId = buf[b] +	b += 1 + +	v.Len = buf[b] +	b += 1 + +	return b +} + +// Struct list read InputInfo +func InputInfoReadList(buf []byte, dest []InputInfo) int { +	b := 0 +	for i := 0; i < len(dest); i++ { +		dest[i] = InputInfo{} +		b += InputInfoRead(buf[b:], &dest[i]) +	} +	return xgb.Pad(b) +} + +// Struct write InputInfo +func (v InputInfo) Bytes() []byte { +	buf := make([]byte, 2) +	b := 0 + +	buf[b] = v.ClassId +	b += 1 + +	buf[b] = v.Len +	b += 1 + +	return buf +} + +// Write struct list InputInfo +func InputInfoListBytes(buf []byte, list []InputInfo) int { +	b := 0 +	var structBytes []byte +	for _, item := range list { +		structBytes = item.Bytes() +		copy(buf[b:], structBytes) +		b += xgb.Pad(len(structBytes)) +	} +	return b +} + +// 'KeyInfo' struct definition +// Size: 8 +type KeyInfo struct { +	ClassId    byte +	Len        byte +	MinKeycode KeyCode +	MaxKeycode KeyCode +	NumKeys    uint16 +	// padding: 2 bytes +} + +// Struct read KeyInfo +func KeyInfoRead(buf []byte, v *KeyInfo) int { +	b := 0 + +	v.ClassId = buf[b] +	b += 1 + +	v.Len = buf[b] +	b += 1 + +	v.MinKeycode = KeyCode(buf[b]) +	b += 1 + +	v.MaxKeycode = KeyCode(buf[b]) +	b += 1 + +	v.NumKeys = xgb.Get16(buf[b:]) +	b += 2 + +	b += 2 // padding + +	return b +} + +// Struct list read KeyInfo +func KeyInfoReadList(buf []byte, dest []KeyInfo) int { +	b := 0 +	for i := 0; i < len(dest); i++ { +		dest[i] = KeyInfo{} +		b += KeyInfoRead(buf[b:], &dest[i]) +	} +	return xgb.Pad(b) +} + +// Struct write KeyInfo +func (v KeyInfo) Bytes() []byte { +	buf := make([]byte, 8) +	b := 0 + +	buf[b] = v.ClassId +	b += 1 + +	buf[b] = v.Len +	b += 1 + +	buf[b] = byte(v.MinKeycode) +	b += 1 + +	buf[b] = byte(v.MaxKeycode) +	b += 1 + +	xgb.Put16(buf[b:], v.NumKeys) +	b += 2 + +	b += 2 // padding + +	return buf +} + +// Write struct list KeyInfo +func KeyInfoListBytes(buf []byte, list []KeyInfo) int { +	b := 0 +	var structBytes []byte +	for _, item := range list { +		structBytes = item.Bytes() +		copy(buf[b:], structBytes) +		b += xgb.Pad(len(structBytes)) +	} +	return b +} + +// 'ButtonInfo' struct definition +// Size: 4 +type ButtonInfo struct { +	ClassId    byte +	Len        byte +	NumButtons uint16 +} + +// Struct read ButtonInfo +func ButtonInfoRead(buf []byte, v *ButtonInfo) int { +	b := 0 + +	v.ClassId = buf[b] +	b += 1 + +	v.Len = buf[b] +	b += 1 + +	v.NumButtons = xgb.Get16(buf[b:]) +	b += 2 + +	return b +} + +// Struct list read ButtonInfo +func ButtonInfoReadList(buf []byte, dest []ButtonInfo) int { +	b := 0 +	for i := 0; i < len(dest); i++ { +		dest[i] = ButtonInfo{} +		b += ButtonInfoRead(buf[b:], &dest[i]) +	} +	return xgb.Pad(b) +} + +// Struct write ButtonInfo +func (v ButtonInfo) Bytes() []byte { +	buf := make([]byte, 4) +	b := 0 + +	buf[b] = v.ClassId +	b += 1 + +	buf[b] = v.Len +	b += 1 + +	xgb.Put16(buf[b:], v.NumButtons) +	b += 2 + +	return buf +} + +// Write struct list ButtonInfo +func ButtonInfoListBytes(buf []byte, list []ButtonInfo) int { +	b := 0 +	var structBytes []byte +	for _, item := range list { +		structBytes = item.Bytes() +		copy(buf[b:], structBytes) +		b += xgb.Pad(len(structBytes)) +	} +	return b +} + +// 'AxisInfo' struct definition +// Size: 12 +type AxisInfo struct { +	Resolution uint32 +	Minimum    int32 +	Maximum    int32 +} + +// Struct read AxisInfo +func AxisInfoRead(buf []byte, v *AxisInfo) int { +	b := 0 + +	v.Resolution = xgb.Get32(buf[b:]) +	b += 4 + +	v.Minimum = int32(xgb.Get32(buf[b:])) +	b += 4 + +	v.Maximum = int32(xgb.Get32(buf[b:])) +	b += 4 + +	return b +} + +// Struct list read AxisInfo +func AxisInfoReadList(buf []byte, dest []AxisInfo) int { +	b := 0 +	for i := 0; i < len(dest); i++ { +		dest[i] = AxisInfo{} +		b += AxisInfoRead(buf[b:], &dest[i]) +	} +	return xgb.Pad(b) +} + +// Struct write AxisInfo +func (v AxisInfo) Bytes() []byte { +	buf := make([]byte, 12) +	b := 0 + +	xgb.Put32(buf[b:], v.Resolution) +	b += 4 + +	xgb.Put32(buf[b:], uint32(v.Minimum)) +	b += 4 + +	xgb.Put32(buf[b:], uint32(v.Maximum)) +	b += 4 + +	return buf +} + +// Write struct list AxisInfo +func AxisInfoListBytes(buf []byte, list []AxisInfo) int { +	b := 0 +	var structBytes []byte +	for _, item := range list { +		structBytes = item.Bytes() +		copy(buf[b:], structBytes) +		b += xgb.Pad(len(structBytes)) +	} +	return b +} + +// 'ValuatorInfo' struct definition +// Size: (8 + xgb.Pad((int(AxesLen) * 12))) +type ValuatorInfo struct { +	ClassId    byte +	Len        byte +	AxesLen    byte +	Mode       byte +	MotionSize uint32 +	Axes       []AxisInfo // size: xgb.Pad((int(AxesLen) * 12)) +} + +// Struct read ValuatorInfo +func ValuatorInfoRead(buf []byte, v *ValuatorInfo) int { +	b := 0 + +	v.ClassId = buf[b] +	b += 1 + +	v.Len = buf[b] +	b += 1 + +	v.AxesLen = buf[b] +	b += 1 + +	v.Mode = buf[b] +	b += 1 + +	v.MotionSize = xgb.Get32(buf[b:]) +	b += 4 + +	v.Axes = make([]AxisInfo, v.AxesLen) +	b += AxisInfoReadList(buf[b:], v.Axes) + +	return b +} + +// Struct list read ValuatorInfo +func ValuatorInfoReadList(buf []byte, dest []ValuatorInfo) int { +	b := 0 +	for i := 0; i < len(dest); i++ { +		dest[i] = ValuatorInfo{} +		b += ValuatorInfoRead(buf[b:], &dest[i]) +	} +	return xgb.Pad(b) +} + +// Struct write ValuatorInfo +func (v ValuatorInfo) Bytes() []byte { +	buf := make([]byte, (8 + xgb.Pad((int(v.AxesLen) * 12)))) +	b := 0 + +	buf[b] = v.ClassId +	b += 1 + +	buf[b] = v.Len +	b += 1 + +	buf[b] = v.AxesLen +	b += 1 + +	buf[b] = v.Mode +	b += 1 + +	xgb.Put32(buf[b:], v.MotionSize) +	b += 4 + +	b += AxisInfoListBytes(buf[b:], v.Axes) + +	return buf +} + +// Write struct list ValuatorInfo +func ValuatorInfoListBytes(buf []byte, list []ValuatorInfo) int { +	b := 0 +	var structBytes []byte +	for _, item := range list { +		structBytes = item.Bytes() +		copy(buf[b:], structBytes) +		b += xgb.Pad(len(structBytes)) +	} +	return b +} + +// Struct list size ValuatorInfo +func ValuatorInfoListSize(list []ValuatorInfo) int { +	size := 0 +	for _, item := range list { +		size += (8 + xgb.Pad((int(item.AxesLen) * 12))) +	} +	return size +} + +// 'InputClassInfo' struct definition +// Size: 2 +type InputClassInfo struct { +	ClassId       byte +	EventTypeBase byte +} + +// Struct read InputClassInfo +func InputClassInfoRead(buf []byte, v *InputClassInfo) int { +	b := 0 + +	v.ClassId = buf[b] +	b += 1 + +	v.EventTypeBase = buf[b] +	b += 1 + +	return b +} + +// Struct list read InputClassInfo +func InputClassInfoReadList(buf []byte, dest []InputClassInfo) int { +	b := 0 +	for i := 0; i < len(dest); i++ { +		dest[i] = InputClassInfo{} +		b += InputClassInfoRead(buf[b:], &dest[i]) +	} +	return xgb.Pad(b) +} + +// Struct write InputClassInfo +func (v InputClassInfo) Bytes() []byte { +	buf := make([]byte, 2) +	b := 0 + +	buf[b] = v.ClassId +	b += 1 + +	buf[b] = v.EventTypeBase +	b += 1 + +	return buf +} + +// Write struct list InputClassInfo +func InputClassInfoListBytes(buf []byte, list []InputClassInfo) int { +	b := 0 +	var structBytes []byte +	for _, item := range list { +		structBytes = item.Bytes() +		copy(buf[b:], structBytes) +		b += xgb.Pad(len(structBytes)) +	} +	return b +} + +// 'DeviceTimeCoord' struct definition +// Size: 4 +type DeviceTimeCoord struct { +	Time xproto.Timestamp +} + +// Struct read DeviceTimeCoord +func DeviceTimeCoordRead(buf []byte, v *DeviceTimeCoord) int { +	b := 0 + +	v.Time = xproto.Timestamp(xgb.Get32(buf[b:])) +	b += 4 + +	return b +} + +// Struct list read DeviceTimeCoord +func DeviceTimeCoordReadList(buf []byte, dest []DeviceTimeCoord) int { +	b := 0 +	for i := 0; i < len(dest); i++ { +		dest[i] = DeviceTimeCoord{} +		b += DeviceTimeCoordRead(buf[b:], &dest[i]) +	} +	return xgb.Pad(b) +} + +// Struct write DeviceTimeCoord +func (v DeviceTimeCoord) Bytes() []byte { +	buf := make([]byte, 4) +	b := 0 + +	xgb.Put32(buf[b:], uint32(v.Time)) +	b += 4 + +	return buf +} + +// Write struct list DeviceTimeCoord +func DeviceTimeCoordListBytes(buf []byte, list []DeviceTimeCoord) int { +	b := 0 +	var structBytes []byte +	for _, item := range list { +		structBytes = item.Bytes() +		copy(buf[b:], structBytes) +		b += xgb.Pad(len(structBytes)) +	} +	return b +} + +// 'FeedbackState' struct definition +// Size: 4 +type FeedbackState struct { +	ClassId byte +	Id      byte +	Len     uint16 +} + +// Struct read FeedbackState +func FeedbackStateRead(buf []byte, v *FeedbackState) int { +	b := 0 + +	v.ClassId = buf[b] +	b += 1 + +	v.Id = buf[b] +	b += 1 + +	v.Len = xgb.Get16(buf[b:]) +	b += 2 + +	return b +} + +// Struct list read FeedbackState +func FeedbackStateReadList(buf []byte, dest []FeedbackState) int { +	b := 0 +	for i := 0; i < len(dest); i++ { +		dest[i] = FeedbackState{} +		b += FeedbackStateRead(buf[b:], &dest[i]) +	} +	return xgb.Pad(b) +} + +// Struct write FeedbackState +func (v FeedbackState) Bytes() []byte { +	buf := make([]byte, 4) +	b := 0 + +	buf[b] = v.ClassId +	b += 1 + +	buf[b] = v.Id +	b += 1 + +	xgb.Put16(buf[b:], v.Len) +	b += 2 + +	return buf +} + +// Write struct list FeedbackState +func FeedbackStateListBytes(buf []byte, list []FeedbackState) int { +	b := 0 +	var structBytes []byte +	for _, item := range list { +		structBytes = item.Bytes() +		copy(buf[b:], structBytes) +		b += xgb.Pad(len(structBytes)) +	} +	return b +} + +// 'KbdFeedbackState' struct definition +// Size: 52 +type KbdFeedbackState struct { +	ClassId          byte +	Id               byte +	Len              uint16 +	Pitch            uint16 +	Duration         uint16 +	LedMask          uint32 +	LedValues        uint32 +	GlobalAutoRepeat bool +	Click            byte +	Percent          byte +	// padding: 1 bytes +	AutoRepeats []byte // size: 32 +} + +// Struct read KbdFeedbackState +func KbdFeedbackStateRead(buf []byte, v *KbdFeedbackState) int { +	b := 0 + +	v.ClassId = buf[b] +	b += 1 + +	v.Id = buf[b] +	b += 1 + +	v.Len = xgb.Get16(buf[b:]) +	b += 2 + +	v.Pitch = xgb.Get16(buf[b:]) +	b += 2 + +	v.Duration = xgb.Get16(buf[b:]) +	b += 2 + +	v.LedMask = xgb.Get32(buf[b:]) +	b += 4 + +	v.LedValues = xgb.Get32(buf[b:]) +	b += 4 + +	if buf[b] == 1 { +		v.GlobalAutoRepeat = true +	} else { +		v.GlobalAutoRepeat = false +	} +	b += 1 + +	v.Click = buf[b] +	b += 1 + +	v.Percent = buf[b] +	b += 1 + +	b += 1 // padding + +	v.AutoRepeats = make([]byte, 32) +	copy(v.AutoRepeats[:32], buf[b:]) +	b += xgb.Pad(int(32)) + +	return b +} + +// Struct list read KbdFeedbackState +func KbdFeedbackStateReadList(buf []byte, dest []KbdFeedbackState) int { +	b := 0 +	for i := 0; i < len(dest); i++ { +		dest[i] = KbdFeedbackState{} +		b += KbdFeedbackStateRead(buf[b:], &dest[i]) +	} +	return xgb.Pad(b) +} + +// Struct write KbdFeedbackState +func (v KbdFeedbackState) Bytes() []byte { +	buf := make([]byte, 52) +	b := 0 + +	buf[b] = v.ClassId +	b += 1 + +	buf[b] = v.Id +	b += 1 + +	xgb.Put16(buf[b:], v.Len) +	b += 2 + +	xgb.Put16(buf[b:], v.Pitch) +	b += 2 + +	xgb.Put16(buf[b:], v.Duration) +	b += 2 + +	xgb.Put32(buf[b:], v.LedMask) +	b += 4 + +	xgb.Put32(buf[b:], v.LedValues) +	b += 4 + +	if v.GlobalAutoRepeat { +		buf[b] = 1 +	} else { +		buf[b] = 0 +	} +	b += 1 + +	buf[b] = v.Click +	b += 1 + +	buf[b] = v.Percent +	b += 1 + +	b += 1 // padding + +	copy(buf[b:], v.AutoRepeats[:32]) +	b += xgb.Pad(int(32)) + +	return buf +} + +// Write struct list KbdFeedbackState +func KbdFeedbackStateListBytes(buf []byte, list []KbdFeedbackState) int { +	b := 0 +	var structBytes []byte +	for _, item := range list { +		structBytes = item.Bytes() +		copy(buf[b:], structBytes) +		b += xgb.Pad(len(structBytes)) +	} +	return b +} + +// Struct list size KbdFeedbackState +func KbdFeedbackStateListSize(list []KbdFeedbackState) int { +	size := 0 +	for _ = range list { +		size += 52 +	} +	return size +} + +// 'PtrFeedbackState' struct definition +// Size: 12 +type PtrFeedbackState struct { +	ClassId byte +	Id      byte +	Len     uint16 +	// padding: 2 bytes +	AccelNum   uint16 +	AccelDenom uint16 +	Threshold  uint16 +} + +// Struct read PtrFeedbackState +func PtrFeedbackStateRead(buf []byte, v *PtrFeedbackState) int { +	b := 0 + +	v.ClassId = buf[b] +	b += 1 + +	v.Id = buf[b] +	b += 1 + +	v.Len = xgb.Get16(buf[b:]) +	b += 2 + +	b += 2 // padding + +	v.AccelNum = xgb.Get16(buf[b:]) +	b += 2 + +	v.AccelDenom = xgb.Get16(buf[b:]) +	b += 2 + +	v.Threshold = xgb.Get16(buf[b:]) +	b += 2 + +	return b +} + +// Struct list read PtrFeedbackState +func PtrFeedbackStateReadList(buf []byte, dest []PtrFeedbackState) int { +	b := 0 +	for i := 0; i < len(dest); i++ { +		dest[i] = PtrFeedbackState{} +		b += PtrFeedbackStateRead(buf[b:], &dest[i]) +	} +	return xgb.Pad(b) +} + +// Struct write PtrFeedbackState +func (v PtrFeedbackState) Bytes() []byte { +	buf := make([]byte, 12) +	b := 0 + +	buf[b] = v.ClassId +	b += 1 + +	buf[b] = v.Id +	b += 1 + +	xgb.Put16(buf[b:], v.Len) +	b += 2 + +	b += 2 // padding + +	xgb.Put16(buf[b:], v.AccelNum) +	b += 2 + +	xgb.Put16(buf[b:], v.AccelDenom) +	b += 2 + +	xgb.Put16(buf[b:], v.Threshold) +	b += 2 + +	return buf +} + +// Write struct list PtrFeedbackState +func PtrFeedbackStateListBytes(buf []byte, list []PtrFeedbackState) int { +	b := 0 +	var structBytes []byte +	for _, item := range list { +		structBytes = item.Bytes() +		copy(buf[b:], structBytes) +		b += xgb.Pad(len(structBytes)) +	} +	return b +} + +// 'IntegerFeedbackState' struct definition +// Size: 16 +type IntegerFeedbackState struct { +	ClassId    byte +	Id         byte +	Len        uint16 +	Resolution uint32 +	MinValue   int32 +	MaxValue   int32 +} + +// Struct read IntegerFeedbackState +func IntegerFeedbackStateRead(buf []byte, v *IntegerFeedbackState) int { +	b := 0 + +	v.ClassId = buf[b] +	b += 1 + +	v.Id = buf[b] +	b += 1 + +	v.Len = xgb.Get16(buf[b:]) +	b += 2 + +	v.Resolution = xgb.Get32(buf[b:]) +	b += 4 + +	v.MinValue = int32(xgb.Get32(buf[b:])) +	b += 4 + +	v.MaxValue = int32(xgb.Get32(buf[b:])) +	b += 4 + +	return b +} + +// Struct list read IntegerFeedbackState +func IntegerFeedbackStateReadList(buf []byte, dest []IntegerFeedbackState) int { +	b := 0 +	for i := 0; i < len(dest); i++ { +		dest[i] = IntegerFeedbackState{} +		b += IntegerFeedbackStateRead(buf[b:], &dest[i]) +	} +	return xgb.Pad(b) +} + +// Struct write IntegerFeedbackState +func (v IntegerFeedbackState) Bytes() []byte { +	buf := make([]byte, 16) +	b := 0 + +	buf[b] = v.ClassId +	b += 1 + +	buf[b] = v.Id +	b += 1 + +	xgb.Put16(buf[b:], v.Len) +	b += 2 + +	xgb.Put32(buf[b:], v.Resolution) +	b += 4 + +	xgb.Put32(buf[b:], uint32(v.MinValue)) +	b += 4 + +	xgb.Put32(buf[b:], uint32(v.MaxValue)) +	b += 4 + +	return buf +} + +// Write struct list IntegerFeedbackState +func IntegerFeedbackStateListBytes(buf []byte, list []IntegerFeedbackState) int { +	b := 0 +	var structBytes []byte +	for _, item := range list { +		structBytes = item.Bytes() +		copy(buf[b:], structBytes) +		b += xgb.Pad(len(structBytes)) +	} +	return b +} + +// 'StringFeedbackState' struct definition +// Size: (8 + xgb.Pad((int(NumKeysyms) * 4))) +type StringFeedbackState struct { +	ClassId    byte +	Id         byte +	Len        uint16 +	MaxSymbols uint16 +	NumKeysyms uint16 +	Keysyms    []xproto.Keysym // size: xgb.Pad((int(NumKeysyms) * 4)) +} + +// Struct read StringFeedbackState +func StringFeedbackStateRead(buf []byte, v *StringFeedbackState) int { +	b := 0 + +	v.ClassId = buf[b] +	b += 1 + +	v.Id = buf[b] +	b += 1 + +	v.Len = xgb.Get16(buf[b:]) +	b += 2 + +	v.MaxSymbols = xgb.Get16(buf[b:]) +	b += 2 + +	v.NumKeysyms = xgb.Get16(buf[b:]) +	b += 2 + +	v.Keysyms = make([]xproto.Keysym, v.NumKeysyms) +	for i := 0; i < int(v.NumKeysyms); i++ { +		v.Keysyms[i] = xproto.Keysym(xgb.Get32(buf[b:])) +		b += 4 +	} +	b = xgb.Pad(b) + +	return b +} + +// Struct list read StringFeedbackState +func StringFeedbackStateReadList(buf []byte, dest []StringFeedbackState) int { +	b := 0 +	for i := 0; i < len(dest); i++ { +		dest[i] = StringFeedbackState{} +		b += StringFeedbackStateRead(buf[b:], &dest[i]) +	} +	return xgb.Pad(b) +} + +// Struct write StringFeedbackState +func (v StringFeedbackState) Bytes() []byte { +	buf := make([]byte, (8 + xgb.Pad((int(v.NumKeysyms) * 4)))) +	b := 0 + +	buf[b] = v.ClassId +	b += 1 + +	buf[b] = v.Id +	b += 1 + +	xgb.Put16(buf[b:], v.Len) +	b += 2 + +	xgb.Put16(buf[b:], v.MaxSymbols) +	b += 2 + +	xgb.Put16(buf[b:], v.NumKeysyms) +	b += 2 + +	for i := 0; i < int(v.NumKeysyms); i++ { +		xgb.Put32(buf[b:], uint32(v.Keysyms[i])) +		b += 4 +	} +	b = xgb.Pad(b) + +	return buf +} + +// Write struct list StringFeedbackState +func StringFeedbackStateListBytes(buf []byte, list []StringFeedbackState) int { +	b := 0 +	var structBytes []byte +	for _, item := range list { +		structBytes = item.Bytes() +		copy(buf[b:], structBytes) +		b += xgb.Pad(len(structBytes)) +	} +	return b +} + +// Struct list size StringFeedbackState +func StringFeedbackStateListSize(list []StringFeedbackState) int { +	size := 0 +	for _, item := range list { +		size += (8 + xgb.Pad((int(item.NumKeysyms) * 4))) +	} +	return size +} + +// 'BellFeedbackState' struct definition +// Size: 12 +type BellFeedbackState struct { +	ClassId byte +	Id      byte +	Len     uint16 +	Percent byte +	// padding: 3 bytes +	Pitch    uint16 +	Duration uint16 +} + +// Struct read BellFeedbackState +func BellFeedbackStateRead(buf []byte, v *BellFeedbackState) int { +	b := 0 + +	v.ClassId = buf[b] +	b += 1 + +	v.Id = buf[b] +	b += 1 + +	v.Len = xgb.Get16(buf[b:]) +	b += 2 + +	v.Percent = buf[b] +	b += 1 + +	b += 3 // padding + +	v.Pitch = xgb.Get16(buf[b:]) +	b += 2 + +	v.Duration = xgb.Get16(buf[b:]) +	b += 2 + +	return b +} + +// Struct list read BellFeedbackState +func BellFeedbackStateReadList(buf []byte, dest []BellFeedbackState) int { +	b := 0 +	for i := 0; i < len(dest); i++ { +		dest[i] = BellFeedbackState{} +		b += BellFeedbackStateRead(buf[b:], &dest[i]) +	} +	return xgb.Pad(b) +} + +// Struct write BellFeedbackState +func (v BellFeedbackState) Bytes() []byte { +	buf := make([]byte, 12) +	b := 0 + +	buf[b] = v.ClassId +	b += 1 + +	buf[b] = v.Id +	b += 1 + +	xgb.Put16(buf[b:], v.Len) +	b += 2 + +	buf[b] = v.Percent +	b += 1 + +	b += 3 // padding + +	xgb.Put16(buf[b:], v.Pitch) +	b += 2 + +	xgb.Put16(buf[b:], v.Duration) +	b += 2 + +	return buf +} + +// Write struct list BellFeedbackState +func BellFeedbackStateListBytes(buf []byte, list []BellFeedbackState) int { +	b := 0 +	var structBytes []byte +	for _, item := range list { +		structBytes = item.Bytes() +		copy(buf[b:], structBytes) +		b += xgb.Pad(len(structBytes)) +	} +	return b +} + +// 'LedFeedbackState' struct definition +// Size: 12 +type LedFeedbackState struct { +	ClassId   byte +	Id        byte +	Len       uint16 +	LedMask   uint32 +	LedValues uint32 +} + +// Struct read LedFeedbackState +func LedFeedbackStateRead(buf []byte, v *LedFeedbackState) int { +	b := 0 + +	v.ClassId = buf[b] +	b += 1 + +	v.Id = buf[b] +	b += 1 + +	v.Len = xgb.Get16(buf[b:]) +	b += 2 + +	v.LedMask = xgb.Get32(buf[b:]) +	b += 4 + +	v.LedValues = xgb.Get32(buf[b:]) +	b += 4 + +	return b +} + +// Struct list read LedFeedbackState +func LedFeedbackStateReadList(buf []byte, dest []LedFeedbackState) int { +	b := 0 +	for i := 0; i < len(dest); i++ { +		dest[i] = LedFeedbackState{} +		b += LedFeedbackStateRead(buf[b:], &dest[i]) +	} +	return xgb.Pad(b) +} + +// Struct write LedFeedbackState +func (v LedFeedbackState) Bytes() []byte { +	buf := make([]byte, 12) +	b := 0 + +	buf[b] = v.ClassId +	b += 1 + +	buf[b] = v.Id +	b += 1 + +	xgb.Put16(buf[b:], v.Len) +	b += 2 + +	xgb.Put32(buf[b:], v.LedMask) +	b += 4 + +	xgb.Put32(buf[b:], v.LedValues) +	b += 4 + +	return buf +} + +// Write struct list LedFeedbackState +func LedFeedbackStateListBytes(buf []byte, list []LedFeedbackState) int { +	b := 0 +	var structBytes []byte +	for _, item := range list { +		structBytes = item.Bytes() +		copy(buf[b:], structBytes) +		b += xgb.Pad(len(structBytes)) +	} +	return b +} + +// 'FeedbackCtl' struct definition +// Size: 4 +type FeedbackCtl struct { +	ClassId byte +	Id      byte +	Len     uint16 +} + +// Struct read FeedbackCtl +func FeedbackCtlRead(buf []byte, v *FeedbackCtl) int { +	b := 0 + +	v.ClassId = buf[b] +	b += 1 + +	v.Id = buf[b] +	b += 1 + +	v.Len = xgb.Get16(buf[b:]) +	b += 2 + +	return b +} + +// Struct list read FeedbackCtl +func FeedbackCtlReadList(buf []byte, dest []FeedbackCtl) int { +	b := 0 +	for i := 0; i < len(dest); i++ { +		dest[i] = FeedbackCtl{} +		b += FeedbackCtlRead(buf[b:], &dest[i]) +	} +	return xgb.Pad(b) +} + +// Struct write FeedbackCtl +func (v FeedbackCtl) Bytes() []byte { +	buf := make([]byte, 4) +	b := 0 + +	buf[b] = v.ClassId +	b += 1 + +	buf[b] = v.Id +	b += 1 + +	xgb.Put16(buf[b:], v.Len) +	b += 2 + +	return buf +} + +// Write struct list FeedbackCtl +func FeedbackCtlListBytes(buf []byte, list []FeedbackCtl) int { +	b := 0 +	var structBytes []byte +	for _, item := range list { +		structBytes = item.Bytes() +		copy(buf[b:], structBytes) +		b += xgb.Pad(len(structBytes)) +	} +	return b +} + +// 'KbdFeedbackCtl' struct definition +// Size: 20 +type KbdFeedbackCtl struct { +	ClassId         byte +	Id              byte +	Len             uint16 +	Key             KeyCode +	AutoRepeatMode  byte +	KeyClickPercent int8 +	BellPercent     int8 +	BellPitch       int16 +	BellDuration    int16 +	LedMask         uint32 +	LedValues       uint32 +} + +// Struct read KbdFeedbackCtl +func KbdFeedbackCtlRead(buf []byte, v *KbdFeedbackCtl) int { +	b := 0 + +	v.ClassId = buf[b] +	b += 1 + +	v.Id = buf[b] +	b += 1 + +	v.Len = xgb.Get16(buf[b:]) +	b += 2 + +	v.Key = KeyCode(buf[b]) +	b += 1 + +	v.AutoRepeatMode = buf[b] +	b += 1 + +	v.KeyClickPercent = int8(buf[b]) +	b += 1 + +	v.BellPercent = int8(buf[b]) +	b += 1 + +	v.BellPitch = int16(xgb.Get16(buf[b:])) +	b += 2 + +	v.BellDuration = int16(xgb.Get16(buf[b:])) +	b += 2 + +	v.LedMask = xgb.Get32(buf[b:]) +	b += 4 + +	v.LedValues = xgb.Get32(buf[b:]) +	b += 4 + +	return b +} + +// Struct list read KbdFeedbackCtl +func KbdFeedbackCtlReadList(buf []byte, dest []KbdFeedbackCtl) int { +	b := 0 +	for i := 0; i < len(dest); i++ { +		dest[i] = KbdFeedbackCtl{} +		b += KbdFeedbackCtlRead(buf[b:], &dest[i]) +	} +	return xgb.Pad(b) +} + +// Struct write KbdFeedbackCtl +func (v KbdFeedbackCtl) Bytes() []byte { +	buf := make([]byte, 20) +	b := 0 + +	buf[b] = v.ClassId +	b += 1 + +	buf[b] = v.Id +	b += 1 + +	xgb.Put16(buf[b:], v.Len) +	b += 2 + +	buf[b] = byte(v.Key) +	b += 1 + +	buf[b] = v.AutoRepeatMode +	b += 1 + +	buf[b] = byte(v.KeyClickPercent) +	b += 1 + +	buf[b] = byte(v.BellPercent) +	b += 1 + +	xgb.Put16(buf[b:], uint16(v.BellPitch)) +	b += 2 + +	xgb.Put16(buf[b:], uint16(v.BellDuration)) +	b += 2 + +	xgb.Put32(buf[b:], v.LedMask) +	b += 4 + +	xgb.Put32(buf[b:], v.LedValues) +	b += 4 + +	return buf +} + +// Write struct list KbdFeedbackCtl +func KbdFeedbackCtlListBytes(buf []byte, list []KbdFeedbackCtl) int { +	b := 0 +	var structBytes []byte +	for _, item := range list { +		structBytes = item.Bytes() +		copy(buf[b:], structBytes) +		b += xgb.Pad(len(structBytes)) +	} +	return b +} + +// 'PtrFeedbackCtl' struct definition +// Size: 12 +type PtrFeedbackCtl struct { +	ClassId byte +	Id      byte +	Len     uint16 +	// padding: 2 bytes +	Num       int16 +	Denom     int16 +	Threshold int16 +} + +// Struct read PtrFeedbackCtl +func PtrFeedbackCtlRead(buf []byte, v *PtrFeedbackCtl) int { +	b := 0 + +	v.ClassId = buf[b] +	b += 1 + +	v.Id = buf[b] +	b += 1 + +	v.Len = xgb.Get16(buf[b:]) +	b += 2 + +	b += 2 // padding + +	v.Num = int16(xgb.Get16(buf[b:])) +	b += 2 + +	v.Denom = int16(xgb.Get16(buf[b:])) +	b += 2 + +	v.Threshold = int16(xgb.Get16(buf[b:])) +	b += 2 + +	return b +} + +// Struct list read PtrFeedbackCtl +func PtrFeedbackCtlReadList(buf []byte, dest []PtrFeedbackCtl) int { +	b := 0 +	for i := 0; i < len(dest); i++ { +		dest[i] = PtrFeedbackCtl{} +		b += PtrFeedbackCtlRead(buf[b:], &dest[i]) +	} +	return xgb.Pad(b) +} + +// Struct write PtrFeedbackCtl +func (v PtrFeedbackCtl) Bytes() []byte { +	buf := make([]byte, 12) +	b := 0 + +	buf[b] = v.ClassId +	b += 1 + +	buf[b] = v.Id +	b += 1 + +	xgb.Put16(buf[b:], v.Len) +	b += 2 + +	b += 2 // padding + +	xgb.Put16(buf[b:], uint16(v.Num)) +	b += 2 + +	xgb.Put16(buf[b:], uint16(v.Denom)) +	b += 2 + +	xgb.Put16(buf[b:], uint16(v.Threshold)) +	b += 2 + +	return buf +} + +// Write struct list PtrFeedbackCtl +func PtrFeedbackCtlListBytes(buf []byte, list []PtrFeedbackCtl) int { +	b := 0 +	var structBytes []byte +	for _, item := range list { +		structBytes = item.Bytes() +		copy(buf[b:], structBytes) +		b += xgb.Pad(len(structBytes)) +	} +	return b +} + +// 'IntegerFeedbackCtl' struct definition +// Size: 8 +type IntegerFeedbackCtl struct { +	ClassId      byte +	Id           byte +	Len          uint16 +	IntToDisplay int32 +} + +// Struct read IntegerFeedbackCtl +func IntegerFeedbackCtlRead(buf []byte, v *IntegerFeedbackCtl) int { +	b := 0 + +	v.ClassId = buf[b] +	b += 1 + +	v.Id = buf[b] +	b += 1 + +	v.Len = xgb.Get16(buf[b:]) +	b += 2 + +	v.IntToDisplay = int32(xgb.Get32(buf[b:])) +	b += 4 + +	return b +} + +// Struct list read IntegerFeedbackCtl +func IntegerFeedbackCtlReadList(buf []byte, dest []IntegerFeedbackCtl) int { +	b := 0 +	for i := 0; i < len(dest); i++ { +		dest[i] = IntegerFeedbackCtl{} +		b += IntegerFeedbackCtlRead(buf[b:], &dest[i]) +	} +	return xgb.Pad(b) +} + +// Struct write IntegerFeedbackCtl +func (v IntegerFeedbackCtl) Bytes() []byte { +	buf := make([]byte, 8) +	b := 0 + +	buf[b] = v.ClassId +	b += 1 + +	buf[b] = v.Id +	b += 1 + +	xgb.Put16(buf[b:], v.Len) +	b += 2 + +	xgb.Put32(buf[b:], uint32(v.IntToDisplay)) +	b += 4 + +	return buf +} + +// Write struct list IntegerFeedbackCtl +func IntegerFeedbackCtlListBytes(buf []byte, list []IntegerFeedbackCtl) int { +	b := 0 +	var structBytes []byte +	for _, item := range list { +		structBytes = item.Bytes() +		copy(buf[b:], structBytes) +		b += xgb.Pad(len(structBytes)) +	} +	return b +} + +// 'StringFeedbackCtl' struct definition +// Size: (8 + xgb.Pad((int(NumKeysyms) * 4))) +type StringFeedbackCtl struct { +	ClassId byte +	Id      byte +	Len     uint16 +	// padding: 2 bytes +	NumKeysyms uint16 +	Keysyms    []xproto.Keysym // size: xgb.Pad((int(NumKeysyms) * 4)) +} + +// Struct read StringFeedbackCtl +func StringFeedbackCtlRead(buf []byte, v *StringFeedbackCtl) int { +	b := 0 + +	v.ClassId = buf[b] +	b += 1 + +	v.Id = buf[b] +	b += 1 + +	v.Len = xgb.Get16(buf[b:]) +	b += 2 + +	b += 2 // padding + +	v.NumKeysyms = xgb.Get16(buf[b:]) +	b += 2 + +	v.Keysyms = make([]xproto.Keysym, v.NumKeysyms) +	for i := 0; i < int(v.NumKeysyms); i++ { +		v.Keysyms[i] = xproto.Keysym(xgb.Get32(buf[b:])) +		b += 4 +	} +	b = xgb.Pad(b) + +	return b +} + +// Struct list read StringFeedbackCtl +func StringFeedbackCtlReadList(buf []byte, dest []StringFeedbackCtl) int { +	b := 0 +	for i := 0; i < len(dest); i++ { +		dest[i] = StringFeedbackCtl{} +		b += StringFeedbackCtlRead(buf[b:], &dest[i]) +	} +	return xgb.Pad(b) +} + +// Struct write StringFeedbackCtl +func (v StringFeedbackCtl) Bytes() []byte { +	buf := make([]byte, (8 + xgb.Pad((int(v.NumKeysyms) * 4)))) +	b := 0 + +	buf[b] = v.ClassId +	b += 1 + +	buf[b] = v.Id +	b += 1 + +	xgb.Put16(buf[b:], v.Len) +	b += 2 + +	b += 2 // padding + +	xgb.Put16(buf[b:], v.NumKeysyms) +	b += 2 + +	for i := 0; i < int(v.NumKeysyms); i++ { +		xgb.Put32(buf[b:], uint32(v.Keysyms[i])) +		b += 4 +	} +	b = xgb.Pad(b) + +	return buf +} + +// Write struct list StringFeedbackCtl +func StringFeedbackCtlListBytes(buf []byte, list []StringFeedbackCtl) int { +	b := 0 +	var structBytes []byte +	for _, item := range list { +		structBytes = item.Bytes() +		copy(buf[b:], structBytes) +		b += xgb.Pad(len(structBytes)) +	} +	return b +} + +// Struct list size StringFeedbackCtl +func StringFeedbackCtlListSize(list []StringFeedbackCtl) int { +	size := 0 +	for _, item := range list { +		size += (8 + xgb.Pad((int(item.NumKeysyms) * 4))) +	} +	return size +} + +// 'BellFeedbackCtl' struct definition +// Size: 12 +type BellFeedbackCtl struct { +	ClassId byte +	Id      byte +	Len     uint16 +	Percent int8 +	// padding: 3 bytes +	Pitch    int16 +	Duration int16 +} + +// Struct read BellFeedbackCtl +func BellFeedbackCtlRead(buf []byte, v *BellFeedbackCtl) int { +	b := 0 + +	v.ClassId = buf[b] +	b += 1 + +	v.Id = buf[b] +	b += 1 + +	v.Len = xgb.Get16(buf[b:]) +	b += 2 + +	v.Percent = int8(buf[b]) +	b += 1 + +	b += 3 // padding + +	v.Pitch = int16(xgb.Get16(buf[b:])) +	b += 2 + +	v.Duration = int16(xgb.Get16(buf[b:])) +	b += 2 + +	return b +} + +// Struct list read BellFeedbackCtl +func BellFeedbackCtlReadList(buf []byte, dest []BellFeedbackCtl) int { +	b := 0 +	for i := 0; i < len(dest); i++ { +		dest[i] = BellFeedbackCtl{} +		b += BellFeedbackCtlRead(buf[b:], &dest[i]) +	} +	return xgb.Pad(b) +} + +// Struct write BellFeedbackCtl +func (v BellFeedbackCtl) Bytes() []byte { +	buf := make([]byte, 12) +	b := 0 + +	buf[b] = v.ClassId +	b += 1 + +	buf[b] = v.Id +	b += 1 + +	xgb.Put16(buf[b:], v.Len) +	b += 2 + +	buf[b] = byte(v.Percent) +	b += 1 + +	b += 3 // padding + +	xgb.Put16(buf[b:], uint16(v.Pitch)) +	b += 2 + +	xgb.Put16(buf[b:], uint16(v.Duration)) +	b += 2 + +	return buf +} + +// Write struct list BellFeedbackCtl +func BellFeedbackCtlListBytes(buf []byte, list []BellFeedbackCtl) int { +	b := 0 +	var structBytes []byte +	for _, item := range list { +		structBytes = item.Bytes() +		copy(buf[b:], structBytes) +		b += xgb.Pad(len(structBytes)) +	} +	return b +} + +// 'LedFeedbackCtl' struct definition +// Size: 12 +type LedFeedbackCtl struct { +	ClassId   byte +	Id        byte +	Len       uint16 +	LedMask   uint32 +	LedValues uint32 +} + +// Struct read LedFeedbackCtl +func LedFeedbackCtlRead(buf []byte, v *LedFeedbackCtl) int { +	b := 0 + +	v.ClassId = buf[b] +	b += 1 + +	v.Id = buf[b] +	b += 1 + +	v.Len = xgb.Get16(buf[b:]) +	b += 2 + +	v.LedMask = xgb.Get32(buf[b:]) +	b += 4 + +	v.LedValues = xgb.Get32(buf[b:]) +	b += 4 + +	return b +} + +// Struct list read LedFeedbackCtl +func LedFeedbackCtlReadList(buf []byte, dest []LedFeedbackCtl) int { +	b := 0 +	for i := 0; i < len(dest); i++ { +		dest[i] = LedFeedbackCtl{} +		b += LedFeedbackCtlRead(buf[b:], &dest[i]) +	} +	return xgb.Pad(b) +} + +// Struct write LedFeedbackCtl +func (v LedFeedbackCtl) Bytes() []byte { +	buf := make([]byte, 12) +	b := 0 + +	buf[b] = v.ClassId +	b += 1 + +	buf[b] = v.Id +	b += 1 + +	xgb.Put16(buf[b:], v.Len) +	b += 2 + +	xgb.Put32(buf[b:], v.LedMask) +	b += 4 + +	xgb.Put32(buf[b:], v.LedValues) +	b += 4 + +	return buf +} + +// Write struct list LedFeedbackCtl +func LedFeedbackCtlListBytes(buf []byte, list []LedFeedbackCtl) int { +	b := 0 +	var structBytes []byte +	for _, item := range list { +		structBytes = item.Bytes() +		copy(buf[b:], structBytes) +		b += xgb.Pad(len(structBytes)) +	} +	return b +} + +// 'InputState' struct definition +// Size: 3 +type InputState struct { +	ClassId  byte +	Len      byte +	NumItems byte +} + +// Struct read InputState +func InputStateRead(buf []byte, v *InputState) int { +	b := 0 + +	v.ClassId = buf[b] +	b += 1 + +	v.Len = buf[b] +	b += 1 + +	v.NumItems = buf[b] +	b += 1 + +	return b +} + +// Struct list read InputState +func InputStateReadList(buf []byte, dest []InputState) int { +	b := 0 +	for i := 0; i < len(dest); i++ { +		dest[i] = InputState{} +		b += InputStateRead(buf[b:], &dest[i]) +	} +	return xgb.Pad(b) +} + +// Struct write InputState +func (v InputState) Bytes() []byte { +	buf := make([]byte, 3) +	b := 0 + +	buf[b] = v.ClassId +	b += 1 + +	buf[b] = v.Len +	b += 1 + +	buf[b] = v.NumItems +	b += 1 + +	return buf +} + +// Write struct list InputState +func InputStateListBytes(buf []byte, list []InputState) int { +	b := 0 +	var structBytes []byte +	for _, item := range list { +		structBytes = item.Bytes() +		copy(buf[b:], structBytes) +		b += xgb.Pad(len(structBytes)) +	} +	return b +} + +// 'KeyState' struct definition +// Size: 36 +type KeyState struct { +	ClassId byte +	Len     byte +	NumKeys byte +	// padding: 1 bytes +	Keys []byte // size: 32 +} + +// Struct read KeyState +func KeyStateRead(buf []byte, v *KeyState) int { +	b := 0 + +	v.ClassId = buf[b] +	b += 1 + +	v.Len = buf[b] +	b += 1 + +	v.NumKeys = buf[b] +	b += 1 + +	b += 1 // padding + +	v.Keys = make([]byte, 32) +	copy(v.Keys[:32], buf[b:]) +	b += xgb.Pad(int(32)) + +	return b +} + +// Struct list read KeyState +func KeyStateReadList(buf []byte, dest []KeyState) int { +	b := 0 +	for i := 0; i < len(dest); i++ { +		dest[i] = KeyState{} +		b += KeyStateRead(buf[b:], &dest[i]) +	} +	return xgb.Pad(b) +} + +// Struct write KeyState +func (v KeyState) Bytes() []byte { +	buf := make([]byte, 36) +	b := 0 + +	buf[b] = v.ClassId +	b += 1 + +	buf[b] = v.Len +	b += 1 + +	buf[b] = v.NumKeys +	b += 1 + +	b += 1 // padding + +	copy(buf[b:], v.Keys[:32]) +	b += xgb.Pad(int(32)) + +	return buf +} + +// Write struct list KeyState +func KeyStateListBytes(buf []byte, list []KeyState) int { +	b := 0 +	var structBytes []byte +	for _, item := range list { +		structBytes = item.Bytes() +		copy(buf[b:], structBytes) +		b += xgb.Pad(len(structBytes)) +	} +	return b +} + +// Struct list size KeyState +func KeyStateListSize(list []KeyState) int { +	size := 0 +	for _ = range list { +		size += 36 +	} +	return size +} + +// 'ButtonState' struct definition +// Size: 36 +type ButtonState struct { +	ClassId    byte +	Len        byte +	NumButtons byte +	// padding: 1 bytes +	Buttons []byte // size: 32 +} + +// Struct read ButtonState +func ButtonStateRead(buf []byte, v *ButtonState) int { +	b := 0 + +	v.ClassId = buf[b] +	b += 1 + +	v.Len = buf[b] +	b += 1 + +	v.NumButtons = buf[b] +	b += 1 + +	b += 1 // padding + +	v.Buttons = make([]byte, 32) +	copy(v.Buttons[:32], buf[b:]) +	b += xgb.Pad(int(32)) + +	return b +} + +// Struct list read ButtonState +func ButtonStateReadList(buf []byte, dest []ButtonState) int { +	b := 0 +	for i := 0; i < len(dest); i++ { +		dest[i] = ButtonState{} +		b += ButtonStateRead(buf[b:], &dest[i]) +	} +	return xgb.Pad(b) +} + +// Struct write ButtonState +func (v ButtonState) Bytes() []byte { +	buf := make([]byte, 36) +	b := 0 + +	buf[b] = v.ClassId +	b += 1 + +	buf[b] = v.Len +	b += 1 + +	buf[b] = v.NumButtons +	b += 1 + +	b += 1 // padding + +	copy(buf[b:], v.Buttons[:32]) +	b += xgb.Pad(int(32)) + +	return buf +} + +// Write struct list ButtonState +func ButtonStateListBytes(buf []byte, list []ButtonState) int { +	b := 0 +	var structBytes []byte +	for _, item := range list { +		structBytes = item.Bytes() +		copy(buf[b:], structBytes) +		b += xgb.Pad(len(structBytes)) +	} +	return b +} + +// Struct list size ButtonState +func ButtonStateListSize(list []ButtonState) int { +	size := 0 +	for _ = range list { +		size += 36 +	} +	return size +} + +// 'ValuatorState' struct definition +// Size: (4 + xgb.Pad((int(NumValuators) * 4))) +type ValuatorState struct { +	ClassId      byte +	Len          byte +	NumValuators byte +	Mode         byte +	Valuators    []uint32 // size: xgb.Pad((int(NumValuators) * 4)) +} + +// Struct read ValuatorState +func ValuatorStateRead(buf []byte, v *ValuatorState) int { +	b := 0 + +	v.ClassId = buf[b] +	b += 1 + +	v.Len = buf[b] +	b += 1 + +	v.NumValuators = buf[b] +	b += 1 + +	v.Mode = buf[b] +	b += 1 + +	v.Valuators = make([]uint32, v.NumValuators) +	for i := 0; i < int(v.NumValuators); i++ { +		v.Valuators[i] = xgb.Get32(buf[b:]) +		b += 4 +	} +	b = xgb.Pad(b) + +	return b +} + +// Struct list read ValuatorState +func ValuatorStateReadList(buf []byte, dest []ValuatorState) int { +	b := 0 +	for i := 0; i < len(dest); i++ { +		dest[i] = ValuatorState{} +		b += ValuatorStateRead(buf[b:], &dest[i]) +	} +	return xgb.Pad(b) +} + +// Struct write ValuatorState +func (v ValuatorState) Bytes() []byte { +	buf := make([]byte, (4 + xgb.Pad((int(v.NumValuators) * 4)))) +	b := 0 + +	buf[b] = v.ClassId +	b += 1 + +	buf[b] = v.Len +	b += 1 + +	buf[b] = v.NumValuators +	b += 1 + +	buf[b] = v.Mode +	b += 1 + +	for i := 0; i < int(v.NumValuators); i++ { +		xgb.Put32(buf[b:], v.Valuators[i]) +		b += 4 +	} +	b = xgb.Pad(b) + +	return buf +} + +// Write struct list ValuatorState +func ValuatorStateListBytes(buf []byte, list []ValuatorState) int { +	b := 0 +	var structBytes []byte +	for _, item := range list { +		structBytes = item.Bytes() +		copy(buf[b:], structBytes) +		b += xgb.Pad(len(structBytes)) +	} +	return b +} + +// Struct list size ValuatorState +func ValuatorStateListSize(list []ValuatorState) int { +	size := 0 +	for _, item := range list { +		size += (4 + xgb.Pad((int(item.NumValuators) * 4))) +	} +	return size +} + +// 'DeviceState' struct definition +// Size: 4 +type DeviceState struct { +	ControlId uint16 +	Len       uint16 +} + +// Struct read DeviceState +func DeviceStateRead(buf []byte, v *DeviceState) int { +	b := 0 + +	v.ControlId = xgb.Get16(buf[b:]) +	b += 2 + +	v.Len = xgb.Get16(buf[b:]) +	b += 2 + +	return b +} + +// Struct list read DeviceState +func DeviceStateReadList(buf []byte, dest []DeviceState) int { +	b := 0 +	for i := 0; i < len(dest); i++ { +		dest[i] = DeviceState{} +		b += DeviceStateRead(buf[b:], &dest[i]) +	} +	return xgb.Pad(b) +} + +// Struct write DeviceState +func (v DeviceState) Bytes() []byte { +	buf := make([]byte, 4) +	b := 0 + +	xgb.Put16(buf[b:], v.ControlId) +	b += 2 + +	xgb.Put16(buf[b:], v.Len) +	b += 2 + +	return buf +} + +// Write struct list DeviceState +func DeviceStateListBytes(buf []byte, list []DeviceState) int { +	b := 0 +	var structBytes []byte +	for _, item := range list { +		structBytes = item.Bytes() +		copy(buf[b:], structBytes) +		b += xgb.Pad(len(structBytes)) +	} +	return b +} + +// 'DeviceResolutionState' struct definition +// Size: (((8 + xgb.Pad((int(NumValuators) * 4))) + xgb.Pad((int(NumValuators) * 4))) + xgb.Pad((int(NumValuators) * 4))) +type DeviceResolutionState struct { +	ControlId        uint16 +	Len              uint16 +	NumValuators     uint32 +	ResolutionValues []uint32 // size: xgb.Pad((int(NumValuators) * 4)) +	ResolutionMin    []uint32 // size: xgb.Pad((int(NumValuators) * 4)) +	ResolutionMax    []uint32 // size: xgb.Pad((int(NumValuators) * 4)) +} + +// Struct read DeviceResolutionState +func DeviceResolutionStateRead(buf []byte, v *DeviceResolutionState) int { +	b := 0 + +	v.ControlId = xgb.Get16(buf[b:]) +	b += 2 + +	v.Len = xgb.Get16(buf[b:]) +	b += 2 + +	v.NumValuators = xgb.Get32(buf[b:]) +	b += 4 + +	v.ResolutionValues = make([]uint32, v.NumValuators) +	for i := 0; i < int(v.NumValuators); i++ { +		v.ResolutionValues[i] = xgb.Get32(buf[b:]) +		b += 4 +	} +	b = xgb.Pad(b) + +	v.ResolutionMin = make([]uint32, v.NumValuators) +	for i := 0; i < int(v.NumValuators); i++ { +		v.ResolutionMin[i] = xgb.Get32(buf[b:]) +		b += 4 +	} +	b = xgb.Pad(b) + +	v.ResolutionMax = make([]uint32, v.NumValuators) +	for i := 0; i < int(v.NumValuators); i++ { +		v.ResolutionMax[i] = xgb.Get32(buf[b:]) +		b += 4 +	} +	b = xgb.Pad(b) + +	return b +} + +// Struct list read DeviceResolutionState +func DeviceResolutionStateReadList(buf []byte, dest []DeviceResolutionState) int { +	b := 0 +	for i := 0; i < len(dest); i++ { +		dest[i] = DeviceResolutionState{} +		b += DeviceResolutionStateRead(buf[b:], &dest[i]) +	} +	return xgb.Pad(b) +} + +// Struct write DeviceResolutionState +func (v DeviceResolutionState) Bytes() []byte { +	buf := make([]byte, (((8 + xgb.Pad((int(v.NumValuators) * 4))) + xgb.Pad((int(v.NumValuators) * 4))) + xgb.Pad((int(v.NumValuators) * 4)))) +	b := 0 + +	xgb.Put16(buf[b:], v.ControlId) +	b += 2 + +	xgb.Put16(buf[b:], v.Len) +	b += 2 + +	xgb.Put32(buf[b:], v.NumValuators) +	b += 4 + +	for i := 0; i < int(v.NumValuators); i++ { +		xgb.Put32(buf[b:], v.ResolutionValues[i]) +		b += 4 +	} +	b = xgb.Pad(b) + +	for i := 0; i < int(v.NumValuators); i++ { +		xgb.Put32(buf[b:], v.ResolutionMin[i]) +		b += 4 +	} +	b = xgb.Pad(b) + +	for i := 0; i < int(v.NumValuators); i++ { +		xgb.Put32(buf[b:], v.ResolutionMax[i]) +		b += 4 +	} +	b = xgb.Pad(b) + +	return buf +} + +// Write struct list DeviceResolutionState +func DeviceResolutionStateListBytes(buf []byte, list []DeviceResolutionState) int { +	b := 0 +	var structBytes []byte +	for _, item := range list { +		structBytes = item.Bytes() +		copy(buf[b:], structBytes) +		b += xgb.Pad(len(structBytes)) +	} +	return b +} + +// Struct list size DeviceResolutionState +func DeviceResolutionStateListSize(list []DeviceResolutionState) int { +	size := 0 +	for _, item := range list { +		size += (((8 + xgb.Pad((int(item.NumValuators) * 4))) + xgb.Pad((int(item.NumValuators) * 4))) + xgb.Pad((int(item.NumValuators) * 4))) +	} +	return size +} + +// 'DeviceAbsCalibState' struct definition +// Size: 36 +type DeviceAbsCalibState struct { +	ControlId       uint16 +	Len             uint16 +	MinX            int32 +	MaxX            int32 +	MinY            int32 +	MaxY            int32 +	FlipX           uint32 +	FlipY           uint32 +	Rotation        uint32 +	ButtonThreshold uint32 +} + +// Struct read DeviceAbsCalibState +func DeviceAbsCalibStateRead(buf []byte, v *DeviceAbsCalibState) int { +	b := 0 + +	v.ControlId = xgb.Get16(buf[b:]) +	b += 2 + +	v.Len = xgb.Get16(buf[b:]) +	b += 2 + +	v.MinX = int32(xgb.Get32(buf[b:])) +	b += 4 + +	v.MaxX = int32(xgb.Get32(buf[b:])) +	b += 4 + +	v.MinY = int32(xgb.Get32(buf[b:])) +	b += 4 + +	v.MaxY = int32(xgb.Get32(buf[b:])) +	b += 4 + +	v.FlipX = xgb.Get32(buf[b:]) +	b += 4 + +	v.FlipY = xgb.Get32(buf[b:]) +	b += 4 + +	v.Rotation = xgb.Get32(buf[b:]) +	b += 4 + +	v.ButtonThreshold = xgb.Get32(buf[b:]) +	b += 4 + +	return b +} + +// Struct list read DeviceAbsCalibState +func DeviceAbsCalibStateReadList(buf []byte, dest []DeviceAbsCalibState) int { +	b := 0 +	for i := 0; i < len(dest); i++ { +		dest[i] = DeviceAbsCalibState{} +		b += DeviceAbsCalibStateRead(buf[b:], &dest[i]) +	} +	return xgb.Pad(b) +} + +// Struct write DeviceAbsCalibState +func (v DeviceAbsCalibState) Bytes() []byte { +	buf := make([]byte, 36) +	b := 0 + +	xgb.Put16(buf[b:], v.ControlId) +	b += 2 + +	xgb.Put16(buf[b:], v.Len) +	b += 2 + +	xgb.Put32(buf[b:], uint32(v.MinX)) +	b += 4 + +	xgb.Put32(buf[b:], uint32(v.MaxX)) +	b += 4 + +	xgb.Put32(buf[b:], uint32(v.MinY)) +	b += 4 + +	xgb.Put32(buf[b:], uint32(v.MaxY)) +	b += 4 + +	xgb.Put32(buf[b:], v.FlipX) +	b += 4 + +	xgb.Put32(buf[b:], v.FlipY) +	b += 4 + +	xgb.Put32(buf[b:], v.Rotation) +	b += 4 + +	xgb.Put32(buf[b:], v.ButtonThreshold) +	b += 4 + +	return buf +} + +// Write struct list DeviceAbsCalibState +func DeviceAbsCalibStateListBytes(buf []byte, list []DeviceAbsCalibState) int { +	b := 0 +	var structBytes []byte +	for _, item := range list { +		structBytes = item.Bytes() +		copy(buf[b:], structBytes) +		b += xgb.Pad(len(structBytes)) +	} +	return b +} + +// 'DeviceAbsAreaState' struct definition +// Size: 28 +type DeviceAbsAreaState struct { +	ControlId uint16 +	Len       uint16 +	OffsetX   uint32 +	OffsetY   uint32 +	Width     uint32 +	Height    uint32 +	Screen    uint32 +	Following uint32 +} + +// Struct read DeviceAbsAreaState +func DeviceAbsAreaStateRead(buf []byte, v *DeviceAbsAreaState) int { +	b := 0 + +	v.ControlId = xgb.Get16(buf[b:]) +	b += 2 + +	v.Len = xgb.Get16(buf[b:]) +	b += 2 + +	v.OffsetX = xgb.Get32(buf[b:]) +	b += 4 + +	v.OffsetY = xgb.Get32(buf[b:]) +	b += 4 + +	v.Width = xgb.Get32(buf[b:]) +	b += 4 + +	v.Height = xgb.Get32(buf[b:]) +	b += 4 + +	v.Screen = xgb.Get32(buf[b:]) +	b += 4 + +	v.Following = xgb.Get32(buf[b:]) +	b += 4 + +	return b +} + +// Struct list read DeviceAbsAreaState +func DeviceAbsAreaStateReadList(buf []byte, dest []DeviceAbsAreaState) int { +	b := 0 +	for i := 0; i < len(dest); i++ { +		dest[i] = DeviceAbsAreaState{} +		b += DeviceAbsAreaStateRead(buf[b:], &dest[i]) +	} +	return xgb.Pad(b) +} + +// Struct write DeviceAbsAreaState +func (v DeviceAbsAreaState) Bytes() []byte { +	buf := make([]byte, 28) +	b := 0 + +	xgb.Put16(buf[b:], v.ControlId) +	b += 2 + +	xgb.Put16(buf[b:], v.Len) +	b += 2 + +	xgb.Put32(buf[b:], v.OffsetX) +	b += 4 + +	xgb.Put32(buf[b:], v.OffsetY) +	b += 4 + +	xgb.Put32(buf[b:], v.Width) +	b += 4 + +	xgb.Put32(buf[b:], v.Height) +	b += 4 + +	xgb.Put32(buf[b:], v.Screen) +	b += 4 + +	xgb.Put32(buf[b:], v.Following) +	b += 4 + +	return buf +} + +// Write struct list DeviceAbsAreaState +func DeviceAbsAreaStateListBytes(buf []byte, list []DeviceAbsAreaState) int { +	b := 0 +	var structBytes []byte +	for _, item := range list { +		structBytes = item.Bytes() +		copy(buf[b:], structBytes) +		b += xgb.Pad(len(structBytes)) +	} +	return b +} + +// 'DeviceCoreState' struct definition +// Size: 8 +type DeviceCoreState struct { +	ControlId uint16 +	Len       uint16 +	Status    byte +	Iscore    byte +	// padding: 2 bytes +} + +// Struct read DeviceCoreState +func DeviceCoreStateRead(buf []byte, v *DeviceCoreState) int { +	b := 0 + +	v.ControlId = xgb.Get16(buf[b:]) +	b += 2 + +	v.Len = xgb.Get16(buf[b:]) +	b += 2 + +	v.Status = buf[b] +	b += 1 + +	v.Iscore = buf[b] +	b += 1 + +	b += 2 // padding + +	return b +} + +// Struct list read DeviceCoreState +func DeviceCoreStateReadList(buf []byte, dest []DeviceCoreState) int { +	b := 0 +	for i := 0; i < len(dest); i++ { +		dest[i] = DeviceCoreState{} +		b += DeviceCoreStateRead(buf[b:], &dest[i]) +	} +	return xgb.Pad(b) +} + +// Struct write DeviceCoreState +func (v DeviceCoreState) Bytes() []byte { +	buf := make([]byte, 8) +	b := 0 + +	xgb.Put16(buf[b:], v.ControlId) +	b += 2 + +	xgb.Put16(buf[b:], v.Len) +	b += 2 + +	buf[b] = v.Status +	b += 1 + +	buf[b] = v.Iscore +	b += 1 + +	b += 2 // padding + +	return buf +} + +// Write struct list DeviceCoreState +func DeviceCoreStateListBytes(buf []byte, list []DeviceCoreState) int { +	b := 0 +	var structBytes []byte +	for _, item := range list { +		structBytes = item.Bytes() +		copy(buf[b:], structBytes) +		b += xgb.Pad(len(structBytes)) +	} +	return b +} + +// 'DeviceEnableState' struct definition +// Size: 8 +type DeviceEnableState struct { +	ControlId uint16 +	Len       uint16 +	Enable    byte +	// padding: 3 bytes +} + +// Struct read DeviceEnableState +func DeviceEnableStateRead(buf []byte, v *DeviceEnableState) int { +	b := 0 + +	v.ControlId = xgb.Get16(buf[b:]) +	b += 2 + +	v.Len = xgb.Get16(buf[b:]) +	b += 2 + +	v.Enable = buf[b] +	b += 1 + +	b += 3 // padding + +	return b +} + +// Struct list read DeviceEnableState +func DeviceEnableStateReadList(buf []byte, dest []DeviceEnableState) int { +	b := 0 +	for i := 0; i < len(dest); i++ { +		dest[i] = DeviceEnableState{} +		b += DeviceEnableStateRead(buf[b:], &dest[i]) +	} +	return xgb.Pad(b) +} + +// Struct write DeviceEnableState +func (v DeviceEnableState) Bytes() []byte { +	buf := make([]byte, 8) +	b := 0 + +	xgb.Put16(buf[b:], v.ControlId) +	b += 2 + +	xgb.Put16(buf[b:], v.Len) +	b += 2 + +	buf[b] = v.Enable +	b += 1 + +	b += 3 // padding + +	return buf +} + +// Write struct list DeviceEnableState +func DeviceEnableStateListBytes(buf []byte, list []DeviceEnableState) int { +	b := 0 +	var structBytes []byte +	for _, item := range list { +		structBytes = item.Bytes() +		copy(buf[b:], structBytes) +		b += xgb.Pad(len(structBytes)) +	} +	return b +} + +// 'DeviceCtl' struct definition +// Size: 4 +type DeviceCtl struct { +	ControlId uint16 +	Len       uint16 +} + +// Struct read DeviceCtl +func DeviceCtlRead(buf []byte, v *DeviceCtl) int { +	b := 0 + +	v.ControlId = xgb.Get16(buf[b:]) +	b += 2 + +	v.Len = xgb.Get16(buf[b:]) +	b += 2 + +	return b +} + +// Struct list read DeviceCtl +func DeviceCtlReadList(buf []byte, dest []DeviceCtl) int { +	b := 0 +	for i := 0; i < len(dest); i++ { +		dest[i] = DeviceCtl{} +		b += DeviceCtlRead(buf[b:], &dest[i]) +	} +	return xgb.Pad(b) +} + +// Struct write DeviceCtl +func (v DeviceCtl) Bytes() []byte { +	buf := make([]byte, 4) +	b := 0 + +	xgb.Put16(buf[b:], v.ControlId) +	b += 2 + +	xgb.Put16(buf[b:], v.Len) +	b += 2 + +	return buf +} + +// Write struct list DeviceCtl +func DeviceCtlListBytes(buf []byte, list []DeviceCtl) int { +	b := 0 +	var structBytes []byte +	for _, item := range list { +		structBytes = item.Bytes() +		copy(buf[b:], structBytes) +		b += xgb.Pad(len(structBytes)) +	} +	return b +} + +// 'DeviceResolutionCtl' struct definition +// Size: (6 + xgb.Pad((int(NumValuators) * 4))) +type DeviceResolutionCtl struct { +	ControlId        uint16 +	Len              uint16 +	FirstValuator    byte +	NumValuators     byte +	ResolutionValues []uint32 // size: xgb.Pad((int(NumValuators) * 4)) +} + +// Struct read DeviceResolutionCtl +func DeviceResolutionCtlRead(buf []byte, v *DeviceResolutionCtl) int { +	b := 0 + +	v.ControlId = xgb.Get16(buf[b:]) +	b += 2 + +	v.Len = xgb.Get16(buf[b:]) +	b += 2 + +	v.FirstValuator = buf[b] +	b += 1 + +	v.NumValuators = buf[b] +	b += 1 + +	v.ResolutionValues = make([]uint32, v.NumValuators) +	for i := 0; i < int(v.NumValuators); i++ { +		v.ResolutionValues[i] = xgb.Get32(buf[b:]) +		b += 4 +	} +	b = xgb.Pad(b) + +	return b +} + +// Struct list read DeviceResolutionCtl +func DeviceResolutionCtlReadList(buf []byte, dest []DeviceResolutionCtl) int { +	b := 0 +	for i := 0; i < len(dest); i++ { +		dest[i] = DeviceResolutionCtl{} +		b += DeviceResolutionCtlRead(buf[b:], &dest[i]) +	} +	return xgb.Pad(b) +} + +// Struct write DeviceResolutionCtl +func (v DeviceResolutionCtl) Bytes() []byte { +	buf := make([]byte, (6 + xgb.Pad((int(v.NumValuators) * 4)))) +	b := 0 + +	xgb.Put16(buf[b:], v.ControlId) +	b += 2 + +	xgb.Put16(buf[b:], v.Len) +	b += 2 + +	buf[b] = v.FirstValuator +	b += 1 + +	buf[b] = v.NumValuators +	b += 1 + +	for i := 0; i < int(v.NumValuators); i++ { +		xgb.Put32(buf[b:], v.ResolutionValues[i]) +		b += 4 +	} +	b = xgb.Pad(b) + +	return buf +} + +// Write struct list DeviceResolutionCtl +func DeviceResolutionCtlListBytes(buf []byte, list []DeviceResolutionCtl) int { +	b := 0 +	var structBytes []byte +	for _, item := range list { +		structBytes = item.Bytes() +		copy(buf[b:], structBytes) +		b += xgb.Pad(len(structBytes)) +	} +	return b +} + +// Struct list size DeviceResolutionCtl +func DeviceResolutionCtlListSize(list []DeviceResolutionCtl) int { +	size := 0 +	for _, item := range list { +		size += (6 + xgb.Pad((int(item.NumValuators) * 4))) +	} +	return size +} + +// 'DeviceAbsCalibCtl' struct definition +// Size: 36 +type DeviceAbsCalibCtl struct { +	ControlId       uint16 +	Len             uint16 +	MinX            int32 +	MaxX            int32 +	MinY            int32 +	MaxY            int32 +	FlipX           uint32 +	FlipY           uint32 +	Rotation        uint32 +	ButtonThreshold uint32 +} + +// Struct read DeviceAbsCalibCtl +func DeviceAbsCalibCtlRead(buf []byte, v *DeviceAbsCalibCtl) int { +	b := 0 + +	v.ControlId = xgb.Get16(buf[b:]) +	b += 2 + +	v.Len = xgb.Get16(buf[b:]) +	b += 2 + +	v.MinX = int32(xgb.Get32(buf[b:])) +	b += 4 + +	v.MaxX = int32(xgb.Get32(buf[b:])) +	b += 4 + +	v.MinY = int32(xgb.Get32(buf[b:])) +	b += 4 + +	v.MaxY = int32(xgb.Get32(buf[b:])) +	b += 4 + +	v.FlipX = xgb.Get32(buf[b:]) +	b += 4 + +	v.FlipY = xgb.Get32(buf[b:]) +	b += 4 + +	v.Rotation = xgb.Get32(buf[b:]) +	b += 4 + +	v.ButtonThreshold = xgb.Get32(buf[b:]) +	b += 4 + +	return b +} + +// Struct list read DeviceAbsCalibCtl +func DeviceAbsCalibCtlReadList(buf []byte, dest []DeviceAbsCalibCtl) int { +	b := 0 +	for i := 0; i < len(dest); i++ { +		dest[i] = DeviceAbsCalibCtl{} +		b += DeviceAbsCalibCtlRead(buf[b:], &dest[i]) +	} +	return xgb.Pad(b) +} + +// Struct write DeviceAbsCalibCtl +func (v DeviceAbsCalibCtl) Bytes() []byte { +	buf := make([]byte, 36) +	b := 0 + +	xgb.Put16(buf[b:], v.ControlId) +	b += 2 + +	xgb.Put16(buf[b:], v.Len) +	b += 2 + +	xgb.Put32(buf[b:], uint32(v.MinX)) +	b += 4 + +	xgb.Put32(buf[b:], uint32(v.MaxX)) +	b += 4 + +	xgb.Put32(buf[b:], uint32(v.MinY)) +	b += 4 + +	xgb.Put32(buf[b:], uint32(v.MaxY)) +	b += 4 + +	xgb.Put32(buf[b:], v.FlipX) +	b += 4 + +	xgb.Put32(buf[b:], v.FlipY) +	b += 4 + +	xgb.Put32(buf[b:], v.Rotation) +	b += 4 + +	xgb.Put32(buf[b:], v.ButtonThreshold) +	b += 4 + +	return buf +} + +// Write struct list DeviceAbsCalibCtl +func DeviceAbsCalibCtlListBytes(buf []byte, list []DeviceAbsCalibCtl) int { +	b := 0 +	var structBytes []byte +	for _, item := range list { +		structBytes = item.Bytes() +		copy(buf[b:], structBytes) +		b += xgb.Pad(len(structBytes)) +	} +	return b +} + +// 'DeviceAbsAreaCtrl' struct definition +// Size: 28 +type DeviceAbsAreaCtrl struct { +	ControlId uint16 +	Len       uint16 +	OffsetX   uint32 +	OffsetY   uint32 +	Width     int32 +	Height    int32 +	Screen    int32 +	Following uint32 +} + +// Struct read DeviceAbsAreaCtrl +func DeviceAbsAreaCtrlRead(buf []byte, v *DeviceAbsAreaCtrl) int { +	b := 0 + +	v.ControlId = xgb.Get16(buf[b:]) +	b += 2 + +	v.Len = xgb.Get16(buf[b:]) +	b += 2 + +	v.OffsetX = xgb.Get32(buf[b:]) +	b += 4 + +	v.OffsetY = xgb.Get32(buf[b:]) +	b += 4 + +	v.Width = int32(xgb.Get32(buf[b:])) +	b += 4 + +	v.Height = int32(xgb.Get32(buf[b:])) +	b += 4 + +	v.Screen = int32(xgb.Get32(buf[b:])) +	b += 4 + +	v.Following = xgb.Get32(buf[b:]) +	b += 4 + +	return b +} + +// Struct list read DeviceAbsAreaCtrl +func DeviceAbsAreaCtrlReadList(buf []byte, dest []DeviceAbsAreaCtrl) int { +	b := 0 +	for i := 0; i < len(dest); i++ { +		dest[i] = DeviceAbsAreaCtrl{} +		b += DeviceAbsAreaCtrlRead(buf[b:], &dest[i]) +	} +	return xgb.Pad(b) +} + +// Struct write DeviceAbsAreaCtrl +func (v DeviceAbsAreaCtrl) Bytes() []byte { +	buf := make([]byte, 28) +	b := 0 + +	xgb.Put16(buf[b:], v.ControlId) +	b += 2 + +	xgb.Put16(buf[b:], v.Len) +	b += 2 + +	xgb.Put32(buf[b:], v.OffsetX) +	b += 4 + +	xgb.Put32(buf[b:], v.OffsetY) +	b += 4 + +	xgb.Put32(buf[b:], uint32(v.Width)) +	b += 4 + +	xgb.Put32(buf[b:], uint32(v.Height)) +	b += 4 + +	xgb.Put32(buf[b:], uint32(v.Screen)) +	b += 4 + +	xgb.Put32(buf[b:], v.Following) +	b += 4 + +	return buf +} + +// Write struct list DeviceAbsAreaCtrl +func DeviceAbsAreaCtrlListBytes(buf []byte, list []DeviceAbsAreaCtrl) int { +	b := 0 +	var structBytes []byte +	for _, item := range list { +		structBytes = item.Bytes() +		copy(buf[b:], structBytes) +		b += xgb.Pad(len(structBytes)) +	} +	return b +} + +// 'DeviceCoreCtrl' struct definition +// Size: 8 +type DeviceCoreCtrl struct { +	ControlId uint16 +	Len       uint16 +	Status    byte +	// padding: 3 bytes +} + +// Struct read DeviceCoreCtrl +func DeviceCoreCtrlRead(buf []byte, v *DeviceCoreCtrl) int { +	b := 0 + +	v.ControlId = xgb.Get16(buf[b:]) +	b += 2 + +	v.Len = xgb.Get16(buf[b:]) +	b += 2 + +	v.Status = buf[b] +	b += 1 + +	b += 3 // padding + +	return b +} + +// Struct list read DeviceCoreCtrl +func DeviceCoreCtrlReadList(buf []byte, dest []DeviceCoreCtrl) int { +	b := 0 +	for i := 0; i < len(dest); i++ { +		dest[i] = DeviceCoreCtrl{} +		b += DeviceCoreCtrlRead(buf[b:], &dest[i]) +	} +	return xgb.Pad(b) +} + +// Struct write DeviceCoreCtrl +func (v DeviceCoreCtrl) Bytes() []byte { +	buf := make([]byte, 8) +	b := 0 + +	xgb.Put16(buf[b:], v.ControlId) +	b += 2 + +	xgb.Put16(buf[b:], v.Len) +	b += 2 + +	buf[b] = v.Status +	b += 1 + +	b += 3 // padding + +	return buf +} + +// Write struct list DeviceCoreCtrl +func DeviceCoreCtrlListBytes(buf []byte, list []DeviceCoreCtrl) int { +	b := 0 +	var structBytes []byte +	for _, item := range list { +		structBytes = item.Bytes() +		copy(buf[b:], structBytes) +		b += xgb.Pad(len(structBytes)) +	} +	return b +} + +// 'DeviceEnableCtrl' struct definition +// Size: 8 +type DeviceEnableCtrl struct { +	ControlId uint16 +	Len       uint16 +	Enable    byte +	// padding: 3 bytes +} + +// Struct read DeviceEnableCtrl +func DeviceEnableCtrlRead(buf []byte, v *DeviceEnableCtrl) int { +	b := 0 + +	v.ControlId = xgb.Get16(buf[b:]) +	b += 2 + +	v.Len = xgb.Get16(buf[b:]) +	b += 2 + +	v.Enable = buf[b] +	b += 1 + +	b += 3 // padding + +	return b +} + +// Struct list read DeviceEnableCtrl +func DeviceEnableCtrlReadList(buf []byte, dest []DeviceEnableCtrl) int { +	b := 0 +	for i := 0; i < len(dest); i++ { +		dest[i] = DeviceEnableCtrl{} +		b += DeviceEnableCtrlRead(buf[b:], &dest[i]) +	} +	return xgb.Pad(b) +} + +// Struct write DeviceEnableCtrl +func (v DeviceEnableCtrl) Bytes() []byte { +	buf := make([]byte, 8) +	b := 0 + +	xgb.Put16(buf[b:], v.ControlId) +	b += 2 + +	xgb.Put16(buf[b:], v.Len) +	b += 2 + +	buf[b] = v.Enable +	b += 1 + +	b += 3 // padding + +	return buf +} + +// Write struct list DeviceEnableCtrl +func DeviceEnableCtrlListBytes(buf []byte, list []DeviceEnableCtrl) int { +	b := 0 +	var structBytes []byte +	for _, item := range list { +		structBytes = item.Bytes() +		copy(buf[b:], structBytes) +		b += xgb.Pad(len(structBytes)) +	} +	return b +} + +// Event definition DeviceValuator (0) +// Size: 32 + +const DeviceValuator = 0 + +type DeviceValuatorEvent struct { +	Sequence      uint16 +	DeviceId      byte +	DeviceState   uint16 +	NumValuators  byte +	FirstValuator byte +	Valuators     []int32 // size: 24 +} + +// Event read DeviceValuator +func DeviceValuatorEventNew(buf []byte) xgb.Event { +	v := DeviceValuatorEvent{} +	b := 1 // don't read event number + +	v.DeviceId = buf[b] +	b += 1 + +	v.Sequence = xgb.Get16(buf[b:]) +	b += 2 + +	v.DeviceState = xgb.Get16(buf[b:]) +	b += 2 + +	v.NumValuators = buf[b] +	b += 1 + +	v.FirstValuator = buf[b] +	b += 1 + +	v.Valuators = make([]int32, 6) +	for i := 0; i < int(6); i++ { +		v.Valuators[i] = int32(xgb.Get32(buf[b:])) +		b += 4 +	} +	b = xgb.Pad(b) + +	return v +} + +// Event write DeviceValuator +func (v DeviceValuatorEvent) Bytes() []byte { +	buf := make([]byte, 32) +	b := 0 + +	// write event number +	buf[b] = 0 +	b += 1 + +	buf[b] = v.DeviceId +	b += 1 + +	b += 2 // skip sequence number + +	xgb.Put16(buf[b:], v.DeviceState) +	b += 2 + +	buf[b] = v.NumValuators +	b += 1 + +	buf[b] = v.FirstValuator +	b += 1 + +	for i := 0; i < int(6); i++ { +		xgb.Put32(buf[b:], uint32(v.Valuators[i])) +		b += 4 +	} +	b = xgb.Pad(b) + +	return buf +} + +func (v DeviceValuatorEvent) ImplementsEvent() {} + +func (v DeviceValuatorEvent) SequenceId() uint16 { +	return v.Sequence +} + +func (v DeviceValuatorEvent) String() string { +	fieldVals := make([]string, 0, 5) +	fieldVals = append(fieldVals, xgb.Sprintf("Sequence: %d", v.Sequence)) +	fieldVals = append(fieldVals, xgb.Sprintf("DeviceId: %d", v.DeviceId)) +	fieldVals = append(fieldVals, xgb.Sprintf("DeviceState: %d", v.DeviceState)) +	fieldVals = append(fieldVals, xgb.Sprintf("NumValuators: %d", v.NumValuators)) +	fieldVals = append(fieldVals, xgb.Sprintf("FirstValuator: %d", v.FirstValuator)) +	return "DeviceValuator {" + xgb.StringsJoin(fieldVals, ", ") + "}" +} + +func init() { +	xgb.NewExtEventFuncs["XInputExtension"][0] = DeviceValuatorEventNew +} + +// Event definition DeviceKeyPress (1) +// Size: 32 + +const DeviceKeyPress = 1 + +type DeviceKeyPressEvent struct { +	Sequence   uint16 +	Detail     byte +	Time       xproto.Timestamp +	Root       xproto.Window +	Event      xproto.Window +	Child      xproto.Window +	RootX      int16 +	RootY      int16 +	EventX     int16 +	EventY     int16 +	State      uint16 +	SameScreen bool +	DeviceId   byte +} + +// Event read DeviceKeyPress +func DeviceKeyPressEventNew(buf []byte) xgb.Event { +	v := DeviceKeyPressEvent{} +	b := 1 // don't read event number + +	v.Detail = buf[b] +	b += 1 + +	v.Sequence = xgb.Get16(buf[b:]) +	b += 2 + +	v.Time = xproto.Timestamp(xgb.Get32(buf[b:])) +	b += 4 + +	v.Root = xproto.Window(xgb.Get32(buf[b:])) +	b += 4 + +	v.Event = xproto.Window(xgb.Get32(buf[b:])) +	b += 4 + +	v.Child = xproto.Window(xgb.Get32(buf[b:])) +	b += 4 + +	v.RootX = int16(xgb.Get16(buf[b:])) +	b += 2 + +	v.RootY = int16(xgb.Get16(buf[b:])) +	b += 2 + +	v.EventX = int16(xgb.Get16(buf[b:])) +	b += 2 + +	v.EventY = int16(xgb.Get16(buf[b:])) +	b += 2 + +	v.State = xgb.Get16(buf[b:]) +	b += 2 + +	if buf[b] == 1 { +		v.SameScreen = true +	} else { +		v.SameScreen = false +	} +	b += 1 + +	v.DeviceId = buf[b] +	b += 1 + +	return v +} + +// Event write DeviceKeyPress +func (v DeviceKeyPressEvent) Bytes() []byte { +	buf := make([]byte, 32) +	b := 0 + +	// write event number +	buf[b] = 1 +	b += 1 + +	buf[b] = v.Detail +	b += 1 + +	b += 2 // skip sequence number + +	xgb.Put32(buf[b:], uint32(v.Time)) +	b += 4 + +	xgb.Put32(buf[b:], uint32(v.Root)) +	b += 4 + +	xgb.Put32(buf[b:], uint32(v.Event)) +	b += 4 + +	xgb.Put32(buf[b:], uint32(v.Child)) +	b += 4 + +	xgb.Put16(buf[b:], uint16(v.RootX)) +	b += 2 + +	xgb.Put16(buf[b:], uint16(v.RootY)) +	b += 2 + +	xgb.Put16(buf[b:], uint16(v.EventX)) +	b += 2 + +	xgb.Put16(buf[b:], uint16(v.EventY)) +	b += 2 + +	xgb.Put16(buf[b:], v.State) +	b += 2 + +	if v.SameScreen { +		buf[b] = 1 +	} else { +		buf[b] = 0 +	} +	b += 1 + +	buf[b] = v.DeviceId +	b += 1 + +	return buf +} + +func (v DeviceKeyPressEvent) ImplementsEvent() {} + +func (v DeviceKeyPressEvent) SequenceId() uint16 { +	return v.Sequence +} + +func (v DeviceKeyPressEvent) String() string { +	fieldVals := make([]string, 0, 12) +	fieldVals = append(fieldVals, xgb.Sprintf("Sequence: %d", v.Sequence)) +	fieldVals = append(fieldVals, xgb.Sprintf("Detail: %d", v.Detail)) +	fieldVals = append(fieldVals, xgb.Sprintf("Time: %d", v.Time)) +	fieldVals = append(fieldVals, xgb.Sprintf("Root: %d", v.Root)) +	fieldVals = append(fieldVals, xgb.Sprintf("Event: %d", v.Event)) +	fieldVals = append(fieldVals, xgb.Sprintf("Child: %d", v.Child)) +	fieldVals = append(fieldVals, xgb.Sprintf("RootX: %d", v.RootX)) +	fieldVals = append(fieldVals, xgb.Sprintf("RootY: %d", v.RootY)) +	fieldVals = append(fieldVals, xgb.Sprintf("EventX: %d", v.EventX)) +	fieldVals = append(fieldVals, xgb.Sprintf("EventY: %d", v.EventY)) +	fieldVals = append(fieldVals, xgb.Sprintf("State: %d", v.State)) +	fieldVals = append(fieldVals, xgb.Sprintf("SameScreen: %t", v.SameScreen)) +	fieldVals = append(fieldVals, xgb.Sprintf("DeviceId: %d", v.DeviceId)) +	return "DeviceKeyPress {" + xgb.StringsJoin(fieldVals, ", ") + "}" +} + +func init() { +	xgb.NewExtEventFuncs["XInputExtension"][1] = DeviceKeyPressEventNew +} + +// Event definition FocusIn (6) +// Size: 32 + +const FocusIn = 6 + +type FocusInEvent struct { +	Sequence uint16 +	Detail   byte +	Time     xproto.Timestamp +	Window   xproto.Window +	Mode     byte +	DeviceId byte +	// padding: 18 bytes +} + +// Event read FocusIn +func FocusInEventNew(buf []byte) xgb.Event { +	v := FocusInEvent{} +	b := 1 // don't read event number + +	v.Detail = buf[b] +	b += 1 + +	v.Sequence = xgb.Get16(buf[b:]) +	b += 2 + +	v.Time = xproto.Timestamp(xgb.Get32(buf[b:])) +	b += 4 + +	v.Window = xproto.Window(xgb.Get32(buf[b:])) +	b += 4 + +	v.Mode = buf[b] +	b += 1 + +	v.DeviceId = buf[b] +	b += 1 + +	b += 18 // padding + +	return v +} + +// Event write FocusIn +func (v FocusInEvent) Bytes() []byte { +	buf := make([]byte, 32) +	b := 0 + +	// write event number +	buf[b] = 6 +	b += 1 + +	buf[b] = v.Detail +	b += 1 + +	b += 2 // skip sequence number + +	xgb.Put32(buf[b:], uint32(v.Time)) +	b += 4 + +	xgb.Put32(buf[b:], uint32(v.Window)) +	b += 4 + +	buf[b] = v.Mode +	b += 1 + +	buf[b] = v.DeviceId +	b += 1 + +	b += 18 // padding + +	return buf +} + +func (v FocusInEvent) ImplementsEvent() {} + +func (v FocusInEvent) SequenceId() uint16 { +	return v.Sequence +} + +func (v FocusInEvent) String() string { +	fieldVals := make([]string, 0, 6) +	fieldVals = append(fieldVals, xgb.Sprintf("Sequence: %d", v.Sequence)) +	fieldVals = append(fieldVals, xgb.Sprintf("Detail: %d", v.Detail)) +	fieldVals = append(fieldVals, xgb.Sprintf("Time: %d", v.Time)) +	fieldVals = append(fieldVals, xgb.Sprintf("Window: %d", v.Window)) +	fieldVals = append(fieldVals, xgb.Sprintf("Mode: %d", v.Mode)) +	fieldVals = append(fieldVals, xgb.Sprintf("DeviceId: %d", v.DeviceId)) +	return "FocusIn {" + xgb.StringsJoin(fieldVals, ", ") + "}" +} + +func init() { +	xgb.NewExtEventFuncs["XInputExtension"][6] = FocusInEventNew +} + +// Event definition DeviceStateNotify (10) +// Size: 32 + +const DeviceStateNotify = 10 + +type DeviceStateNotifyEvent struct { +	Sequence        uint16 +	DeviceId        byte +	Time            xproto.Timestamp +	NumKeys         byte +	NumButtons      byte +	NumValuators    byte +	ClassesReported byte +	Buttons         []byte   // size: 4 +	Keys            []byte   // size: 4 +	Valuators       []uint32 // size: 12 +} + +// Event read DeviceStateNotify +func DeviceStateNotifyEventNew(buf []byte) xgb.Event { +	v := DeviceStateNotifyEvent{} +	b := 1 // don't read event number + +	v.DeviceId = buf[b] +	b += 1 + +	v.Sequence = xgb.Get16(buf[b:]) +	b += 2 + +	v.Time = xproto.Timestamp(xgb.Get32(buf[b:])) +	b += 4 + +	v.NumKeys = buf[b] +	b += 1 + +	v.NumButtons = buf[b] +	b += 1 + +	v.NumValuators = buf[b] +	b += 1 + +	v.ClassesReported = buf[b] +	b += 1 + +	v.Buttons = make([]byte, 4) +	copy(v.Buttons[:4], buf[b:]) +	b += xgb.Pad(int(4)) + +	v.Keys = make([]byte, 4) +	copy(v.Keys[:4], buf[b:]) +	b += xgb.Pad(int(4)) + +	v.Valuators = make([]uint32, 3) +	for i := 0; i < int(3); i++ { +		v.Valuators[i] = xgb.Get32(buf[b:]) +		b += 4 +	} +	b = xgb.Pad(b) + +	return v +} + +// Event write DeviceStateNotify +func (v DeviceStateNotifyEvent) Bytes() []byte { +	buf := make([]byte, 32) +	b := 0 + +	// write event number +	buf[b] = 10 +	b += 1 + +	buf[b] = v.DeviceId +	b += 1 + +	b += 2 // skip sequence number + +	xgb.Put32(buf[b:], uint32(v.Time)) +	b += 4 + +	buf[b] = v.NumKeys +	b += 1 + +	buf[b] = v.NumButtons +	b += 1 + +	buf[b] = v.NumValuators +	b += 1 + +	buf[b] = v.ClassesReported +	b += 1 + +	copy(buf[b:], v.Buttons[:4]) +	b += xgb.Pad(int(4)) + +	copy(buf[b:], v.Keys[:4]) +	b += xgb.Pad(int(4)) + +	for i := 0; i < int(3); i++ { +		xgb.Put32(buf[b:], v.Valuators[i]) +		b += 4 +	} +	b = xgb.Pad(b) + +	return buf +} + +func (v DeviceStateNotifyEvent) ImplementsEvent() {} + +func (v DeviceStateNotifyEvent) SequenceId() uint16 { +	return v.Sequence +} + +func (v DeviceStateNotifyEvent) String() string { +	fieldVals := make([]string, 0, 9) +	fieldVals = append(fieldVals, xgb.Sprintf("Sequence: %d", v.Sequence)) +	fieldVals = append(fieldVals, xgb.Sprintf("DeviceId: %d", v.DeviceId)) +	fieldVals = append(fieldVals, xgb.Sprintf("Time: %d", v.Time)) +	fieldVals = append(fieldVals, xgb.Sprintf("NumKeys: %d", v.NumKeys)) +	fieldVals = append(fieldVals, xgb.Sprintf("NumButtons: %d", v.NumButtons)) +	fieldVals = append(fieldVals, xgb.Sprintf("NumValuators: %d", v.NumValuators)) +	fieldVals = append(fieldVals, xgb.Sprintf("ClassesReported: %d", v.ClassesReported)) +	return "DeviceStateNotify {" + xgb.StringsJoin(fieldVals, ", ") + "}" +} + +func init() { +	xgb.NewExtEventFuncs["XInputExtension"][10] = DeviceStateNotifyEventNew +} + +// Event definition DeviceMappingNotify (11) +// Size: 32 + +const DeviceMappingNotify = 11 + +type DeviceMappingNotifyEvent struct { +	Sequence     uint16 +	DeviceId     byte +	Request      byte +	FirstKeycode KeyCode +	Count        byte +	// padding: 1 bytes +	Time xproto.Timestamp +	// padding: 20 bytes +} + +// Event read DeviceMappingNotify +func DeviceMappingNotifyEventNew(buf []byte) xgb.Event { +	v := DeviceMappingNotifyEvent{} +	b := 1 // don't read event number + +	v.DeviceId = buf[b] +	b += 1 + +	v.Sequence = xgb.Get16(buf[b:]) +	b += 2 + +	v.Request = buf[b] +	b += 1 + +	v.FirstKeycode = KeyCode(buf[b]) +	b += 1 + +	v.Count = buf[b] +	b += 1 + +	b += 1 // padding + +	v.Time = xproto.Timestamp(xgb.Get32(buf[b:])) +	b += 4 + +	b += 20 // padding + +	return v +} + +// Event write DeviceMappingNotify +func (v DeviceMappingNotifyEvent) Bytes() []byte { +	buf := make([]byte, 32) +	b := 0 + +	// write event number +	buf[b] = 11 +	b += 1 + +	buf[b] = v.DeviceId +	b += 1 + +	b += 2 // skip sequence number + +	buf[b] = v.Request +	b += 1 + +	buf[b] = byte(v.FirstKeycode) +	b += 1 + +	buf[b] = v.Count +	b += 1 + +	b += 1 // padding + +	xgb.Put32(buf[b:], uint32(v.Time)) +	b += 4 + +	b += 20 // padding + +	return buf +} + +func (v DeviceMappingNotifyEvent) ImplementsEvent() {} + +func (v DeviceMappingNotifyEvent) SequenceId() uint16 { +	return v.Sequence +} + +func (v DeviceMappingNotifyEvent) String() string { +	fieldVals := make([]string, 0, 7) +	fieldVals = append(fieldVals, xgb.Sprintf("Sequence: %d", v.Sequence)) +	fieldVals = append(fieldVals, xgb.Sprintf("DeviceId: %d", v.DeviceId)) +	fieldVals = append(fieldVals, xgb.Sprintf("Request: %d", v.Request)) +	fieldVals = append(fieldVals, xgb.Sprintf("FirstKeycode: %d", v.FirstKeycode)) +	fieldVals = append(fieldVals, xgb.Sprintf("Count: %d", v.Count)) +	fieldVals = append(fieldVals, xgb.Sprintf("Time: %d", v.Time)) +	return "DeviceMappingNotify {" + xgb.StringsJoin(fieldVals, ", ") + "}" +} + +func init() { +	xgb.NewExtEventFuncs["XInputExtension"][11] = DeviceMappingNotifyEventNew +} + +// Event definition ChangeDeviceNotify (12) +// Size: 32 + +const ChangeDeviceNotify = 12 + +type ChangeDeviceNotifyEvent struct { +	Sequence uint16 +	DeviceId byte +	Time     xproto.Timestamp +	Request  byte +	// padding: 23 bytes +} + +// Event read ChangeDeviceNotify +func ChangeDeviceNotifyEventNew(buf []byte) xgb.Event { +	v := ChangeDeviceNotifyEvent{} +	b := 1 // don't read event number + +	v.DeviceId = buf[b] +	b += 1 + +	v.Sequence = xgb.Get16(buf[b:]) +	b += 2 + +	v.Time = xproto.Timestamp(xgb.Get32(buf[b:])) +	b += 4 + +	v.Request = buf[b] +	b += 1 + +	b += 23 // padding + +	return v +} + +// Event write ChangeDeviceNotify +func (v ChangeDeviceNotifyEvent) Bytes() []byte { +	buf := make([]byte, 32) +	b := 0 + +	// write event number +	buf[b] = 12 +	b += 1 + +	buf[b] = v.DeviceId +	b += 1 + +	b += 2 // skip sequence number + +	xgb.Put32(buf[b:], uint32(v.Time)) +	b += 4 + +	buf[b] = v.Request +	b += 1 + +	b += 23 // padding + +	return buf +} + +func (v ChangeDeviceNotifyEvent) ImplementsEvent() {} + +func (v ChangeDeviceNotifyEvent) SequenceId() uint16 { +	return v.Sequence +} + +func (v ChangeDeviceNotifyEvent) String() string { +	fieldVals := make([]string, 0, 4) +	fieldVals = append(fieldVals, xgb.Sprintf("Sequence: %d", v.Sequence)) +	fieldVals = append(fieldVals, xgb.Sprintf("DeviceId: %d", v.DeviceId)) +	fieldVals = append(fieldVals, xgb.Sprintf("Time: %d", v.Time)) +	fieldVals = append(fieldVals, xgb.Sprintf("Request: %d", v.Request)) +	return "ChangeDeviceNotify {" + xgb.StringsJoin(fieldVals, ", ") + "}" +} + +func init() { +	xgb.NewExtEventFuncs["XInputExtension"][12] = ChangeDeviceNotifyEventNew +} + +// Event definition DeviceKeyStateNotify (13) +// Size: 32 + +const DeviceKeyStateNotify = 13 + +type DeviceKeyStateNotifyEvent struct { +	Sequence uint16 +	DeviceId byte +	Keys     []byte // size: 28 +} + +// Event read DeviceKeyStateNotify +func DeviceKeyStateNotifyEventNew(buf []byte) xgb.Event { +	v := DeviceKeyStateNotifyEvent{} +	b := 1 // don't read event number + +	v.DeviceId = buf[b] +	b += 1 + +	v.Sequence = xgb.Get16(buf[b:]) +	b += 2 + +	v.Keys = make([]byte, 28) +	copy(v.Keys[:28], buf[b:]) +	b += xgb.Pad(int(28)) + +	return v +} + +// Event write DeviceKeyStateNotify +func (v DeviceKeyStateNotifyEvent) Bytes() []byte { +	buf := make([]byte, 32) +	b := 0 + +	// write event number +	buf[b] = 13 +	b += 1 + +	buf[b] = v.DeviceId +	b += 1 + +	b += 2 // skip sequence number + +	copy(buf[b:], v.Keys[:28]) +	b += xgb.Pad(int(28)) + +	return buf +} + +func (v DeviceKeyStateNotifyEvent) ImplementsEvent() {} + +func (v DeviceKeyStateNotifyEvent) SequenceId() uint16 { +	return v.Sequence +} + +func (v DeviceKeyStateNotifyEvent) String() string { +	fieldVals := make([]string, 0, 2) +	fieldVals = append(fieldVals, xgb.Sprintf("Sequence: %d", v.Sequence)) +	fieldVals = append(fieldVals, xgb.Sprintf("DeviceId: %d", v.DeviceId)) +	return "DeviceKeyStateNotify {" + xgb.StringsJoin(fieldVals, ", ") + "}" +} + +func init() { +	xgb.NewExtEventFuncs["XInputExtension"][13] = DeviceKeyStateNotifyEventNew +} + +// Event definition DeviceButtonStateNotify (14) +// Size: 32 + +const DeviceButtonStateNotify = 14 + +type DeviceButtonStateNotifyEvent struct { +	Sequence uint16 +	DeviceId byte +	Buttons  []byte // size: 28 +} + +// Event read DeviceButtonStateNotify +func DeviceButtonStateNotifyEventNew(buf []byte) xgb.Event { +	v := DeviceButtonStateNotifyEvent{} +	b := 1 // don't read event number + +	v.DeviceId = buf[b] +	b += 1 + +	v.Sequence = xgb.Get16(buf[b:]) +	b += 2 + +	v.Buttons = make([]byte, 28) +	copy(v.Buttons[:28], buf[b:]) +	b += xgb.Pad(int(28)) + +	return v +} + +// Event write DeviceButtonStateNotify +func (v DeviceButtonStateNotifyEvent) Bytes() []byte { +	buf := make([]byte, 32) +	b := 0 + +	// write event number +	buf[b] = 14 +	b += 1 + +	buf[b] = v.DeviceId +	b += 1 + +	b += 2 // skip sequence number + +	copy(buf[b:], v.Buttons[:28]) +	b += xgb.Pad(int(28)) + +	return buf +} + +func (v DeviceButtonStateNotifyEvent) ImplementsEvent() {} + +func (v DeviceButtonStateNotifyEvent) SequenceId() uint16 { +	return v.Sequence +} + +func (v DeviceButtonStateNotifyEvent) String() string { +	fieldVals := make([]string, 0, 2) +	fieldVals = append(fieldVals, xgb.Sprintf("Sequence: %d", v.Sequence)) +	fieldVals = append(fieldVals, xgb.Sprintf("DeviceId: %d", v.DeviceId)) +	return "DeviceButtonStateNotify {" + xgb.StringsJoin(fieldVals, ", ") + "}" +} + +func init() { +	xgb.NewExtEventFuncs["XInputExtension"][14] = DeviceButtonStateNotifyEventNew +} + +// Event definition DevicePresenceNotify (15) +// Size: 32 + +const DevicePresenceNotify = 15 + +type DevicePresenceNotifyEvent struct { +	Sequence uint16 +	// padding: 1 bytes +	Time      xproto.Timestamp +	Devchange byte +	DeviceId  byte +	Control   uint16 +	// padding: 20 bytes +} + +// Event read DevicePresenceNotify +func DevicePresenceNotifyEventNew(buf []byte) xgb.Event { +	v := DevicePresenceNotifyEvent{} +	b := 1 // don't read event number + +	b += 1 // padding + +	v.Sequence = xgb.Get16(buf[b:]) +	b += 2 + +	v.Time = xproto.Timestamp(xgb.Get32(buf[b:])) +	b += 4 + +	v.Devchange = buf[b] +	b += 1 + +	v.DeviceId = buf[b] +	b += 1 + +	v.Control = xgb.Get16(buf[b:]) +	b += 2 + +	b += 20 // padding + +	return v +} + +// Event write DevicePresenceNotify +func (v DevicePresenceNotifyEvent) Bytes() []byte { +	buf := make([]byte, 32) +	b := 0 + +	// write event number +	buf[b] = 15 +	b += 1 + +	b += 1 // padding + +	b += 2 // skip sequence number + +	xgb.Put32(buf[b:], uint32(v.Time)) +	b += 4 + +	buf[b] = v.Devchange +	b += 1 + +	buf[b] = v.DeviceId +	b += 1 + +	xgb.Put16(buf[b:], v.Control) +	b += 2 + +	b += 20 // padding + +	return buf +} + +func (v DevicePresenceNotifyEvent) ImplementsEvent() {} + +func (v DevicePresenceNotifyEvent) SequenceId() uint16 { +	return v.Sequence +} + +func (v DevicePresenceNotifyEvent) String() string { +	fieldVals := make([]string, 0, 6) +	fieldVals = append(fieldVals, xgb.Sprintf("Sequence: %d", v.Sequence)) +	fieldVals = append(fieldVals, xgb.Sprintf("Time: %d", v.Time)) +	fieldVals = append(fieldVals, xgb.Sprintf("Devchange: %d", v.Devchange)) +	fieldVals = append(fieldVals, xgb.Sprintf("DeviceId: %d", v.DeviceId)) +	fieldVals = append(fieldVals, xgb.Sprintf("Control: %d", v.Control)) +	return "DevicePresenceNotify {" + xgb.StringsJoin(fieldVals, ", ") + "}" +} + +func init() { +	xgb.NewExtEventFuncs["XInputExtension"][15] = DevicePresenceNotifyEventNew +} + +// EventCopy definition DeviceKeyRelease (2) + +const DeviceKeyRelease = 2 + +type DeviceKeyReleaseEvent DeviceKeyPressEvent + +func DeviceKeyReleaseEventNew(buf []byte) xgb.Event { +	return DeviceKeyReleaseEvent(DeviceKeyPressEventNew(buf).(DeviceKeyPressEvent)) +} + +func (v DeviceKeyReleaseEvent) Bytes() []byte { +	return DeviceKeyPressEvent(v).Bytes() +} + +func (v DeviceKeyReleaseEvent) ImplementsEvent() {} + +func (v DeviceKeyReleaseEvent) SequenceId() uint16 { +	return v.Sequence +} + +func (v DeviceKeyReleaseEvent) String() string { +	fieldVals := make([]string, 0, 12) +	fieldVals = append(fieldVals, xgb.Sprintf("Sequence: %d", v.Sequence)) +	fieldVals = append(fieldVals, xgb.Sprintf("Detail: %d", v.Detail)) +	fieldVals = append(fieldVals, xgb.Sprintf("Time: %d", v.Time)) +	fieldVals = append(fieldVals, xgb.Sprintf("Root: %d", v.Root)) +	fieldVals = append(fieldVals, xgb.Sprintf("Event: %d", v.Event)) +	fieldVals = append(fieldVals, xgb.Sprintf("Child: %d", v.Child)) +	fieldVals = append(fieldVals, xgb.Sprintf("RootX: %d", v.RootX)) +	fieldVals = append(fieldVals, xgb.Sprintf("RootY: %d", v.RootY)) +	fieldVals = append(fieldVals, xgb.Sprintf("EventX: %d", v.EventX)) +	fieldVals = append(fieldVals, xgb.Sprintf("EventY: %d", v.EventY)) +	fieldVals = append(fieldVals, xgb.Sprintf("State: %d", v.State)) +	fieldVals = append(fieldVals, xgb.Sprintf("SameScreen: %t", v.SameScreen)) +	fieldVals = append(fieldVals, xgb.Sprintf("DeviceId: %d", v.DeviceId)) +	return "DeviceKeyRelease {" + xgb.StringsJoin(fieldVals, ", ") + "}" +} + +func init() { +	xgb.NewExtEventFuncs["XInputExtension"][2] = DeviceKeyReleaseEventNew +} + +// EventCopy definition DeviceButtonPress (3) + +const DeviceButtonPress = 3 + +type DeviceButtonPressEvent DeviceKeyPressEvent + +func DeviceButtonPressEventNew(buf []byte) xgb.Event { +	return DeviceButtonPressEvent(DeviceKeyPressEventNew(buf).(DeviceKeyPressEvent)) +} + +func (v DeviceButtonPressEvent) Bytes() []byte { +	return DeviceKeyPressEvent(v).Bytes() +} + +func (v DeviceButtonPressEvent) ImplementsEvent() {} + +func (v DeviceButtonPressEvent) SequenceId() uint16 { +	return v.Sequence +} + +func (v DeviceButtonPressEvent) String() string { +	fieldVals := make([]string, 0, 12) +	fieldVals = append(fieldVals, xgb.Sprintf("Sequence: %d", v.Sequence)) +	fieldVals = append(fieldVals, xgb.Sprintf("Detail: %d", v.Detail)) +	fieldVals = append(fieldVals, xgb.Sprintf("Time: %d", v.Time)) +	fieldVals = append(fieldVals, xgb.Sprintf("Root: %d", v.Root)) +	fieldVals = append(fieldVals, xgb.Sprintf("Event: %d", v.Event)) +	fieldVals = append(fieldVals, xgb.Sprintf("Child: %d", v.Child)) +	fieldVals = append(fieldVals, xgb.Sprintf("RootX: %d", v.RootX)) +	fieldVals = append(fieldVals, xgb.Sprintf("RootY: %d", v.RootY)) +	fieldVals = append(fieldVals, xgb.Sprintf("EventX: %d", v.EventX)) +	fieldVals = append(fieldVals, xgb.Sprintf("EventY: %d", v.EventY)) +	fieldVals = append(fieldVals, xgb.Sprintf("State: %d", v.State)) +	fieldVals = append(fieldVals, xgb.Sprintf("SameScreen: %t", v.SameScreen)) +	fieldVals = append(fieldVals, xgb.Sprintf("DeviceId: %d", v.DeviceId)) +	return "DeviceButtonPress {" + xgb.StringsJoin(fieldVals, ", ") + "}" +} + +func init() { +	xgb.NewExtEventFuncs["XInputExtension"][3] = DeviceButtonPressEventNew +} + +// EventCopy definition DeviceButtonRelease (4) + +const DeviceButtonRelease = 4 + +type DeviceButtonReleaseEvent DeviceKeyPressEvent + +func DeviceButtonReleaseEventNew(buf []byte) xgb.Event { +	return DeviceButtonReleaseEvent(DeviceKeyPressEventNew(buf).(DeviceKeyPressEvent)) +} + +func (v DeviceButtonReleaseEvent) Bytes() []byte { +	return DeviceKeyPressEvent(v).Bytes() +} + +func (v DeviceButtonReleaseEvent) ImplementsEvent() {} + +func (v DeviceButtonReleaseEvent) SequenceId() uint16 { +	return v.Sequence +} + +func (v DeviceButtonReleaseEvent) String() string { +	fieldVals := make([]string, 0, 12) +	fieldVals = append(fieldVals, xgb.Sprintf("Sequence: %d", v.Sequence)) +	fieldVals = append(fieldVals, xgb.Sprintf("Detail: %d", v.Detail)) +	fieldVals = append(fieldVals, xgb.Sprintf("Time: %d", v.Time)) +	fieldVals = append(fieldVals, xgb.Sprintf("Root: %d", v.Root)) +	fieldVals = append(fieldVals, xgb.Sprintf("Event: %d", v.Event)) +	fieldVals = append(fieldVals, xgb.Sprintf("Child: %d", v.Child)) +	fieldVals = append(fieldVals, xgb.Sprintf("RootX: %d", v.RootX)) +	fieldVals = append(fieldVals, xgb.Sprintf("RootY: %d", v.RootY)) +	fieldVals = append(fieldVals, xgb.Sprintf("EventX: %d", v.EventX)) +	fieldVals = append(fieldVals, xgb.Sprintf("EventY: %d", v.EventY)) +	fieldVals = append(fieldVals, xgb.Sprintf("State: %d", v.State)) +	fieldVals = append(fieldVals, xgb.Sprintf("SameScreen: %t", v.SameScreen)) +	fieldVals = append(fieldVals, xgb.Sprintf("DeviceId: %d", v.DeviceId)) +	return "DeviceButtonRelease {" + xgb.StringsJoin(fieldVals, ", ") + "}" +} + +func init() { +	xgb.NewExtEventFuncs["XInputExtension"][4] = DeviceButtonReleaseEventNew +} + +// EventCopy definition DeviceMotionNotify (5) + +const DeviceMotionNotify = 5 + +type DeviceMotionNotifyEvent DeviceKeyPressEvent + +func DeviceMotionNotifyEventNew(buf []byte) xgb.Event { +	return DeviceMotionNotifyEvent(DeviceKeyPressEventNew(buf).(DeviceKeyPressEvent)) +} + +func (v DeviceMotionNotifyEvent) Bytes() []byte { +	return DeviceKeyPressEvent(v).Bytes() +} + +func (v DeviceMotionNotifyEvent) ImplementsEvent() {} + +func (v DeviceMotionNotifyEvent) SequenceId() uint16 { +	return v.Sequence +} + +func (v DeviceMotionNotifyEvent) String() string { +	fieldVals := make([]string, 0, 12) +	fieldVals = append(fieldVals, xgb.Sprintf("Sequence: %d", v.Sequence)) +	fieldVals = append(fieldVals, xgb.Sprintf("Detail: %d", v.Detail)) +	fieldVals = append(fieldVals, xgb.Sprintf("Time: %d", v.Time)) +	fieldVals = append(fieldVals, xgb.Sprintf("Root: %d", v.Root)) +	fieldVals = append(fieldVals, xgb.Sprintf("Event: %d", v.Event)) +	fieldVals = append(fieldVals, xgb.Sprintf("Child: %d", v.Child)) +	fieldVals = append(fieldVals, xgb.Sprintf("RootX: %d", v.RootX)) +	fieldVals = append(fieldVals, xgb.Sprintf("RootY: %d", v.RootY)) +	fieldVals = append(fieldVals, xgb.Sprintf("EventX: %d", v.EventX)) +	fieldVals = append(fieldVals, xgb.Sprintf("EventY: %d", v.EventY)) +	fieldVals = append(fieldVals, xgb.Sprintf("State: %d", v.State)) +	fieldVals = append(fieldVals, xgb.Sprintf("SameScreen: %t", v.SameScreen)) +	fieldVals = append(fieldVals, xgb.Sprintf("DeviceId: %d", v.DeviceId)) +	return "DeviceMotionNotify {" + xgb.StringsJoin(fieldVals, ", ") + "}" +} + +func init() { +	xgb.NewExtEventFuncs["XInputExtension"][5] = DeviceMotionNotifyEventNew +} + +// EventCopy definition ProximityIn (8) + +const ProximityIn = 8 + +type ProximityInEvent DeviceKeyPressEvent + +func ProximityInEventNew(buf []byte) xgb.Event { +	return ProximityInEvent(DeviceKeyPressEventNew(buf).(DeviceKeyPressEvent)) +} + +func (v ProximityInEvent) Bytes() []byte { +	return DeviceKeyPressEvent(v).Bytes() +} + +func (v ProximityInEvent) ImplementsEvent() {} + +func (v ProximityInEvent) SequenceId() uint16 { +	return v.Sequence +} + +func (v ProximityInEvent) String() string { +	fieldVals := make([]string, 0, 12) +	fieldVals = append(fieldVals, xgb.Sprintf("Sequence: %d", v.Sequence)) +	fieldVals = append(fieldVals, xgb.Sprintf("Detail: %d", v.Detail)) +	fieldVals = append(fieldVals, xgb.Sprintf("Time: %d", v.Time)) +	fieldVals = append(fieldVals, xgb.Sprintf("Root: %d", v.Root)) +	fieldVals = append(fieldVals, xgb.Sprintf("Event: %d", v.Event)) +	fieldVals = append(fieldVals, xgb.Sprintf("Child: %d", v.Child)) +	fieldVals = append(fieldVals, xgb.Sprintf("RootX: %d", v.RootX)) +	fieldVals = append(fieldVals, xgb.Sprintf("RootY: %d", v.RootY)) +	fieldVals = append(fieldVals, xgb.Sprintf("EventX: %d", v.EventX)) +	fieldVals = append(fieldVals, xgb.Sprintf("EventY: %d", v.EventY)) +	fieldVals = append(fieldVals, xgb.Sprintf("State: %d", v.State)) +	fieldVals = append(fieldVals, xgb.Sprintf("SameScreen: %t", v.SameScreen)) +	fieldVals = append(fieldVals, xgb.Sprintf("DeviceId: %d", v.DeviceId)) +	return "ProximityIn {" + xgb.StringsJoin(fieldVals, ", ") + "}" +} + +func init() { +	xgb.NewExtEventFuncs["XInputExtension"][8] = ProximityInEventNew +} + +// EventCopy definition ProximityOut (9) + +const ProximityOut = 9 + +type ProximityOutEvent DeviceKeyPressEvent + +func ProximityOutEventNew(buf []byte) xgb.Event { +	return ProximityOutEvent(DeviceKeyPressEventNew(buf).(DeviceKeyPressEvent)) +} + +func (v ProximityOutEvent) Bytes() []byte { +	return DeviceKeyPressEvent(v).Bytes() +} + +func (v ProximityOutEvent) ImplementsEvent() {} + +func (v ProximityOutEvent) SequenceId() uint16 { +	return v.Sequence +} + +func (v ProximityOutEvent) String() string { +	fieldVals := make([]string, 0, 12) +	fieldVals = append(fieldVals, xgb.Sprintf("Sequence: %d", v.Sequence)) +	fieldVals = append(fieldVals, xgb.Sprintf("Detail: %d", v.Detail)) +	fieldVals = append(fieldVals, xgb.Sprintf("Time: %d", v.Time)) +	fieldVals = append(fieldVals, xgb.Sprintf("Root: %d", v.Root)) +	fieldVals = append(fieldVals, xgb.Sprintf("Event: %d", v.Event)) +	fieldVals = append(fieldVals, xgb.Sprintf("Child: %d", v.Child)) +	fieldVals = append(fieldVals, xgb.Sprintf("RootX: %d", v.RootX)) +	fieldVals = append(fieldVals, xgb.Sprintf("RootY: %d", v.RootY)) +	fieldVals = append(fieldVals, xgb.Sprintf("EventX: %d", v.EventX)) +	fieldVals = append(fieldVals, xgb.Sprintf("EventY: %d", v.EventY)) +	fieldVals = append(fieldVals, xgb.Sprintf("State: %d", v.State)) +	fieldVals = append(fieldVals, xgb.Sprintf("SameScreen: %t", v.SameScreen)) +	fieldVals = append(fieldVals, xgb.Sprintf("DeviceId: %d", v.DeviceId)) +	return "ProximityOut {" + xgb.StringsJoin(fieldVals, ", ") + "}" +} + +func init() { +	xgb.NewExtEventFuncs["XInputExtension"][9] = ProximityOutEventNew +} + +// EventCopy definition FocusOut (7) + +const FocusOut = 7 + +type FocusOutEvent FocusInEvent + +func FocusOutEventNew(buf []byte) xgb.Event { +	return FocusOutEvent(FocusInEventNew(buf).(FocusInEvent)) +} + +func (v FocusOutEvent) Bytes() []byte { +	return FocusInEvent(v).Bytes() +} + +func (v FocusOutEvent) ImplementsEvent() {} + +func (v FocusOutEvent) SequenceId() uint16 { +	return v.Sequence +} + +func (v FocusOutEvent) String() string { +	fieldVals := make([]string, 0, 6) +	fieldVals = append(fieldVals, xgb.Sprintf("Sequence: %d", v.Sequence)) +	fieldVals = append(fieldVals, xgb.Sprintf("Detail: %d", v.Detail)) +	fieldVals = append(fieldVals, xgb.Sprintf("Time: %d", v.Time)) +	fieldVals = append(fieldVals, xgb.Sprintf("Window: %d", v.Window)) +	fieldVals = append(fieldVals, xgb.Sprintf("Mode: %d", v.Mode)) +	fieldVals = append(fieldVals, xgb.Sprintf("DeviceId: %d", v.DeviceId)) +	return "FocusOut {" + xgb.StringsJoin(fieldVals, ", ") + "}" +} + +func init() { +	xgb.NewExtEventFuncs["XInputExtension"][7] = FocusOutEventNew +} + +// Error definition Device (0) +// Size: 32 + +const BadDevice = 0 + +type DeviceError struct { +	Sequence uint16 +	NiceName string +} + +// Error read Device +func DeviceErrorNew(buf []byte) xgb.Error { +	v := DeviceError{} +	v.NiceName = "Device" + +	b := 1 // skip error determinant +	b += 1 // don't read error number + +	v.Sequence = xgb.Get16(buf[b:]) +	b += 2 + +	return v +} + +func (err DeviceError) ImplementsError() {} + +func (err DeviceError) SequenceId() uint16 { +	return err.Sequence +} + +func (err DeviceError) BadId() uint32 { +	return 0 +} + +func (err DeviceError) Error() string { +	fieldVals := make([]string, 0, 0) +	fieldVals = append(fieldVals, "NiceName: "+err.NiceName) +	fieldVals = append(fieldVals, xgb.Sprintf("Sequence: %d", err.Sequence)) +	return "BadDevice {" + xgb.StringsJoin(fieldVals, ", ") + "}" +} + +func init() { +	xgb.NewExtErrorFuncs["XInputExtension"][0] = DeviceErrorNew +} + +// Error definition Event (1) +// Size: 32 + +const BadEvent = 1 + +type EventError struct { +	Sequence uint16 +	NiceName string +} + +// Error read Event +func EventErrorNew(buf []byte) xgb.Error { +	v := EventError{} +	v.NiceName = "Event" + +	b := 1 // skip error determinant +	b += 1 // don't read error number + +	v.Sequence = xgb.Get16(buf[b:]) +	b += 2 + +	return v +} + +func (err EventError) ImplementsError() {} + +func (err EventError) SequenceId() uint16 { +	return err.Sequence +} + +func (err EventError) BadId() uint32 { +	return 0 +} + +func (err EventError) Error() string { +	fieldVals := make([]string, 0, 0) +	fieldVals = append(fieldVals, "NiceName: "+err.NiceName) +	fieldVals = append(fieldVals, xgb.Sprintf("Sequence: %d", err.Sequence)) +	return "BadEvent {" + xgb.StringsJoin(fieldVals, ", ") + "}" +} + +func init() { +	xgb.NewExtErrorFuncs["XInputExtension"][1] = EventErrorNew +} + +// Error definition Mode (2) +// Size: 32 + +const BadMode = 2 + +type ModeError struct { +	Sequence uint16 +	NiceName string +} + +// Error read Mode +func ModeErrorNew(buf []byte) xgb.Error { +	v := ModeError{} +	v.NiceName = "Mode" + +	b := 1 // skip error determinant +	b += 1 // don't read error number + +	v.Sequence = xgb.Get16(buf[b:]) +	b += 2 + +	return v +} + +func (err ModeError) ImplementsError() {} + +func (err ModeError) SequenceId() uint16 { +	return err.Sequence +} + +func (err ModeError) BadId() uint32 { +	return 0 +} + +func (err ModeError) Error() string { +	fieldVals := make([]string, 0, 0) +	fieldVals = append(fieldVals, "NiceName: "+err.NiceName) +	fieldVals = append(fieldVals, xgb.Sprintf("Sequence: %d", err.Sequence)) +	return "BadMode {" + xgb.StringsJoin(fieldVals, ", ") + "}" +} + +func init() { +	xgb.NewExtErrorFuncs["XInputExtension"][2] = ModeErrorNew +} + +// Error definition DeviceBusy (3) +// Size: 32 + +const BadDeviceBusy = 3 + +type DeviceBusyError struct { +	Sequence uint16 +	NiceName string +} + +// Error read DeviceBusy +func DeviceBusyErrorNew(buf []byte) xgb.Error { +	v := DeviceBusyError{} +	v.NiceName = "DeviceBusy" + +	b := 1 // skip error determinant +	b += 1 // don't read error number + +	v.Sequence = xgb.Get16(buf[b:]) +	b += 2 + +	return v +} + +func (err DeviceBusyError) ImplementsError() {} + +func (err DeviceBusyError) SequenceId() uint16 { +	return err.Sequence +} + +func (err DeviceBusyError) BadId() uint32 { +	return 0 +} + +func (err DeviceBusyError) Error() string { +	fieldVals := make([]string, 0, 0) +	fieldVals = append(fieldVals, "NiceName: "+err.NiceName) +	fieldVals = append(fieldVals, xgb.Sprintf("Sequence: %d", err.Sequence)) +	return "BadDeviceBusy {" + xgb.StringsJoin(fieldVals, ", ") + "}" +} + +func init() { +	xgb.NewExtErrorFuncs["XInputExtension"][3] = DeviceBusyErrorNew +} + +// Error definition Class (4) +// Size: 32 + +const BadClass = 4 + +type ClassError struct { +	Sequence uint16 +	NiceName string +} + +// Error read Class +func ClassErrorNew(buf []byte) xgb.Error { +	v := ClassError{} +	v.NiceName = "Class" + +	b := 1 // skip error determinant +	b += 1 // don't read error number + +	v.Sequence = xgb.Get16(buf[b:]) +	b += 2 + +	return v +} + +func (err ClassError) ImplementsError() {} + +func (err ClassError) SequenceId() uint16 { +	return err.Sequence +} + +func (err ClassError) BadId() uint32 { +	return 0 +} + +func (err ClassError) Error() string { +	fieldVals := make([]string, 0, 0) +	fieldVals = append(fieldVals, "NiceName: "+err.NiceName) +	fieldVals = append(fieldVals, xgb.Sprintf("Sequence: %d", err.Sequence)) +	return "BadClass {" + xgb.StringsJoin(fieldVals, ", ") + "}" +} + +func init() { +	xgb.NewExtErrorFuncs["XInputExtension"][4] = ClassErrorNew +} + +// Request GetExtensionVersion +// size: xgb.Pad((8 + xgb.Pad((int(NameLen) * 1)))) +type GetExtensionVersionCookie struct { +	*xgb.Cookie +} + +func GetExtensionVersion(c *xgb.Conn, NameLen uint16, Name string) GetExtensionVersionCookie { +	cookie := c.NewCookie(true, true) +	c.NewRequest(getExtensionVersionRequest(c, NameLen, Name), cookie) +	return GetExtensionVersionCookie{cookie} +} + +func GetExtensionVersionUnchecked(c *xgb.Conn, NameLen uint16, Name string) GetExtensionVersionCookie { +	cookie := c.NewCookie(false, true) +	c.NewRequest(getExtensionVersionRequest(c, NameLen, Name), cookie) +	return GetExtensionVersionCookie{cookie} +} + +// Request reply for GetExtensionVersion +// size: 32 +type GetExtensionVersionReply struct { +	Sequence uint16 +	Length   uint32 +	// padding: 1 bytes +	ServerMajor uint16 +	ServerMinor uint16 +	Present     bool +	// padding: 19 bytes +} + +// Waits and reads reply data from request GetExtensionVersion +func (cook GetExtensionVersionCookie) Reply() (*GetExtensionVersionReply, error) { +	buf, err := cook.Cookie.Reply() +	if err != nil { +		return nil, err +	} +	if buf == nil { +		return nil, nil +	} +	return getExtensionVersionReply(buf), nil +} + +// Read reply into structure from buffer for GetExtensionVersion +func getExtensionVersionReply(buf []byte) *GetExtensionVersionReply { +	v := new(GetExtensionVersionReply) +	b := 1 // skip reply determinant + +	b += 1 // padding + +	v.Sequence = xgb.Get16(buf[b:]) +	b += 2 + +	v.Length = xgb.Get32(buf[b:]) // 4-byte units +	b += 4 + +	v.ServerMajor = xgb.Get16(buf[b:]) +	b += 2 + +	v.ServerMinor = xgb.Get16(buf[b:]) +	b += 2 + +	if buf[b] == 1 { +		v.Present = true +	} else { +		v.Present = false +	} +	b += 1 + +	b += 19 // padding + +	return v +} + +// Write request to wire for GetExtensionVersion +func getExtensionVersionRequest(c *xgb.Conn, NameLen uint16, Name string) []byte { +	size := xgb.Pad((8 + xgb.Pad((int(NameLen) * 1)))) +	b := 0 +	buf := make([]byte, size) + +	buf[b] = c.Extensions["XINPUTEXTENSION"] +	b += 1 + +	buf[b] = 1 // request opcode +	b += 1 + +	xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units +	b += 2 + +	xgb.Put16(buf[b:], NameLen) +	b += 2 + +	b += 2 // padding + +	copy(buf[b:], Name[:NameLen]) +	b += xgb.Pad(int(NameLen)) + +	return buf +} + +// Request ListInputDevices +// size: 4 +type ListInputDevicesCookie struct { +	*xgb.Cookie +} + +func ListInputDevices(c *xgb.Conn) ListInputDevicesCookie { +	cookie := c.NewCookie(true, true) +	c.NewRequest(listInputDevicesRequest(c), cookie) +	return ListInputDevicesCookie{cookie} +} + +func ListInputDevicesUnchecked(c *xgb.Conn) ListInputDevicesCookie { +	cookie := c.NewCookie(false, true) +	c.NewRequest(listInputDevicesRequest(c), cookie) +	return ListInputDevicesCookie{cookie} +} + +// Request reply for ListInputDevices +// size: (32 + xgb.Pad((int(DevicesLen) * 8))) +type ListInputDevicesReply struct { +	Sequence uint16 +	Length   uint32 +	// padding: 1 bytes +	DevicesLen byte +	// padding: 23 bytes +	Devices []DeviceInfo // size: xgb.Pad((int(DevicesLen) * 8)) +} + +// Waits and reads reply data from request ListInputDevices +func (cook ListInputDevicesCookie) Reply() (*ListInputDevicesReply, error) { +	buf, err := cook.Cookie.Reply() +	if err != nil { +		return nil, err +	} +	if buf == nil { +		return nil, nil +	} +	return listInputDevicesReply(buf), nil +} + +// Read reply into structure from buffer for ListInputDevices +func listInputDevicesReply(buf []byte) *ListInputDevicesReply { +	v := new(ListInputDevicesReply) +	b := 1 // skip reply determinant + +	b += 1 // padding + +	v.Sequence = xgb.Get16(buf[b:]) +	b += 2 + +	v.Length = xgb.Get32(buf[b:]) // 4-byte units +	b += 4 + +	v.DevicesLen = buf[b] +	b += 1 + +	b += 23 // padding + +	v.Devices = make([]DeviceInfo, v.DevicesLen) +	b += DeviceInfoReadList(buf[b:], v.Devices) + +	return v +} + +// Write request to wire for ListInputDevices +func listInputDevicesRequest(c *xgb.Conn) []byte { +	size := 4 +	b := 0 +	buf := make([]byte, size) + +	buf[b] = c.Extensions["XINPUTEXTENSION"] +	b += 1 + +	buf[b] = 2 // request opcode +	b += 1 + +	xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units +	b += 2 + +	return buf +} + +// Request OpenDevice +// size: 8 +type OpenDeviceCookie struct { +	*xgb.Cookie +} + +func OpenDevice(c *xgb.Conn, DeviceId byte) OpenDeviceCookie { +	cookie := c.NewCookie(true, true) +	c.NewRequest(openDeviceRequest(c, DeviceId), cookie) +	return OpenDeviceCookie{cookie} +} + +func OpenDeviceUnchecked(c *xgb.Conn, DeviceId byte) OpenDeviceCookie { +	cookie := c.NewCookie(false, true) +	c.NewRequest(openDeviceRequest(c, DeviceId), cookie) +	return OpenDeviceCookie{cookie} +} + +// Request reply for OpenDevice +// size: (32 + xgb.Pad((int(NumClasses) * 2))) +type OpenDeviceReply struct { +	Sequence uint16 +	Length   uint32 +	// padding: 1 bytes +	NumClasses byte +	// padding: 23 bytes +	ClassInfo []InputClassInfo // size: xgb.Pad((int(NumClasses) * 2)) +} + +// Waits and reads reply data from request OpenDevice +func (cook OpenDeviceCookie) Reply() (*OpenDeviceReply, error) { +	buf, err := cook.Cookie.Reply() +	if err != nil { +		return nil, err +	} +	if buf == nil { +		return nil, nil +	} +	return openDeviceReply(buf), nil +} + +// Read reply into structure from buffer for OpenDevice +func openDeviceReply(buf []byte) *OpenDeviceReply { +	v := new(OpenDeviceReply) +	b := 1 // skip reply determinant + +	b += 1 // padding + +	v.Sequence = xgb.Get16(buf[b:]) +	b += 2 + +	v.Length = xgb.Get32(buf[b:]) // 4-byte units +	b += 4 + +	v.NumClasses = buf[b] +	b += 1 + +	b += 23 // padding + +	v.ClassInfo = make([]InputClassInfo, v.NumClasses) +	b += InputClassInfoReadList(buf[b:], v.ClassInfo) + +	return v +} + +// Write request to wire for OpenDevice +func openDeviceRequest(c *xgb.Conn, DeviceId byte) []byte { +	size := 8 +	b := 0 +	buf := make([]byte, size) + +	buf[b] = c.Extensions["XINPUTEXTENSION"] +	b += 1 + +	buf[b] = 3 // request opcode +	b += 1 + +	xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units +	b += 2 + +	buf[b] = DeviceId +	b += 1 + +	b += 3 // padding + +	return buf +} + +// Request CloseDevice +// size: 8 +type CloseDeviceCookie struct { +	*xgb.Cookie +} + +// Write request to wire for CloseDevice +func CloseDevice(c *xgb.Conn, DeviceId byte) CloseDeviceCookie { +	cookie := c.NewCookie(false, false) +	c.NewRequest(closeDeviceRequest(c, DeviceId), cookie) +	return CloseDeviceCookie{cookie} +} + +func CloseDeviceChecked(c *xgb.Conn, DeviceId byte) CloseDeviceCookie { +	cookie := c.NewCookie(true, false) +	c.NewRequest(closeDeviceRequest(c, DeviceId), cookie) +	return CloseDeviceCookie{cookie} +} + +func (cook CloseDeviceCookie) Check() error { +	return cook.Cookie.Check() +} + +// Write request to wire for CloseDevice +func closeDeviceRequest(c *xgb.Conn, DeviceId byte) []byte { +	size := 8 +	b := 0 +	buf := make([]byte, size) + +	buf[b] = c.Extensions["XINPUTEXTENSION"] +	b += 1 + +	buf[b] = 4 // request opcode +	b += 1 + +	xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units +	b += 2 + +	buf[b] = DeviceId +	b += 1 + +	b += 3 // padding + +	return buf +} + +// Request SetDeviceMode +// size: 8 +type SetDeviceModeCookie struct { +	*xgb.Cookie +} + +func SetDeviceMode(c *xgb.Conn, DeviceId byte, Mode byte) SetDeviceModeCookie { +	cookie := c.NewCookie(true, true) +	c.NewRequest(setDeviceModeRequest(c, DeviceId, Mode), cookie) +	return SetDeviceModeCookie{cookie} +} + +func SetDeviceModeUnchecked(c *xgb.Conn, DeviceId byte, Mode byte) SetDeviceModeCookie { +	cookie := c.NewCookie(false, true) +	c.NewRequest(setDeviceModeRequest(c, DeviceId, Mode), cookie) +	return SetDeviceModeCookie{cookie} +} + +// Request reply for SetDeviceMode +// size: 32 +type SetDeviceModeReply struct { +	Sequence uint16 +	Length   uint32 +	// padding: 1 bytes +	Status byte +	// padding: 23 bytes +} + +// Waits and reads reply data from request SetDeviceMode +func (cook SetDeviceModeCookie) Reply() (*SetDeviceModeReply, error) { +	buf, err := cook.Cookie.Reply() +	if err != nil { +		return nil, err +	} +	if buf == nil { +		return nil, nil +	} +	return setDeviceModeReply(buf), nil +} + +// Read reply into structure from buffer for SetDeviceMode +func setDeviceModeReply(buf []byte) *SetDeviceModeReply { +	v := new(SetDeviceModeReply) +	b := 1 // skip reply determinant + +	b += 1 // padding + +	v.Sequence = xgb.Get16(buf[b:]) +	b += 2 + +	v.Length = xgb.Get32(buf[b:]) // 4-byte units +	b += 4 + +	v.Status = buf[b] +	b += 1 + +	b += 23 // padding + +	return v +} + +// Write request to wire for SetDeviceMode +func setDeviceModeRequest(c *xgb.Conn, DeviceId byte, Mode byte) []byte { +	size := 8 +	b := 0 +	buf := make([]byte, size) + +	buf[b] = c.Extensions["XINPUTEXTENSION"] +	b += 1 + +	buf[b] = 5 // request opcode +	b += 1 + +	xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units +	b += 2 + +	buf[b] = DeviceId +	b += 1 + +	buf[b] = Mode +	b += 1 + +	b += 2 // padding + +	return buf +} + +// Request SelectExtensionEvent +// size: xgb.Pad((12 + xgb.Pad((int(NumClasses) * 4)))) +type SelectExtensionEventCookie struct { +	*xgb.Cookie +} + +// Write request to wire for SelectExtensionEvent +func SelectExtensionEvent(c *xgb.Conn, Window xproto.Window, NumClasses uint16, Classes []EventClass) SelectExtensionEventCookie { +	cookie := c.NewCookie(false, false) +	c.NewRequest(selectExtensionEventRequest(c, Window, NumClasses, Classes), cookie) +	return SelectExtensionEventCookie{cookie} +} + +func SelectExtensionEventChecked(c *xgb.Conn, Window xproto.Window, NumClasses uint16, Classes []EventClass) SelectExtensionEventCookie { +	cookie := c.NewCookie(true, false) +	c.NewRequest(selectExtensionEventRequest(c, Window, NumClasses, Classes), cookie) +	return SelectExtensionEventCookie{cookie} +} + +func (cook SelectExtensionEventCookie) Check() error { +	return cook.Cookie.Check() +} + +// Write request to wire for SelectExtensionEvent +func selectExtensionEventRequest(c *xgb.Conn, Window xproto.Window, NumClasses uint16, Classes []EventClass) []byte { +	size := xgb.Pad((12 + xgb.Pad((int(NumClasses) * 4)))) +	b := 0 +	buf := make([]byte, size) + +	buf[b] = c.Extensions["XINPUTEXTENSION"] +	b += 1 + +	buf[b] = 6 // request opcode +	b += 1 + +	xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units +	b += 2 + +	xgb.Put32(buf[b:], uint32(Window)) +	b += 4 + +	xgb.Put16(buf[b:], NumClasses) +	b += 2 + +	b += 2 // padding + +	for i := 0; i < int(NumClasses); i++ { +		xgb.Put32(buf[b:], uint32(Classes[i])) +		b += 4 +	} +	b = xgb.Pad(b) + +	return buf +} + +// Request GetSelectedExtensionEvents +// size: 8 +type GetSelectedExtensionEventsCookie struct { +	*xgb.Cookie +} + +func GetSelectedExtensionEvents(c *xgb.Conn, Window xproto.Window) GetSelectedExtensionEventsCookie { +	cookie := c.NewCookie(true, true) +	c.NewRequest(getSelectedExtensionEventsRequest(c, Window), cookie) +	return GetSelectedExtensionEventsCookie{cookie} +} + +func GetSelectedExtensionEventsUnchecked(c *xgb.Conn, Window xproto.Window) GetSelectedExtensionEventsCookie { +	cookie := c.NewCookie(false, true) +	c.NewRequest(getSelectedExtensionEventsRequest(c, Window), cookie) +	return GetSelectedExtensionEventsCookie{cookie} +} + +// Request reply for GetSelectedExtensionEvents +// size: ((32 + xgb.Pad((int(NumThisClasses) * 4))) + xgb.Pad((int(NumAllClasses) * 4))) +type GetSelectedExtensionEventsReply struct { +	Sequence uint16 +	Length   uint32 +	// padding: 1 bytes +	NumThisClasses uint16 +	NumAllClasses  uint16 +	// padding: 20 bytes +	ThisClasses []EventClass // size: xgb.Pad((int(NumThisClasses) * 4)) +	AllClasses  []EventClass // size: xgb.Pad((int(NumAllClasses) * 4)) +} + +// Waits and reads reply data from request GetSelectedExtensionEvents +func (cook GetSelectedExtensionEventsCookie) Reply() (*GetSelectedExtensionEventsReply, error) { +	buf, err := cook.Cookie.Reply() +	if err != nil { +		return nil, err +	} +	if buf == nil { +		return nil, nil +	} +	return getSelectedExtensionEventsReply(buf), nil +} + +// Read reply into structure from buffer for GetSelectedExtensionEvents +func getSelectedExtensionEventsReply(buf []byte) *GetSelectedExtensionEventsReply { +	v := new(GetSelectedExtensionEventsReply) +	b := 1 // skip reply determinant + +	b += 1 // padding + +	v.Sequence = xgb.Get16(buf[b:]) +	b += 2 + +	v.Length = xgb.Get32(buf[b:]) // 4-byte units +	b += 4 + +	v.NumThisClasses = xgb.Get16(buf[b:]) +	b += 2 + +	v.NumAllClasses = xgb.Get16(buf[b:]) +	b += 2 + +	b += 20 // padding + +	v.ThisClasses = make([]EventClass, v.NumThisClasses) +	for i := 0; i < int(v.NumThisClasses); i++ { +		v.ThisClasses[i] = EventClass(xgb.Get32(buf[b:])) +		b += 4 +	} +	b = xgb.Pad(b) + +	v.AllClasses = make([]EventClass, v.NumAllClasses) +	for i := 0; i < int(v.NumAllClasses); i++ { +		v.AllClasses[i] = EventClass(xgb.Get32(buf[b:])) +		b += 4 +	} +	b = xgb.Pad(b) + +	return v +} + +// Write request to wire for GetSelectedExtensionEvents +func getSelectedExtensionEventsRequest(c *xgb.Conn, Window xproto.Window) []byte { +	size := 8 +	b := 0 +	buf := make([]byte, size) + +	buf[b] = c.Extensions["XINPUTEXTENSION"] +	b += 1 + +	buf[b] = 7 // request opcode +	b += 1 + +	xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units +	b += 2 + +	xgb.Put32(buf[b:], uint32(Window)) +	b += 4 + +	return buf +} + +// Request ChangeDeviceDontPropagateList +// size: xgb.Pad((12 + xgb.Pad((int(NumClasses) * 4)))) +type ChangeDeviceDontPropagateListCookie struct { +	*xgb.Cookie +} + +// Write request to wire for ChangeDeviceDontPropagateList +func ChangeDeviceDontPropagateList(c *xgb.Conn, Window xproto.Window, NumClasses uint16, Mode byte, Classes []EventClass) ChangeDeviceDontPropagateListCookie { +	cookie := c.NewCookie(false, false) +	c.NewRequest(changeDeviceDontPropagateListRequest(c, Window, NumClasses, Mode, Classes), cookie) +	return ChangeDeviceDontPropagateListCookie{cookie} +} + +func ChangeDeviceDontPropagateListChecked(c *xgb.Conn, Window xproto.Window, NumClasses uint16, Mode byte, Classes []EventClass) ChangeDeviceDontPropagateListCookie { +	cookie := c.NewCookie(true, false) +	c.NewRequest(changeDeviceDontPropagateListRequest(c, Window, NumClasses, Mode, Classes), cookie) +	return ChangeDeviceDontPropagateListCookie{cookie} +} + +func (cook ChangeDeviceDontPropagateListCookie) Check() error { +	return cook.Cookie.Check() +} + +// Write request to wire for ChangeDeviceDontPropagateList +func changeDeviceDontPropagateListRequest(c *xgb.Conn, Window xproto.Window, NumClasses uint16, Mode byte, Classes []EventClass) []byte { +	size := xgb.Pad((12 + xgb.Pad((int(NumClasses) * 4)))) +	b := 0 +	buf := make([]byte, size) + +	buf[b] = c.Extensions["XINPUTEXTENSION"] +	b += 1 + +	buf[b] = 8 // request opcode +	b += 1 + +	xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units +	b += 2 + +	xgb.Put32(buf[b:], uint32(Window)) +	b += 4 + +	xgb.Put16(buf[b:], NumClasses) +	b += 2 + +	buf[b] = Mode +	b += 1 + +	b += 1 // padding + +	for i := 0; i < int(NumClasses); i++ { +		xgb.Put32(buf[b:], uint32(Classes[i])) +		b += 4 +	} +	b = xgb.Pad(b) + +	return buf +} + +// Request GetDeviceDontPropagateList +// size: 8 +type GetDeviceDontPropagateListCookie struct { +	*xgb.Cookie +} + +func GetDeviceDontPropagateList(c *xgb.Conn, Window xproto.Window) GetDeviceDontPropagateListCookie { +	cookie := c.NewCookie(true, true) +	c.NewRequest(getDeviceDontPropagateListRequest(c, Window), cookie) +	return GetDeviceDontPropagateListCookie{cookie} +} + +func GetDeviceDontPropagateListUnchecked(c *xgb.Conn, Window xproto.Window) GetDeviceDontPropagateListCookie { +	cookie := c.NewCookie(false, true) +	c.NewRequest(getDeviceDontPropagateListRequest(c, Window), cookie) +	return GetDeviceDontPropagateListCookie{cookie} +} + +// Request reply for GetDeviceDontPropagateList +// size: (32 + xgb.Pad((int(NumClasses) * 4))) +type GetDeviceDontPropagateListReply struct { +	Sequence uint16 +	Length   uint32 +	// padding: 1 bytes +	NumClasses uint16 +	// padding: 22 bytes +	Classes []EventClass // size: xgb.Pad((int(NumClasses) * 4)) +} + +// Waits and reads reply data from request GetDeviceDontPropagateList +func (cook GetDeviceDontPropagateListCookie) Reply() (*GetDeviceDontPropagateListReply, error) { +	buf, err := cook.Cookie.Reply() +	if err != nil { +		return nil, err +	} +	if buf == nil { +		return nil, nil +	} +	return getDeviceDontPropagateListReply(buf), nil +} + +// Read reply into structure from buffer for GetDeviceDontPropagateList +func getDeviceDontPropagateListReply(buf []byte) *GetDeviceDontPropagateListReply { +	v := new(GetDeviceDontPropagateListReply) +	b := 1 // skip reply determinant + +	b += 1 // padding + +	v.Sequence = xgb.Get16(buf[b:]) +	b += 2 + +	v.Length = xgb.Get32(buf[b:]) // 4-byte units +	b += 4 + +	v.NumClasses = xgb.Get16(buf[b:]) +	b += 2 + +	b += 22 // padding + +	v.Classes = make([]EventClass, v.NumClasses) +	for i := 0; i < int(v.NumClasses); i++ { +		v.Classes[i] = EventClass(xgb.Get32(buf[b:])) +		b += 4 +	} +	b = xgb.Pad(b) + +	return v +} + +// Write request to wire for GetDeviceDontPropagateList +func getDeviceDontPropagateListRequest(c *xgb.Conn, Window xproto.Window) []byte { +	size := 8 +	b := 0 +	buf := make([]byte, size) + +	buf[b] = c.Extensions["XINPUTEXTENSION"] +	b += 1 + +	buf[b] = 9 // request opcode +	b += 1 + +	xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units +	b += 2 + +	xgb.Put32(buf[b:], uint32(Window)) +	b += 4 + +	return buf +} + +// Request GetDeviceMotionEvents +// size: 16 +type GetDeviceMotionEventsCookie struct { +	*xgb.Cookie +} + +func GetDeviceMotionEvents(c *xgb.Conn, Start xproto.Timestamp, Stop xproto.Timestamp, DeviceId byte) GetDeviceMotionEventsCookie { +	cookie := c.NewCookie(true, true) +	c.NewRequest(getDeviceMotionEventsRequest(c, Start, Stop, DeviceId), cookie) +	return GetDeviceMotionEventsCookie{cookie} +} + +func GetDeviceMotionEventsUnchecked(c *xgb.Conn, Start xproto.Timestamp, Stop xproto.Timestamp, DeviceId byte) GetDeviceMotionEventsCookie { +	cookie := c.NewCookie(false, true) +	c.NewRequest(getDeviceMotionEventsRequest(c, Start, Stop, DeviceId), cookie) +	return GetDeviceMotionEventsCookie{cookie} +} + +// Request reply for GetDeviceMotionEvents +// size: 32 +type GetDeviceMotionEventsReply struct { +	Sequence uint16 +	Length   uint32 +	// padding: 1 bytes +	NumCoords  uint32 +	NumAxes    byte +	DeviceMode byte +	// padding: 18 bytes +} + +// Waits and reads reply data from request GetDeviceMotionEvents +func (cook GetDeviceMotionEventsCookie) Reply() (*GetDeviceMotionEventsReply, error) { +	buf, err := cook.Cookie.Reply() +	if err != nil { +		return nil, err +	} +	if buf == nil { +		return nil, nil +	} +	return getDeviceMotionEventsReply(buf), nil +} + +// Read reply into structure from buffer for GetDeviceMotionEvents +func getDeviceMotionEventsReply(buf []byte) *GetDeviceMotionEventsReply { +	v := new(GetDeviceMotionEventsReply) +	b := 1 // skip reply determinant + +	b += 1 // padding + +	v.Sequence = xgb.Get16(buf[b:]) +	b += 2 + +	v.Length = xgb.Get32(buf[b:]) // 4-byte units +	b += 4 + +	v.NumCoords = xgb.Get32(buf[b:]) +	b += 4 + +	v.NumAxes = buf[b] +	b += 1 + +	v.DeviceMode = buf[b] +	b += 1 + +	b += 18 // padding + +	return v +} + +// Write request to wire for GetDeviceMotionEvents +func getDeviceMotionEventsRequest(c *xgb.Conn, Start xproto.Timestamp, Stop xproto.Timestamp, DeviceId byte) []byte { +	size := 16 +	b := 0 +	buf := make([]byte, size) + +	buf[b] = c.Extensions["XINPUTEXTENSION"] +	b += 1 + +	buf[b] = 10 // request opcode +	b += 1 + +	xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units +	b += 2 + +	xgb.Put32(buf[b:], uint32(Start)) +	b += 4 + +	xgb.Put32(buf[b:], uint32(Stop)) +	b += 4 + +	buf[b] = DeviceId +	b += 1 + +	return buf +} + +// Request ChangeKeyboardDevice +// size: 8 +type ChangeKeyboardDeviceCookie struct { +	*xgb.Cookie +} + +func ChangeKeyboardDevice(c *xgb.Conn, DeviceId byte) ChangeKeyboardDeviceCookie { +	cookie := c.NewCookie(true, true) +	c.NewRequest(changeKeyboardDeviceRequest(c, DeviceId), cookie) +	return ChangeKeyboardDeviceCookie{cookie} +} + +func ChangeKeyboardDeviceUnchecked(c *xgb.Conn, DeviceId byte) ChangeKeyboardDeviceCookie { +	cookie := c.NewCookie(false, true) +	c.NewRequest(changeKeyboardDeviceRequest(c, DeviceId), cookie) +	return ChangeKeyboardDeviceCookie{cookie} +} + +// Request reply for ChangeKeyboardDevice +// size: 32 +type ChangeKeyboardDeviceReply struct { +	Sequence uint16 +	Length   uint32 +	// padding: 1 bytes +	Status byte +	// padding: 23 bytes +} + +// Waits and reads reply data from request ChangeKeyboardDevice +func (cook ChangeKeyboardDeviceCookie) Reply() (*ChangeKeyboardDeviceReply, error) { +	buf, err := cook.Cookie.Reply() +	if err != nil { +		return nil, err +	} +	if buf == nil { +		return nil, nil +	} +	return changeKeyboardDeviceReply(buf), nil +} + +// Read reply into structure from buffer for ChangeKeyboardDevice +func changeKeyboardDeviceReply(buf []byte) *ChangeKeyboardDeviceReply { +	v := new(ChangeKeyboardDeviceReply) +	b := 1 // skip reply determinant + +	b += 1 // padding + +	v.Sequence = xgb.Get16(buf[b:]) +	b += 2 + +	v.Length = xgb.Get32(buf[b:]) // 4-byte units +	b += 4 + +	v.Status = buf[b] +	b += 1 + +	b += 23 // padding + +	return v +} + +// Write request to wire for ChangeKeyboardDevice +func changeKeyboardDeviceRequest(c *xgb.Conn, DeviceId byte) []byte { +	size := 8 +	b := 0 +	buf := make([]byte, size) + +	buf[b] = c.Extensions["XINPUTEXTENSION"] +	b += 1 + +	buf[b] = 11 // request opcode +	b += 1 + +	xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units +	b += 2 + +	buf[b] = DeviceId +	b += 1 + +	b += 3 // padding + +	return buf +} + +// Request ChangePointerDevice +// size: 8 +type ChangePointerDeviceCookie struct { +	*xgb.Cookie +} + +func ChangePointerDevice(c *xgb.Conn, XAxis byte, YAxis byte, DeviceId byte) ChangePointerDeviceCookie { +	cookie := c.NewCookie(true, true) +	c.NewRequest(changePointerDeviceRequest(c, XAxis, YAxis, DeviceId), cookie) +	return ChangePointerDeviceCookie{cookie} +} + +func ChangePointerDeviceUnchecked(c *xgb.Conn, XAxis byte, YAxis byte, DeviceId byte) ChangePointerDeviceCookie { +	cookie := c.NewCookie(false, true) +	c.NewRequest(changePointerDeviceRequest(c, XAxis, YAxis, DeviceId), cookie) +	return ChangePointerDeviceCookie{cookie} +} + +// Request reply for ChangePointerDevice +// size: 32 +type ChangePointerDeviceReply struct { +	Sequence uint16 +	Length   uint32 +	// padding: 1 bytes +	Status byte +	// padding: 23 bytes +} + +// Waits and reads reply data from request ChangePointerDevice +func (cook ChangePointerDeviceCookie) Reply() (*ChangePointerDeviceReply, error) { +	buf, err := cook.Cookie.Reply() +	if err != nil { +		return nil, err +	} +	if buf == nil { +		return nil, nil +	} +	return changePointerDeviceReply(buf), nil +} + +// Read reply into structure from buffer for ChangePointerDevice +func changePointerDeviceReply(buf []byte) *ChangePointerDeviceReply { +	v := new(ChangePointerDeviceReply) +	b := 1 // skip reply determinant + +	b += 1 // padding + +	v.Sequence = xgb.Get16(buf[b:]) +	b += 2 + +	v.Length = xgb.Get32(buf[b:]) // 4-byte units +	b += 4 + +	v.Status = buf[b] +	b += 1 + +	b += 23 // padding + +	return v +} + +// Write request to wire for ChangePointerDevice +func changePointerDeviceRequest(c *xgb.Conn, XAxis byte, YAxis byte, DeviceId byte) []byte { +	size := 8 +	b := 0 +	buf := make([]byte, size) + +	buf[b] = c.Extensions["XINPUTEXTENSION"] +	b += 1 + +	buf[b] = 12 // request opcode +	b += 1 + +	xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units +	b += 2 + +	buf[b] = XAxis +	b += 1 + +	buf[b] = YAxis +	b += 1 + +	buf[b] = DeviceId +	b += 1 + +	b += 1 // padding + +	return buf +} + +// Request GrabDevice +// size: xgb.Pad((20 + xgb.Pad((int(NumClasses) * 4)))) +type GrabDeviceCookie struct { +	*xgb.Cookie +} + +func GrabDevice(c *xgb.Conn, GrabWindow xproto.Window, Time xproto.Timestamp, NumClasses uint16, ThisDeviceMode byte, OtherDeviceMode byte, OwnerEvents bool, DeviceId byte, Classes []EventClass) GrabDeviceCookie { +	cookie := c.NewCookie(true, true) +	c.NewRequest(grabDeviceRequest(c, GrabWindow, Time, NumClasses, ThisDeviceMode, OtherDeviceMode, OwnerEvents, DeviceId, Classes), cookie) +	return GrabDeviceCookie{cookie} +} + +func GrabDeviceUnchecked(c *xgb.Conn, GrabWindow xproto.Window, Time xproto.Timestamp, NumClasses uint16, ThisDeviceMode byte, OtherDeviceMode byte, OwnerEvents bool, DeviceId byte, Classes []EventClass) GrabDeviceCookie { +	cookie := c.NewCookie(false, true) +	c.NewRequest(grabDeviceRequest(c, GrabWindow, Time, NumClasses, ThisDeviceMode, OtherDeviceMode, OwnerEvents, DeviceId, Classes), cookie) +	return GrabDeviceCookie{cookie} +} + +// Request reply for GrabDevice +// size: 32 +type GrabDeviceReply struct { +	Sequence uint16 +	Length   uint32 +	// padding: 1 bytes +	Status byte +	// padding: 23 bytes +} + +// Waits and reads reply data from request GrabDevice +func (cook GrabDeviceCookie) Reply() (*GrabDeviceReply, error) { +	buf, err := cook.Cookie.Reply() +	if err != nil { +		return nil, err +	} +	if buf == nil { +		return nil, nil +	} +	return grabDeviceReply(buf), nil +} + +// Read reply into structure from buffer for GrabDevice +func grabDeviceReply(buf []byte) *GrabDeviceReply { +	v := new(GrabDeviceReply) +	b := 1 // skip reply determinant + +	b += 1 // padding + +	v.Sequence = xgb.Get16(buf[b:]) +	b += 2 + +	v.Length = xgb.Get32(buf[b:]) // 4-byte units +	b += 4 + +	v.Status = buf[b] +	b += 1 + +	b += 23 // padding + +	return v +} + +// Write request to wire for GrabDevice +func grabDeviceRequest(c *xgb.Conn, GrabWindow xproto.Window, Time xproto.Timestamp, NumClasses uint16, ThisDeviceMode byte, OtherDeviceMode byte, OwnerEvents bool, DeviceId byte, Classes []EventClass) []byte { +	size := xgb.Pad((20 + xgb.Pad((int(NumClasses) * 4)))) +	b := 0 +	buf := make([]byte, size) + +	buf[b] = c.Extensions["XINPUTEXTENSION"] +	b += 1 + +	buf[b] = 13 // request opcode +	b += 1 + +	xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units +	b += 2 + +	xgb.Put32(buf[b:], uint32(GrabWindow)) +	b += 4 + +	xgb.Put32(buf[b:], uint32(Time)) +	b += 4 + +	xgb.Put16(buf[b:], NumClasses) +	b += 2 + +	buf[b] = ThisDeviceMode +	b += 1 + +	buf[b] = OtherDeviceMode +	b += 1 + +	if OwnerEvents { +		buf[b] = 1 +	} else { +		buf[b] = 0 +	} +	b += 1 + +	buf[b] = DeviceId +	b += 1 + +	b += 2 // padding + +	for i := 0; i < int(NumClasses); i++ { +		xgb.Put32(buf[b:], uint32(Classes[i])) +		b += 4 +	} +	b = xgb.Pad(b) + +	return buf +} + +// Request UngrabDevice +// size: 12 +type UngrabDeviceCookie struct { +	*xgb.Cookie +} + +// Write request to wire for UngrabDevice +func UngrabDevice(c *xgb.Conn, Time xproto.Timestamp, DeviceId byte) UngrabDeviceCookie { +	cookie := c.NewCookie(false, false) +	c.NewRequest(ungrabDeviceRequest(c, Time, DeviceId), cookie) +	return UngrabDeviceCookie{cookie} +} + +func UngrabDeviceChecked(c *xgb.Conn, Time xproto.Timestamp, DeviceId byte) UngrabDeviceCookie { +	cookie := c.NewCookie(true, false) +	c.NewRequest(ungrabDeviceRequest(c, Time, DeviceId), cookie) +	return UngrabDeviceCookie{cookie} +} + +func (cook UngrabDeviceCookie) Check() error { +	return cook.Cookie.Check() +} + +// Write request to wire for UngrabDevice +func ungrabDeviceRequest(c *xgb.Conn, Time xproto.Timestamp, DeviceId byte) []byte { +	size := 12 +	b := 0 +	buf := make([]byte, size) + +	buf[b] = c.Extensions["XINPUTEXTENSION"] +	b += 1 + +	buf[b] = 14 // request opcode +	b += 1 + +	xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units +	b += 2 + +	xgb.Put32(buf[b:], uint32(Time)) +	b += 4 + +	buf[b] = DeviceId +	b += 1 + +	return buf +} + +// Request GrabDeviceKey +// size: xgb.Pad((20 + xgb.Pad((int(NumClasses) * 4)))) +type GrabDeviceKeyCookie struct { +	*xgb.Cookie +} + +// Write request to wire for GrabDeviceKey +func GrabDeviceKey(c *xgb.Conn, GrabWindow xproto.Window, NumClasses uint16, Modifiers uint16, ModifierDevice byte, GrabbedDevice byte, Key byte, ThisDeviceMode byte, OtherDeviceMode byte, OwnerEvents bool, Classes []EventClass) GrabDeviceKeyCookie { +	cookie := c.NewCookie(false, false) +	c.NewRequest(grabDeviceKeyRequest(c, GrabWindow, NumClasses, Modifiers, ModifierDevice, GrabbedDevice, Key, ThisDeviceMode, OtherDeviceMode, OwnerEvents, Classes), cookie) +	return GrabDeviceKeyCookie{cookie} +} + +func GrabDeviceKeyChecked(c *xgb.Conn, GrabWindow xproto.Window, NumClasses uint16, Modifiers uint16, ModifierDevice byte, GrabbedDevice byte, Key byte, ThisDeviceMode byte, OtherDeviceMode byte, OwnerEvents bool, Classes []EventClass) GrabDeviceKeyCookie { +	cookie := c.NewCookie(true, false) +	c.NewRequest(grabDeviceKeyRequest(c, GrabWindow, NumClasses, Modifiers, ModifierDevice, GrabbedDevice, Key, ThisDeviceMode, OtherDeviceMode, OwnerEvents, Classes), cookie) +	return GrabDeviceKeyCookie{cookie} +} + +func (cook GrabDeviceKeyCookie) Check() error { +	return cook.Cookie.Check() +} + +// Write request to wire for GrabDeviceKey +func grabDeviceKeyRequest(c *xgb.Conn, GrabWindow xproto.Window, NumClasses uint16, Modifiers uint16, ModifierDevice byte, GrabbedDevice byte, Key byte, ThisDeviceMode byte, OtherDeviceMode byte, OwnerEvents bool, Classes []EventClass) []byte { +	size := xgb.Pad((20 + xgb.Pad((int(NumClasses) * 4)))) +	b := 0 +	buf := make([]byte, size) + +	buf[b] = c.Extensions["XINPUTEXTENSION"] +	b += 1 + +	buf[b] = 15 // request opcode +	b += 1 + +	xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units +	b += 2 + +	xgb.Put32(buf[b:], uint32(GrabWindow)) +	b += 4 + +	xgb.Put16(buf[b:], NumClasses) +	b += 2 + +	xgb.Put16(buf[b:], Modifiers) +	b += 2 + +	buf[b] = ModifierDevice +	b += 1 + +	buf[b] = GrabbedDevice +	b += 1 + +	buf[b] = Key +	b += 1 + +	buf[b] = ThisDeviceMode +	b += 1 + +	buf[b] = OtherDeviceMode +	b += 1 + +	if OwnerEvents { +		buf[b] = 1 +	} else { +		buf[b] = 0 +	} +	b += 1 + +	b += 2 // padding + +	for i := 0; i < int(NumClasses); i++ { +		xgb.Put32(buf[b:], uint32(Classes[i])) +		b += 4 +	} +	b = xgb.Pad(b) + +	return buf +} + +// Request UngrabDeviceKey +// size: 16 +type UngrabDeviceKeyCookie struct { +	*xgb.Cookie +} + +// Write request to wire for UngrabDeviceKey +func UngrabDeviceKey(c *xgb.Conn, GrabWindow xproto.Window, Modifiers uint16, ModifierDevice byte, Key byte, GrabbedDevice byte) UngrabDeviceKeyCookie { +	cookie := c.NewCookie(false, false) +	c.NewRequest(ungrabDeviceKeyRequest(c, GrabWindow, Modifiers, ModifierDevice, Key, GrabbedDevice), cookie) +	return UngrabDeviceKeyCookie{cookie} +} + +func UngrabDeviceKeyChecked(c *xgb.Conn, GrabWindow xproto.Window, Modifiers uint16, ModifierDevice byte, Key byte, GrabbedDevice byte) UngrabDeviceKeyCookie { +	cookie := c.NewCookie(true, false) +	c.NewRequest(ungrabDeviceKeyRequest(c, GrabWindow, Modifiers, ModifierDevice, Key, GrabbedDevice), cookie) +	return UngrabDeviceKeyCookie{cookie} +} + +func (cook UngrabDeviceKeyCookie) Check() error { +	return cook.Cookie.Check() +} + +// Write request to wire for UngrabDeviceKey +func ungrabDeviceKeyRequest(c *xgb.Conn, GrabWindow xproto.Window, Modifiers uint16, ModifierDevice byte, Key byte, GrabbedDevice byte) []byte { +	size := 16 +	b := 0 +	buf := make([]byte, size) + +	buf[b] = c.Extensions["XINPUTEXTENSION"] +	b += 1 + +	buf[b] = 16 // request opcode +	b += 1 + +	xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units +	b += 2 + +	xgb.Put32(buf[b:], uint32(GrabWindow)) +	b += 4 + +	xgb.Put16(buf[b:], Modifiers) +	b += 2 + +	buf[b] = ModifierDevice +	b += 1 + +	buf[b] = Key +	b += 1 + +	buf[b] = GrabbedDevice +	b += 1 + +	return buf +} + +// Request GrabDeviceButton +// size: xgb.Pad((20 + xgb.Pad((int(NumClasses) * 4)))) +type GrabDeviceButtonCookie struct { +	*xgb.Cookie +} + +// Write request to wire for GrabDeviceButton +func GrabDeviceButton(c *xgb.Conn, GrabWindow xproto.Window, GrabbedDevice byte, ModifierDevice byte, NumClasses uint16, Modifiers uint16, ThisDeviceMode byte, OtherDeviceMode byte, Button byte, OwnerEvents byte, Classes []EventClass) GrabDeviceButtonCookie { +	cookie := c.NewCookie(false, false) +	c.NewRequest(grabDeviceButtonRequest(c, GrabWindow, GrabbedDevice, ModifierDevice, NumClasses, Modifiers, ThisDeviceMode, OtherDeviceMode, Button, OwnerEvents, Classes), cookie) +	return GrabDeviceButtonCookie{cookie} +} + +func GrabDeviceButtonChecked(c *xgb.Conn, GrabWindow xproto.Window, GrabbedDevice byte, ModifierDevice byte, NumClasses uint16, Modifiers uint16, ThisDeviceMode byte, OtherDeviceMode byte, Button byte, OwnerEvents byte, Classes []EventClass) GrabDeviceButtonCookie { +	cookie := c.NewCookie(true, false) +	c.NewRequest(grabDeviceButtonRequest(c, GrabWindow, GrabbedDevice, ModifierDevice, NumClasses, Modifiers, ThisDeviceMode, OtherDeviceMode, Button, OwnerEvents, Classes), cookie) +	return GrabDeviceButtonCookie{cookie} +} + +func (cook GrabDeviceButtonCookie) Check() error { +	return cook.Cookie.Check() +} + +// Write request to wire for GrabDeviceButton +func grabDeviceButtonRequest(c *xgb.Conn, GrabWindow xproto.Window, GrabbedDevice byte, ModifierDevice byte, NumClasses uint16, Modifiers uint16, ThisDeviceMode byte, OtherDeviceMode byte, Button byte, OwnerEvents byte, Classes []EventClass) []byte { +	size := xgb.Pad((20 + xgb.Pad((int(NumClasses) * 4)))) +	b := 0 +	buf := make([]byte, size) + +	buf[b] = c.Extensions["XINPUTEXTENSION"] +	b += 1 + +	buf[b] = 17 // request opcode +	b += 1 + +	xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units +	b += 2 + +	xgb.Put32(buf[b:], uint32(GrabWindow)) +	b += 4 + +	buf[b] = GrabbedDevice +	b += 1 + +	buf[b] = ModifierDevice +	b += 1 + +	xgb.Put16(buf[b:], NumClasses) +	b += 2 + +	xgb.Put16(buf[b:], Modifiers) +	b += 2 + +	buf[b] = ThisDeviceMode +	b += 1 + +	buf[b] = OtherDeviceMode +	b += 1 + +	buf[b] = Button +	b += 1 + +	buf[b] = OwnerEvents +	b += 1 + +	b += 2 // padding + +	for i := 0; i < int(NumClasses); i++ { +		xgb.Put32(buf[b:], uint32(Classes[i])) +		b += 4 +	} +	b = xgb.Pad(b) + +	return buf +} + +// Request UngrabDeviceButton +// size: 16 +type UngrabDeviceButtonCookie struct { +	*xgb.Cookie +} + +// Write request to wire for UngrabDeviceButton +func UngrabDeviceButton(c *xgb.Conn, GrabWindow xproto.Window, Modifiers uint16, ModifierDevice byte, Button byte, GrabbedDevice byte) UngrabDeviceButtonCookie { +	cookie := c.NewCookie(false, false) +	c.NewRequest(ungrabDeviceButtonRequest(c, GrabWindow, Modifiers, ModifierDevice, Button, GrabbedDevice), cookie) +	return UngrabDeviceButtonCookie{cookie} +} + +func UngrabDeviceButtonChecked(c *xgb.Conn, GrabWindow xproto.Window, Modifiers uint16, ModifierDevice byte, Button byte, GrabbedDevice byte) UngrabDeviceButtonCookie { +	cookie := c.NewCookie(true, false) +	c.NewRequest(ungrabDeviceButtonRequest(c, GrabWindow, Modifiers, ModifierDevice, Button, GrabbedDevice), cookie) +	return UngrabDeviceButtonCookie{cookie} +} + +func (cook UngrabDeviceButtonCookie) Check() error { +	return cook.Cookie.Check() +} + +// Write request to wire for UngrabDeviceButton +func ungrabDeviceButtonRequest(c *xgb.Conn, GrabWindow xproto.Window, Modifiers uint16, ModifierDevice byte, Button byte, GrabbedDevice byte) []byte { +	size := 16 +	b := 0 +	buf := make([]byte, size) + +	buf[b] = c.Extensions["XINPUTEXTENSION"] +	b += 1 + +	buf[b] = 18 // request opcode +	b += 1 + +	xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units +	b += 2 + +	xgb.Put32(buf[b:], uint32(GrabWindow)) +	b += 4 + +	xgb.Put16(buf[b:], Modifiers) +	b += 2 + +	buf[b] = ModifierDevice +	b += 1 + +	buf[b] = Button +	b += 1 + +	buf[b] = GrabbedDevice +	b += 1 + +	return buf +} + +// Request AllowDeviceEvents +// size: 12 +type AllowDeviceEventsCookie struct { +	*xgb.Cookie +} + +// Write request to wire for AllowDeviceEvents +func AllowDeviceEvents(c *xgb.Conn, Time xproto.Timestamp, Mode byte, DeviceId byte) AllowDeviceEventsCookie { +	cookie := c.NewCookie(false, false) +	c.NewRequest(allowDeviceEventsRequest(c, Time, Mode, DeviceId), cookie) +	return AllowDeviceEventsCookie{cookie} +} + +func AllowDeviceEventsChecked(c *xgb.Conn, Time xproto.Timestamp, Mode byte, DeviceId byte) AllowDeviceEventsCookie { +	cookie := c.NewCookie(true, false) +	c.NewRequest(allowDeviceEventsRequest(c, Time, Mode, DeviceId), cookie) +	return AllowDeviceEventsCookie{cookie} +} + +func (cook AllowDeviceEventsCookie) Check() error { +	return cook.Cookie.Check() +} + +// Write request to wire for AllowDeviceEvents +func allowDeviceEventsRequest(c *xgb.Conn, Time xproto.Timestamp, Mode byte, DeviceId byte) []byte { +	size := 12 +	b := 0 +	buf := make([]byte, size) + +	buf[b] = c.Extensions["XINPUTEXTENSION"] +	b += 1 + +	buf[b] = 19 // request opcode +	b += 1 + +	xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units +	b += 2 + +	xgb.Put32(buf[b:], uint32(Time)) +	b += 4 + +	buf[b] = Mode +	b += 1 + +	buf[b] = DeviceId +	b += 1 + +	return buf +} + +// Request GetDeviceFocus +// size: 8 +type GetDeviceFocusCookie struct { +	*xgb.Cookie +} + +func GetDeviceFocus(c *xgb.Conn, DeviceId byte) GetDeviceFocusCookie { +	cookie := c.NewCookie(true, true) +	c.NewRequest(getDeviceFocusRequest(c, DeviceId), cookie) +	return GetDeviceFocusCookie{cookie} +} + +func GetDeviceFocusUnchecked(c *xgb.Conn, DeviceId byte) GetDeviceFocusCookie { +	cookie := c.NewCookie(false, true) +	c.NewRequest(getDeviceFocusRequest(c, DeviceId), cookie) +	return GetDeviceFocusCookie{cookie} +} + +// Request reply for GetDeviceFocus +// size: 32 +type GetDeviceFocusReply struct { +	Sequence uint16 +	Length   uint32 +	// padding: 1 bytes +	Focus    xproto.Window +	Time     xproto.Timestamp +	RevertTo byte +	// padding: 15 bytes +} + +// Waits and reads reply data from request GetDeviceFocus +func (cook GetDeviceFocusCookie) Reply() (*GetDeviceFocusReply, error) { +	buf, err := cook.Cookie.Reply() +	if err != nil { +		return nil, err +	} +	if buf == nil { +		return nil, nil +	} +	return getDeviceFocusReply(buf), nil +} + +// Read reply into structure from buffer for GetDeviceFocus +func getDeviceFocusReply(buf []byte) *GetDeviceFocusReply { +	v := new(GetDeviceFocusReply) +	b := 1 // skip reply determinant + +	b += 1 // padding + +	v.Sequence = xgb.Get16(buf[b:]) +	b += 2 + +	v.Length = xgb.Get32(buf[b:]) // 4-byte units +	b += 4 + +	v.Focus = xproto.Window(xgb.Get32(buf[b:])) +	b += 4 + +	v.Time = xproto.Timestamp(xgb.Get32(buf[b:])) +	b += 4 + +	v.RevertTo = buf[b] +	b += 1 + +	b += 15 // padding + +	return v +} + +// Write request to wire for GetDeviceFocus +func getDeviceFocusRequest(c *xgb.Conn, DeviceId byte) []byte { +	size := 8 +	b := 0 +	buf := make([]byte, size) + +	buf[b] = c.Extensions["XINPUTEXTENSION"] +	b += 1 + +	buf[b] = 20 // request opcode +	b += 1 + +	xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units +	b += 2 + +	buf[b] = DeviceId +	b += 1 + +	b += 3 // padding + +	return buf +} + +// Request SetDeviceFocus +// size: 16 +type SetDeviceFocusCookie struct { +	*xgb.Cookie +} + +// Write request to wire for SetDeviceFocus +func SetDeviceFocus(c *xgb.Conn, Focus xproto.Window, Time xproto.Timestamp, RevertTo byte, DeviceId byte) SetDeviceFocusCookie { +	cookie := c.NewCookie(false, false) +	c.NewRequest(setDeviceFocusRequest(c, Focus, Time, RevertTo, DeviceId), cookie) +	return SetDeviceFocusCookie{cookie} +} + +func SetDeviceFocusChecked(c *xgb.Conn, Focus xproto.Window, Time xproto.Timestamp, RevertTo byte, DeviceId byte) SetDeviceFocusCookie { +	cookie := c.NewCookie(true, false) +	c.NewRequest(setDeviceFocusRequest(c, Focus, Time, RevertTo, DeviceId), cookie) +	return SetDeviceFocusCookie{cookie} +} + +func (cook SetDeviceFocusCookie) Check() error { +	return cook.Cookie.Check() +} + +// Write request to wire for SetDeviceFocus +func setDeviceFocusRequest(c *xgb.Conn, Focus xproto.Window, Time xproto.Timestamp, RevertTo byte, DeviceId byte) []byte { +	size := 16 +	b := 0 +	buf := make([]byte, size) + +	buf[b] = c.Extensions["XINPUTEXTENSION"] +	b += 1 + +	buf[b] = 21 // request opcode +	b += 1 + +	xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units +	b += 2 + +	xgb.Put32(buf[b:], uint32(Focus)) +	b += 4 + +	xgb.Put32(buf[b:], uint32(Time)) +	b += 4 + +	buf[b] = RevertTo +	b += 1 + +	buf[b] = DeviceId +	b += 1 + +	return buf +} + +// Request GetFeedbackControl +// size: 8 +type GetFeedbackControlCookie struct { +	*xgb.Cookie +} + +func GetFeedbackControl(c *xgb.Conn, DeviceId byte) GetFeedbackControlCookie { +	cookie := c.NewCookie(true, true) +	c.NewRequest(getFeedbackControlRequest(c, DeviceId), cookie) +	return GetFeedbackControlCookie{cookie} +} + +func GetFeedbackControlUnchecked(c *xgb.Conn, DeviceId byte) GetFeedbackControlCookie { +	cookie := c.NewCookie(false, true) +	c.NewRequest(getFeedbackControlRequest(c, DeviceId), cookie) +	return GetFeedbackControlCookie{cookie} +} + +// Request reply for GetFeedbackControl +// size: 32 +type GetFeedbackControlReply struct { +	Sequence uint16 +	Length   uint32 +	// padding: 1 bytes +	NumFeedback uint16 +	// padding: 22 bytes +} + +// Waits and reads reply data from request GetFeedbackControl +func (cook GetFeedbackControlCookie) Reply() (*GetFeedbackControlReply, error) { +	buf, err := cook.Cookie.Reply() +	if err != nil { +		return nil, err +	} +	if buf == nil { +		return nil, nil +	} +	return getFeedbackControlReply(buf), nil +} + +// Read reply into structure from buffer for GetFeedbackControl +func getFeedbackControlReply(buf []byte) *GetFeedbackControlReply { +	v := new(GetFeedbackControlReply) +	b := 1 // skip reply determinant + +	b += 1 // padding + +	v.Sequence = xgb.Get16(buf[b:]) +	b += 2 + +	v.Length = xgb.Get32(buf[b:]) // 4-byte units +	b += 4 + +	v.NumFeedback = xgb.Get16(buf[b:]) +	b += 2 + +	b += 22 // padding + +	return v +} + +// Write request to wire for GetFeedbackControl +func getFeedbackControlRequest(c *xgb.Conn, DeviceId byte) []byte { +	size := 8 +	b := 0 +	buf := make([]byte, size) + +	buf[b] = c.Extensions["XINPUTEXTENSION"] +	b += 1 + +	buf[b] = 22 // request opcode +	b += 1 + +	xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units +	b += 2 + +	buf[b] = DeviceId +	b += 1 + +	b += 3 // padding + +	return buf +} + +// Request GetDeviceKeyMapping +// size: 8 +type GetDeviceKeyMappingCookie struct { +	*xgb.Cookie +} + +func GetDeviceKeyMapping(c *xgb.Conn, DeviceId byte, FirstKeycode KeyCode, Count byte) GetDeviceKeyMappingCookie { +	cookie := c.NewCookie(true, true) +	c.NewRequest(getDeviceKeyMappingRequest(c, DeviceId, FirstKeycode, Count), cookie) +	return GetDeviceKeyMappingCookie{cookie} +} + +func GetDeviceKeyMappingUnchecked(c *xgb.Conn, DeviceId byte, FirstKeycode KeyCode, Count byte) GetDeviceKeyMappingCookie { +	cookie := c.NewCookie(false, true) +	c.NewRequest(getDeviceKeyMappingRequest(c, DeviceId, FirstKeycode, Count), cookie) +	return GetDeviceKeyMappingCookie{cookie} +} + +// Request reply for GetDeviceKeyMapping +// size: (32 + xgb.Pad((int(Length) * 4))) +type GetDeviceKeyMappingReply struct { +	Sequence uint16 +	Length   uint32 +	// padding: 1 bytes +	KeysymsPerKeycode byte +	// padding: 23 bytes +	Keysyms []xproto.Keysym // size: xgb.Pad((int(Length) * 4)) +} + +// Waits and reads reply data from request GetDeviceKeyMapping +func (cook GetDeviceKeyMappingCookie) Reply() (*GetDeviceKeyMappingReply, error) { +	buf, err := cook.Cookie.Reply() +	if err != nil { +		return nil, err +	} +	if buf == nil { +		return nil, nil +	} +	return getDeviceKeyMappingReply(buf), nil +} + +// Read reply into structure from buffer for GetDeviceKeyMapping +func getDeviceKeyMappingReply(buf []byte) *GetDeviceKeyMappingReply { +	v := new(GetDeviceKeyMappingReply) +	b := 1 // skip reply determinant + +	b += 1 // padding + +	v.Sequence = xgb.Get16(buf[b:]) +	b += 2 + +	v.Length = xgb.Get32(buf[b:]) // 4-byte units +	b += 4 + +	v.KeysymsPerKeycode = buf[b] +	b += 1 + +	b += 23 // padding + +	v.Keysyms = make([]xproto.Keysym, v.Length) +	for i := 0; i < int(v.Length); i++ { +		v.Keysyms[i] = xproto.Keysym(xgb.Get32(buf[b:])) +		b += 4 +	} +	b = xgb.Pad(b) + +	return v +} + +// Write request to wire for GetDeviceKeyMapping +func getDeviceKeyMappingRequest(c *xgb.Conn, DeviceId byte, FirstKeycode KeyCode, Count byte) []byte { +	size := 8 +	b := 0 +	buf := make([]byte, size) + +	buf[b] = c.Extensions["XINPUTEXTENSION"] +	b += 1 + +	buf[b] = 24 // request opcode +	b += 1 + +	xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units +	b += 2 + +	buf[b] = DeviceId +	b += 1 + +	buf[b] = byte(FirstKeycode) +	b += 1 + +	buf[b] = Count +	b += 1 + +	return buf +} + +// Request ChangeDeviceKeyMapping +// size: xgb.Pad((8 + xgb.Pad(((int(KeycodeCount) * int(KeysymsPerKeycode)) * 4)))) +type ChangeDeviceKeyMappingCookie struct { +	*xgb.Cookie +} + +// Write request to wire for ChangeDeviceKeyMapping +func ChangeDeviceKeyMapping(c *xgb.Conn, DeviceId byte, FirstKeycode KeyCode, KeysymsPerKeycode byte, KeycodeCount byte, Keysyms []xproto.Keysym) ChangeDeviceKeyMappingCookie { +	cookie := c.NewCookie(false, false) +	c.NewRequest(changeDeviceKeyMappingRequest(c, DeviceId, FirstKeycode, KeysymsPerKeycode, KeycodeCount, Keysyms), cookie) +	return ChangeDeviceKeyMappingCookie{cookie} +} + +func ChangeDeviceKeyMappingChecked(c *xgb.Conn, DeviceId byte, FirstKeycode KeyCode, KeysymsPerKeycode byte, KeycodeCount byte, Keysyms []xproto.Keysym) ChangeDeviceKeyMappingCookie { +	cookie := c.NewCookie(true, false) +	c.NewRequest(changeDeviceKeyMappingRequest(c, DeviceId, FirstKeycode, KeysymsPerKeycode, KeycodeCount, Keysyms), cookie) +	return ChangeDeviceKeyMappingCookie{cookie} +} + +func (cook ChangeDeviceKeyMappingCookie) Check() error { +	return cook.Cookie.Check() +} + +// Write request to wire for ChangeDeviceKeyMapping +func changeDeviceKeyMappingRequest(c *xgb.Conn, DeviceId byte, FirstKeycode KeyCode, KeysymsPerKeycode byte, KeycodeCount byte, Keysyms []xproto.Keysym) []byte { +	size := xgb.Pad((8 + xgb.Pad(((int(KeycodeCount) * int(KeysymsPerKeycode)) * 4)))) +	b := 0 +	buf := make([]byte, size) + +	buf[b] = c.Extensions["XINPUTEXTENSION"] +	b += 1 + +	buf[b] = 25 // request opcode +	b += 1 + +	xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units +	b += 2 + +	buf[b] = DeviceId +	b += 1 + +	buf[b] = byte(FirstKeycode) +	b += 1 + +	buf[b] = KeysymsPerKeycode +	b += 1 + +	buf[b] = KeycodeCount +	b += 1 + +	for i := 0; i < int((int(KeycodeCount) * int(KeysymsPerKeycode))); i++ { +		xgb.Put32(buf[b:], uint32(Keysyms[i])) +		b += 4 +	} +	b = xgb.Pad(b) + +	return buf +} + +// Request GetDeviceModifierMapping +// size: 8 +type GetDeviceModifierMappingCookie struct { +	*xgb.Cookie +} + +func GetDeviceModifierMapping(c *xgb.Conn, DeviceId byte) GetDeviceModifierMappingCookie { +	cookie := c.NewCookie(true, true) +	c.NewRequest(getDeviceModifierMappingRequest(c, DeviceId), cookie) +	return GetDeviceModifierMappingCookie{cookie} +} + +func GetDeviceModifierMappingUnchecked(c *xgb.Conn, DeviceId byte) GetDeviceModifierMappingCookie { +	cookie := c.NewCookie(false, true) +	c.NewRequest(getDeviceModifierMappingRequest(c, DeviceId), cookie) +	return GetDeviceModifierMappingCookie{cookie} +} + +// Request reply for GetDeviceModifierMapping +// size: (32 + xgb.Pad(((int(KeycodesPerModifier) * 8) * 1))) +type GetDeviceModifierMappingReply struct { +	Sequence uint16 +	Length   uint32 +	// padding: 1 bytes +	KeycodesPerModifier byte +	// padding: 23 bytes +	Keymaps []byte // size: xgb.Pad(((int(KeycodesPerModifier) * 8) * 1)) +} + +// Waits and reads reply data from request GetDeviceModifierMapping +func (cook GetDeviceModifierMappingCookie) Reply() (*GetDeviceModifierMappingReply, error) { +	buf, err := cook.Cookie.Reply() +	if err != nil { +		return nil, err +	} +	if buf == nil { +		return nil, nil +	} +	return getDeviceModifierMappingReply(buf), nil +} + +// Read reply into structure from buffer for GetDeviceModifierMapping +func getDeviceModifierMappingReply(buf []byte) *GetDeviceModifierMappingReply { +	v := new(GetDeviceModifierMappingReply) +	b := 1 // skip reply determinant + +	b += 1 // padding + +	v.Sequence = xgb.Get16(buf[b:]) +	b += 2 + +	v.Length = xgb.Get32(buf[b:]) // 4-byte units +	b += 4 + +	v.KeycodesPerModifier = buf[b] +	b += 1 + +	b += 23 // padding + +	v.Keymaps = make([]byte, (int(v.KeycodesPerModifier) * 8)) +	copy(v.Keymaps[:(int(v.KeycodesPerModifier)*8)], buf[b:]) +	b += xgb.Pad(int((int(v.KeycodesPerModifier) * 8))) + +	return v +} + +// Write request to wire for GetDeviceModifierMapping +func getDeviceModifierMappingRequest(c *xgb.Conn, DeviceId byte) []byte { +	size := 8 +	b := 0 +	buf := make([]byte, size) + +	buf[b] = c.Extensions["XINPUTEXTENSION"] +	b += 1 + +	buf[b] = 26 // request opcode +	b += 1 + +	xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units +	b += 2 + +	buf[b] = DeviceId +	b += 1 + +	b += 3 // padding + +	return buf +} + +// Request SetDeviceModifierMapping +// size: xgb.Pad((7 + xgb.Pad(((int(KeycodesPerModifier) * 8) * 1)))) +type SetDeviceModifierMappingCookie struct { +	*xgb.Cookie +} + +func SetDeviceModifierMapping(c *xgb.Conn, DeviceId byte, KeycodesPerModifier byte, Keymaps []byte) SetDeviceModifierMappingCookie { +	cookie := c.NewCookie(true, true) +	c.NewRequest(setDeviceModifierMappingRequest(c, DeviceId, KeycodesPerModifier, Keymaps), cookie) +	return SetDeviceModifierMappingCookie{cookie} +} + +func SetDeviceModifierMappingUnchecked(c *xgb.Conn, DeviceId byte, KeycodesPerModifier byte, Keymaps []byte) SetDeviceModifierMappingCookie { +	cookie := c.NewCookie(false, true) +	c.NewRequest(setDeviceModifierMappingRequest(c, DeviceId, KeycodesPerModifier, Keymaps), cookie) +	return SetDeviceModifierMappingCookie{cookie} +} + +// Request reply for SetDeviceModifierMapping +// size: 32 +type SetDeviceModifierMappingReply struct { +	Sequence uint16 +	Length   uint32 +	// padding: 1 bytes +	Status byte +	// padding: 23 bytes +} + +// Waits and reads reply data from request SetDeviceModifierMapping +func (cook SetDeviceModifierMappingCookie) Reply() (*SetDeviceModifierMappingReply, error) { +	buf, err := cook.Cookie.Reply() +	if err != nil { +		return nil, err +	} +	if buf == nil { +		return nil, nil +	} +	return setDeviceModifierMappingReply(buf), nil +} + +// Read reply into structure from buffer for SetDeviceModifierMapping +func setDeviceModifierMappingReply(buf []byte) *SetDeviceModifierMappingReply { +	v := new(SetDeviceModifierMappingReply) +	b := 1 // skip reply determinant + +	b += 1 // padding + +	v.Sequence = xgb.Get16(buf[b:]) +	b += 2 + +	v.Length = xgb.Get32(buf[b:]) // 4-byte units +	b += 4 + +	v.Status = buf[b] +	b += 1 + +	b += 23 // padding + +	return v +} + +// Write request to wire for SetDeviceModifierMapping +func setDeviceModifierMappingRequest(c *xgb.Conn, DeviceId byte, KeycodesPerModifier byte, Keymaps []byte) []byte { +	size := xgb.Pad((7 + xgb.Pad(((int(KeycodesPerModifier) * 8) * 1)))) +	b := 0 +	buf := make([]byte, size) + +	buf[b] = c.Extensions["XINPUTEXTENSION"] +	b += 1 + +	buf[b] = 27 // request opcode +	b += 1 + +	xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units +	b += 2 + +	buf[b] = DeviceId +	b += 1 + +	buf[b] = KeycodesPerModifier +	b += 1 + +	b += 1 // padding + +	copy(buf[b:], Keymaps[:(int(KeycodesPerModifier)*8)]) +	b += xgb.Pad(int((int(KeycodesPerModifier) * 8))) + +	return buf +} + +// Request GetDeviceButtonMapping +// size: 8 +type GetDeviceButtonMappingCookie struct { +	*xgb.Cookie +} + +func GetDeviceButtonMapping(c *xgb.Conn, DeviceId byte) GetDeviceButtonMappingCookie { +	cookie := c.NewCookie(true, true) +	c.NewRequest(getDeviceButtonMappingRequest(c, DeviceId), cookie) +	return GetDeviceButtonMappingCookie{cookie} +} + +func GetDeviceButtonMappingUnchecked(c *xgb.Conn, DeviceId byte) GetDeviceButtonMappingCookie { +	cookie := c.NewCookie(false, true) +	c.NewRequest(getDeviceButtonMappingRequest(c, DeviceId), cookie) +	return GetDeviceButtonMappingCookie{cookie} +} + +// Request reply for GetDeviceButtonMapping +// size: (32 + xgb.Pad((int(MapSize) * 1))) +type GetDeviceButtonMappingReply struct { +	Sequence uint16 +	Length   uint32 +	// padding: 1 bytes +	MapSize byte +	// padding: 23 bytes +	Map []byte // size: xgb.Pad((int(MapSize) * 1)) +} + +// Waits and reads reply data from request GetDeviceButtonMapping +func (cook GetDeviceButtonMappingCookie) Reply() (*GetDeviceButtonMappingReply, error) { +	buf, err := cook.Cookie.Reply() +	if err != nil { +		return nil, err +	} +	if buf == nil { +		return nil, nil +	} +	return getDeviceButtonMappingReply(buf), nil +} + +// Read reply into structure from buffer for GetDeviceButtonMapping +func getDeviceButtonMappingReply(buf []byte) *GetDeviceButtonMappingReply { +	v := new(GetDeviceButtonMappingReply) +	b := 1 // skip reply determinant + +	b += 1 // padding + +	v.Sequence = xgb.Get16(buf[b:]) +	b += 2 + +	v.Length = xgb.Get32(buf[b:]) // 4-byte units +	b += 4 + +	v.MapSize = buf[b] +	b += 1 + +	b += 23 // padding + +	v.Map = make([]byte, v.MapSize) +	copy(v.Map[:v.MapSize], buf[b:]) +	b += xgb.Pad(int(v.MapSize)) + +	return v +} + +// Write request to wire for GetDeviceButtonMapping +func getDeviceButtonMappingRequest(c *xgb.Conn, DeviceId byte) []byte { +	size := 8 +	b := 0 +	buf := make([]byte, size) + +	buf[b] = c.Extensions["XINPUTEXTENSION"] +	b += 1 + +	buf[b] = 28 // request opcode +	b += 1 + +	xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units +	b += 2 + +	buf[b] = DeviceId +	b += 1 + +	b += 3 // padding + +	return buf +} + +// Request SetDeviceButtonMapping +// size: xgb.Pad((8 + xgb.Pad((int(MapSize) * 1)))) +type SetDeviceButtonMappingCookie struct { +	*xgb.Cookie +} + +func SetDeviceButtonMapping(c *xgb.Conn, DeviceId byte, MapSize byte, Map []byte) SetDeviceButtonMappingCookie { +	cookie := c.NewCookie(true, true) +	c.NewRequest(setDeviceButtonMappingRequest(c, DeviceId, MapSize, Map), cookie) +	return SetDeviceButtonMappingCookie{cookie} +} + +func SetDeviceButtonMappingUnchecked(c *xgb.Conn, DeviceId byte, MapSize byte, Map []byte) SetDeviceButtonMappingCookie { +	cookie := c.NewCookie(false, true) +	c.NewRequest(setDeviceButtonMappingRequest(c, DeviceId, MapSize, Map), cookie) +	return SetDeviceButtonMappingCookie{cookie} +} + +// Request reply for SetDeviceButtonMapping +// size: 32 +type SetDeviceButtonMappingReply struct { +	Sequence uint16 +	Length   uint32 +	// padding: 1 bytes +	Status byte +	// padding: 23 bytes +} + +// Waits and reads reply data from request SetDeviceButtonMapping +func (cook SetDeviceButtonMappingCookie) Reply() (*SetDeviceButtonMappingReply, error) { +	buf, err := cook.Cookie.Reply() +	if err != nil { +		return nil, err +	} +	if buf == nil { +		return nil, nil +	} +	return setDeviceButtonMappingReply(buf), nil +} + +// Read reply into structure from buffer for SetDeviceButtonMapping +func setDeviceButtonMappingReply(buf []byte) *SetDeviceButtonMappingReply { +	v := new(SetDeviceButtonMappingReply) +	b := 1 // skip reply determinant + +	b += 1 // padding + +	v.Sequence = xgb.Get16(buf[b:]) +	b += 2 + +	v.Length = xgb.Get32(buf[b:]) // 4-byte units +	b += 4 + +	v.Status = buf[b] +	b += 1 + +	b += 23 // padding + +	return v +} + +// Write request to wire for SetDeviceButtonMapping +func setDeviceButtonMappingRequest(c *xgb.Conn, DeviceId byte, MapSize byte, Map []byte) []byte { +	size := xgb.Pad((8 + xgb.Pad((int(MapSize) * 1)))) +	b := 0 +	buf := make([]byte, size) + +	buf[b] = c.Extensions["XINPUTEXTENSION"] +	b += 1 + +	buf[b] = 29 // request opcode +	b += 1 + +	xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units +	b += 2 + +	buf[b] = DeviceId +	b += 1 + +	buf[b] = MapSize +	b += 1 + +	b += 2 // padding + +	copy(buf[b:], Map[:MapSize]) +	b += xgb.Pad(int(MapSize)) + +	return buf +} + +// Request QueryDeviceState +// size: 8 +type QueryDeviceStateCookie struct { +	*xgb.Cookie +} + +func QueryDeviceState(c *xgb.Conn, DeviceId byte) QueryDeviceStateCookie { +	cookie := c.NewCookie(true, true) +	c.NewRequest(queryDeviceStateRequest(c, DeviceId), cookie) +	return QueryDeviceStateCookie{cookie} +} + +func QueryDeviceStateUnchecked(c *xgb.Conn, DeviceId byte) QueryDeviceStateCookie { +	cookie := c.NewCookie(false, true) +	c.NewRequest(queryDeviceStateRequest(c, DeviceId), cookie) +	return QueryDeviceStateCookie{cookie} +} + +// Request reply for QueryDeviceState +// size: 32 +type QueryDeviceStateReply struct { +	Sequence uint16 +	Length   uint32 +	// padding: 1 bytes +	NumClasses byte +	// padding: 23 bytes +} + +// Waits and reads reply data from request QueryDeviceState +func (cook QueryDeviceStateCookie) Reply() (*QueryDeviceStateReply, error) { +	buf, err := cook.Cookie.Reply() +	if err != nil { +		return nil, err +	} +	if buf == nil { +		return nil, nil +	} +	return queryDeviceStateReply(buf), nil +} + +// Read reply into structure from buffer for QueryDeviceState +func queryDeviceStateReply(buf []byte) *QueryDeviceStateReply { +	v := new(QueryDeviceStateReply) +	b := 1 // skip reply determinant + +	b += 1 // padding + +	v.Sequence = xgb.Get16(buf[b:]) +	b += 2 + +	v.Length = xgb.Get32(buf[b:]) // 4-byte units +	b += 4 + +	v.NumClasses = buf[b] +	b += 1 + +	b += 23 // padding + +	return v +} + +// Write request to wire for QueryDeviceState +func queryDeviceStateRequest(c *xgb.Conn, DeviceId byte) []byte { +	size := 8 +	b := 0 +	buf := make([]byte, size) + +	buf[b] = c.Extensions["XINPUTEXTENSION"] +	b += 1 + +	buf[b] = 30 // request opcode +	b += 1 + +	xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units +	b += 2 + +	buf[b] = DeviceId +	b += 1 + +	b += 3 // padding + +	return buf +} + +// Request SendExtensionEvent +// size: xgb.Pad(((16 + xgb.Pad(((int(NumEvents) * 32) * 1))) + xgb.Pad((int(NumClasses) * 4)))) +type SendExtensionEventCookie struct { +	*xgb.Cookie +} + +// Write request to wire for SendExtensionEvent +func SendExtensionEvent(c *xgb.Conn, Destination xproto.Window, DeviceId byte, Propagate bool, NumClasses uint16, NumEvents byte, Events string, Classes []EventClass) SendExtensionEventCookie { +	cookie := c.NewCookie(false, false) +	c.NewRequest(sendExtensionEventRequest(c, Destination, DeviceId, Propagate, NumClasses, NumEvents, Events, Classes), cookie) +	return SendExtensionEventCookie{cookie} +} + +func SendExtensionEventChecked(c *xgb.Conn, Destination xproto.Window, DeviceId byte, Propagate bool, NumClasses uint16, NumEvents byte, Events string, Classes []EventClass) SendExtensionEventCookie { +	cookie := c.NewCookie(true, false) +	c.NewRequest(sendExtensionEventRequest(c, Destination, DeviceId, Propagate, NumClasses, NumEvents, Events, Classes), cookie) +	return SendExtensionEventCookie{cookie} +} + +func (cook SendExtensionEventCookie) Check() error { +	return cook.Cookie.Check() +} + +// Write request to wire for SendExtensionEvent +func sendExtensionEventRequest(c *xgb.Conn, Destination xproto.Window, DeviceId byte, Propagate bool, NumClasses uint16, NumEvents byte, Events string, Classes []EventClass) []byte { +	size := xgb.Pad(((16 + xgb.Pad(((int(NumEvents) * 32) * 1))) + xgb.Pad((int(NumClasses) * 4)))) +	b := 0 +	buf := make([]byte, size) + +	buf[b] = c.Extensions["XINPUTEXTENSION"] +	b += 1 + +	buf[b] = 31 // request opcode +	b += 1 + +	xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units +	b += 2 + +	xgb.Put32(buf[b:], uint32(Destination)) +	b += 4 + +	buf[b] = DeviceId +	b += 1 + +	if Propagate { +		buf[b] = 1 +	} else { +		buf[b] = 0 +	} +	b += 1 + +	xgb.Put16(buf[b:], NumClasses) +	b += 2 + +	buf[b] = NumEvents +	b += 1 + +	b += 3 // padding + +	copy(buf[b:], Events[:(int(NumEvents)*32)]) +	b += xgb.Pad(int((int(NumEvents) * 32))) + +	for i := 0; i < int(NumClasses); i++ { +		xgb.Put32(buf[b:], uint32(Classes[i])) +		b += 4 +	} +	b = xgb.Pad(b) + +	return buf +} + +// Request DeviceBell +// size: 8 +type DeviceBellCookie struct { +	*xgb.Cookie +} + +// Write request to wire for DeviceBell +func DeviceBell(c *xgb.Conn, DeviceId byte, FeedbackId byte, FeedbackClass byte, Percent int8) DeviceBellCookie { +	cookie := c.NewCookie(false, false) +	c.NewRequest(deviceBellRequest(c, DeviceId, FeedbackId, FeedbackClass, Percent), cookie) +	return DeviceBellCookie{cookie} +} + +func DeviceBellChecked(c *xgb.Conn, DeviceId byte, FeedbackId byte, FeedbackClass byte, Percent int8) DeviceBellCookie { +	cookie := c.NewCookie(true, false) +	c.NewRequest(deviceBellRequest(c, DeviceId, FeedbackId, FeedbackClass, Percent), cookie) +	return DeviceBellCookie{cookie} +} + +func (cook DeviceBellCookie) Check() error { +	return cook.Cookie.Check() +} + +// Write request to wire for DeviceBell +func deviceBellRequest(c *xgb.Conn, DeviceId byte, FeedbackId byte, FeedbackClass byte, Percent int8) []byte { +	size := 8 +	b := 0 +	buf := make([]byte, size) + +	buf[b] = c.Extensions["XINPUTEXTENSION"] +	b += 1 + +	buf[b] = 32 // request opcode +	b += 1 + +	xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units +	b += 2 + +	buf[b] = DeviceId +	b += 1 + +	buf[b] = FeedbackId +	b += 1 + +	buf[b] = FeedbackClass +	b += 1 + +	buf[b] = byte(Percent) +	b += 1 + +	return buf +} + +// Request SetDeviceValuators +// size: xgb.Pad((8 + xgb.Pad((int(NumValuators) * 4)))) +type SetDeviceValuatorsCookie struct { +	*xgb.Cookie +} + +func SetDeviceValuators(c *xgb.Conn, DeviceId byte, FirstValuator byte, NumValuators byte, Valuators []int32) SetDeviceValuatorsCookie { +	cookie := c.NewCookie(true, true) +	c.NewRequest(setDeviceValuatorsRequest(c, DeviceId, FirstValuator, NumValuators, Valuators), cookie) +	return SetDeviceValuatorsCookie{cookie} +} + +func SetDeviceValuatorsUnchecked(c *xgb.Conn, DeviceId byte, FirstValuator byte, NumValuators byte, Valuators []int32) SetDeviceValuatorsCookie { +	cookie := c.NewCookie(false, true) +	c.NewRequest(setDeviceValuatorsRequest(c, DeviceId, FirstValuator, NumValuators, Valuators), cookie) +	return SetDeviceValuatorsCookie{cookie} +} + +// Request reply for SetDeviceValuators +// size: 32 +type SetDeviceValuatorsReply struct { +	Sequence uint16 +	Length   uint32 +	// padding: 1 bytes +	Status byte +	// padding: 23 bytes +} + +// Waits and reads reply data from request SetDeviceValuators +func (cook SetDeviceValuatorsCookie) Reply() (*SetDeviceValuatorsReply, error) { +	buf, err := cook.Cookie.Reply() +	if err != nil { +		return nil, err +	} +	if buf == nil { +		return nil, nil +	} +	return setDeviceValuatorsReply(buf), nil +} + +// Read reply into structure from buffer for SetDeviceValuators +func setDeviceValuatorsReply(buf []byte) *SetDeviceValuatorsReply { +	v := new(SetDeviceValuatorsReply) +	b := 1 // skip reply determinant + +	b += 1 // padding + +	v.Sequence = xgb.Get16(buf[b:]) +	b += 2 + +	v.Length = xgb.Get32(buf[b:]) // 4-byte units +	b += 4 + +	v.Status = buf[b] +	b += 1 + +	b += 23 // padding + +	return v +} + +// Write request to wire for SetDeviceValuators +func setDeviceValuatorsRequest(c *xgb.Conn, DeviceId byte, FirstValuator byte, NumValuators byte, Valuators []int32) []byte { +	size := xgb.Pad((8 + xgb.Pad((int(NumValuators) * 4)))) +	b := 0 +	buf := make([]byte, size) + +	buf[b] = c.Extensions["XINPUTEXTENSION"] +	b += 1 + +	buf[b] = 33 // request opcode +	b += 1 + +	xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units +	b += 2 + +	buf[b] = DeviceId +	b += 1 + +	buf[b] = FirstValuator +	b += 1 + +	buf[b] = NumValuators +	b += 1 + +	b += 1 // padding + +	for i := 0; i < int(NumValuators); i++ { +		xgb.Put32(buf[b:], uint32(Valuators[i])) +		b += 4 +	} +	b = xgb.Pad(b) + +	return buf +} + +// Request GetDeviceControl +// size: 8 +type GetDeviceControlCookie struct { +	*xgb.Cookie +} + +func GetDeviceControl(c *xgb.Conn, ControlId uint16, DeviceId byte) GetDeviceControlCookie { +	cookie := c.NewCookie(true, true) +	c.NewRequest(getDeviceControlRequest(c, ControlId, DeviceId), cookie) +	return GetDeviceControlCookie{cookie} +} + +func GetDeviceControlUnchecked(c *xgb.Conn, ControlId uint16, DeviceId byte) GetDeviceControlCookie { +	cookie := c.NewCookie(false, true) +	c.NewRequest(getDeviceControlRequest(c, ControlId, DeviceId), cookie) +	return GetDeviceControlCookie{cookie} +} + +// Request reply for GetDeviceControl +// size: 32 +type GetDeviceControlReply struct { +	Sequence uint16 +	Length   uint32 +	// padding: 1 bytes +	Status byte +	// padding: 23 bytes +} + +// Waits and reads reply data from request GetDeviceControl +func (cook GetDeviceControlCookie) Reply() (*GetDeviceControlReply, error) { +	buf, err := cook.Cookie.Reply() +	if err != nil { +		return nil, err +	} +	if buf == nil { +		return nil, nil +	} +	return getDeviceControlReply(buf), nil +} + +// Read reply into structure from buffer for GetDeviceControl +func getDeviceControlReply(buf []byte) *GetDeviceControlReply { +	v := new(GetDeviceControlReply) +	b := 1 // skip reply determinant + +	b += 1 // padding + +	v.Sequence = xgb.Get16(buf[b:]) +	b += 2 + +	v.Length = xgb.Get32(buf[b:]) // 4-byte units +	b += 4 + +	v.Status = buf[b] +	b += 1 + +	b += 23 // padding + +	return v +} + +// Write request to wire for GetDeviceControl +func getDeviceControlRequest(c *xgb.Conn, ControlId uint16, DeviceId byte) []byte { +	size := 8 +	b := 0 +	buf := make([]byte, size) + +	buf[b] = c.Extensions["XINPUTEXTENSION"] +	b += 1 + +	buf[b] = 34 // request opcode +	b += 1 + +	xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units +	b += 2 + +	xgb.Put16(buf[b:], ControlId) +	b += 2 + +	buf[b] = DeviceId +	b += 1 + +	b += 1 // padding + +	return buf +} | 
