package xgb /* This file was generated by xinput.xml on May 7 2012 11:34:26pm EDT. This file is automatically generated. Edit at your peril! */ // Imports are not necessary for XGB because everything is // in one package. They are still listed here for reference. // import "xproto" // XinputInit must be called before using the XInputExtension extension. func (c *Conn) XinputInit() error { reply, err := c.QueryExtension(15, "XInputExtension").Reply() switch { case err != nil: return err case !reply.Present: return errorf("No extension named XInputExtension could be found on on the server.") } c.extLock.Lock() c.extensions["XInputExtension"] = reply.MajorOpcode for evNum, fun := range newExtEventFuncs["XInputExtension"] { newEventFuncs[int(reply.FirstEvent)+evNum] = fun } for errNum, fun := range newExtErrorFuncs["XInputExtension"] { newErrorFuncs[int(reply.FirstError)+errNum] = fun } c.extLock.Unlock() return nil } func init() { newExtEventFuncs["XInputExtension"] = make(map[int]newEventFun) newExtErrorFuncs["XInputExtension"] = make(map[int]newErrorFun) } // Skipping definition for base type 'Int32' // 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 'Id' // Skipping definition for base type 'Card8' // Skipping definition for base type 'Int16' const ( XinputValuatorModeRelative = 0 XinputValuatorModeAbsolute = 1 ) const ( XinputPropagateModeAddToList = 0 XinputPropagateModeDeleteFromList = 1 ) const ( XinputDeviceUseIsXPointer = 0 XinputDeviceUseIsXKeyboard = 1 XinputDeviceUseIsXExtensionDevice = 2 XinputDeviceUseIsXExtensionKeyboard = 3 XinputDeviceUseIsXExtensionPointer = 4 ) const ( XinputInputClassKey = 0 XinputInputClassButton = 1 XinputInputClassValuator = 2 XinputInputClassFeedback = 3 XinputInputClassProximity = 4 XinputInputClassFocus = 5 XinputInputClassOther = 6 ) const ( XinputDeviceInputModeAsyncThisDevice = 0 XinputDeviceInputModeSyncThisDevice = 1 XinputDeviceInputModeReplayThisDevice = 2 XinputDeviceInputModeAsyncOtherDevices = 3 XinputDeviceInputModeAsyncAll = 4 XinputDeviceInputModeSyncAll = 5 ) const ( XinputFeedbackClassKeyboard = 0 XinputFeedbackClassPointer = 1 XinputFeedbackClassString = 2 XinputFeedbackClassInteger = 3 XinputFeedbackClassLed = 4 XinputFeedbackClassBell = 5 ) type XinputKeyCode byte type XinputEventClass uint32 // 'XinputDeviceInfo' struct definition // Size: 8 type XinputDeviceInfo struct { DeviceType Id DeviceId byte NumClassInfo byte DeviceUse byte // padding: 1 bytes } // Struct read XinputDeviceInfo func ReadXinputDeviceInfo(buf []byte, v *XinputDeviceInfo) int { b := 0 v.DeviceType = Id(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 XinputDeviceInfo func ReadXinputDeviceInfoList(buf []byte, dest []XinputDeviceInfo) int { b := 0 for i := 0; i < len(dest); i++ { dest[i] = XinputDeviceInfo{} b += ReadXinputDeviceInfo(buf[b:], &dest[i]) } return pad(b) } // Struct write XinputDeviceInfo func (v XinputDeviceInfo) Bytes() []byte { buf := make([]byte, 8) b := 0 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 XinputDeviceInfo func XinputDeviceInfoListBytes(buf []byte, list []XinputDeviceInfo) int { b := 0 var structBytes []byte for _, item := range list { structBytes = item.Bytes() copy(buf[b:], structBytes) b += pad(len(structBytes)) } return b } // 'XinputInputInfo' struct definition // Size: 2 type XinputInputInfo struct { ClassId byte Len byte } // Struct read XinputInputInfo func ReadXinputInputInfo(buf []byte, v *XinputInputInfo) int { b := 0 v.ClassId = buf[b] b += 1 v.Len = buf[b] b += 1 return b } // Struct list read XinputInputInfo func ReadXinputInputInfoList(buf []byte, dest []XinputInputInfo) int { b := 0 for i := 0; i < len(dest); i++ { dest[i] = XinputInputInfo{} b += ReadXinputInputInfo(buf[b:], &dest[i]) } return pad(b) } // Struct write XinputInputInfo func (v XinputInputInfo) 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 XinputInputInfo func XinputInputInfoListBytes(buf []byte, list []XinputInputInfo) int { b := 0 var structBytes []byte for _, item := range list { structBytes = item.Bytes() copy(buf[b:], structBytes) b += pad(len(structBytes)) } return b } // 'XinputKeyInfo' struct definition // Size: 8 type XinputKeyInfo struct { ClassId byte Len byte MinKeycode XinputKeyCode MaxKeycode XinputKeyCode NumKeys uint16 // padding: 2 bytes } // Struct read XinputKeyInfo func ReadXinputKeyInfo(buf []byte, v *XinputKeyInfo) int { b := 0 v.ClassId = buf[b] b += 1 v.Len = buf[b] b += 1 v.MinKeycode = XinputKeyCode(buf[b]) b += 1 v.MaxKeycode = XinputKeyCode(buf[b]) b += 1 v.NumKeys = Get16(buf[b:]) b += 2 b += 2 // padding return b } // Struct list read XinputKeyInfo func ReadXinputKeyInfoList(buf []byte, dest []XinputKeyInfo) int { b := 0 for i := 0; i < len(dest); i++ { dest[i] = XinputKeyInfo{} b += ReadXinputKeyInfo(buf[b:], &dest[i]) } return pad(b) } // Struct write XinputKeyInfo func (v XinputKeyInfo) 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 Put16(buf[b:], v.NumKeys) b += 2 b += 2 // padding return buf } // Write struct list XinputKeyInfo func XinputKeyInfoListBytes(buf []byte, list []XinputKeyInfo) int { b := 0 var structBytes []byte for _, item := range list { structBytes = item.Bytes() copy(buf[b:], structBytes) b += pad(len(structBytes)) } return b } // 'XinputButtonInfo' struct definition // Size: 4 type XinputButtonInfo struct { ClassId byte Len byte NumButtons uint16 } // Struct read XinputButtonInfo func ReadXinputButtonInfo(buf []byte, v *XinputButtonInfo) int { b := 0 v.ClassId = buf[b] b += 1 v.Len = buf[b] b += 1 v.NumButtons = Get16(buf[b:]) b += 2 return b } // Struct list read XinputButtonInfo func ReadXinputButtonInfoList(buf []byte, dest []XinputButtonInfo) int { b := 0 for i := 0; i < len(dest); i++ { dest[i] = XinputButtonInfo{} b += ReadXinputButtonInfo(buf[b:], &dest[i]) } return pad(b) } // Struct write XinputButtonInfo func (v XinputButtonInfo) Bytes() []byte { buf := make([]byte, 4) b := 0 buf[b] = v.ClassId b += 1 buf[b] = v.Len b += 1 Put16(buf[b:], v.NumButtons) b += 2 return buf } // Write struct list XinputButtonInfo func XinputButtonInfoListBytes(buf []byte, list []XinputButtonInfo) int { b := 0 var structBytes []byte for _, item := range list { structBytes = item.Bytes() copy(buf[b:], structBytes) b += pad(len(structBytes)) } return b } // 'XinputAxisInfo' struct definition // Size: 12 type XinputAxisInfo struct { Resolution uint32 Minimum int32 Maximum int32 } // Struct read XinputAxisInfo func ReadXinputAxisInfo(buf []byte, v *XinputAxisInfo) int { b := 0 v.Resolution = Get32(buf[b:]) b += 4 v.Minimum = int32(Get32(buf[b:])) b += 4 v.Maximum = int32(Get32(buf[b:])) b += 4 return b } // Struct list read XinputAxisInfo func ReadXinputAxisInfoList(buf []byte, dest []XinputAxisInfo) int { b := 0 for i := 0; i < len(dest); i++ { dest[i] = XinputAxisInfo{} b += ReadXinputAxisInfo(buf[b:], &dest[i]) } return pad(b) } // Struct write XinputAxisInfo func (v XinputAxisInfo) Bytes() []byte { buf := make([]byte, 12) b := 0 Put32(buf[b:], v.Resolution) b += 4 Put32(buf[b:], uint32(v.Minimum)) b += 4 Put32(buf[b:], uint32(v.Maximum)) b += 4 return buf } // Write struct list XinputAxisInfo func XinputAxisInfoListBytes(buf []byte, list []XinputAxisInfo) int { b := 0 var structBytes []byte for _, item := range list { structBytes = item.Bytes() copy(buf[b:], structBytes) b += pad(len(structBytes)) } return b } // 'XinputValuatorInfo' struct definition // Size: (8 + pad((int(AxesLen) * 12))) type XinputValuatorInfo struct { ClassId byte Len byte AxesLen byte Mode byte MotionSize uint32 Axes []XinputAxisInfo // size: pad((int(AxesLen) * 12)) } // Struct read XinputValuatorInfo func ReadXinputValuatorInfo(buf []byte, v *XinputValuatorInfo) 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 = Get32(buf[b:]) b += 4 v.Axes = make([]XinputAxisInfo, v.AxesLen) b += ReadXinputAxisInfoList(buf[b:], v.Axes) return b } // Struct list read XinputValuatorInfo func ReadXinputValuatorInfoList(buf []byte, dest []XinputValuatorInfo) int { b := 0 for i := 0; i < len(dest); i++ { dest[i] = XinputValuatorInfo{} b += ReadXinputValuatorInfo(buf[b:], &dest[i]) } return pad(b) } // Struct write XinputValuatorInfo func (v XinputValuatorInfo) Bytes() []byte { buf := make([]byte, (8 + 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 Put32(buf[b:], v.MotionSize) b += 4 b += XinputAxisInfoListBytes(buf[b:], v.Axes) return buf } // Write struct list XinputValuatorInfo func XinputValuatorInfoListBytes(buf []byte, list []XinputValuatorInfo) int { b := 0 var structBytes []byte for _, item := range list { structBytes = item.Bytes() copy(buf[b:], structBytes) b += pad(len(structBytes)) } return b } // Struct list size XinputValuatorInfo func XinputValuatorInfoListSize(list []XinputValuatorInfo) int { size := 0 for _, item := range list { size += (8 + pad((int(item.AxesLen) * 12))) } return size } // 'XinputInputClassInfo' struct definition // Size: 2 type XinputInputClassInfo struct { ClassId byte EventTypeBase byte } // Struct read XinputInputClassInfo func ReadXinputInputClassInfo(buf []byte, v *XinputInputClassInfo) int { b := 0 v.ClassId = buf[b] b += 1 v.EventTypeBase = buf[b] b += 1 return b } // Struct list read XinputInputClassInfo func ReadXinputInputClassInfoList(buf []byte, dest []XinputInputClassInfo) int { b := 0 for i := 0; i < len(dest); i++ { dest[i] = XinputInputClassInfo{} b += ReadXinputInputClassInfo(buf[b:], &dest[i]) } return pad(b) } // Struct write XinputInputClassInfo func (v XinputInputClassInfo) 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 XinputInputClassInfo func XinputInputClassInfoListBytes(buf []byte, list []XinputInputClassInfo) int { b := 0 var structBytes []byte for _, item := range list { structBytes = item.Bytes() copy(buf[b:], structBytes) b += pad(len(structBytes)) } return b } // 'XinputDeviceTimeCoord' struct definition // Size: 4 type XinputDeviceTimeCoord struct { Time Timestamp } // Struct read XinputDeviceTimeCoord func ReadXinputDeviceTimeCoord(buf []byte, v *XinputDeviceTimeCoord) int { b := 0 v.Time = Timestamp(Get32(buf[b:])) b += 4 return b } // Struct list read XinputDeviceTimeCoord func ReadXinputDeviceTimeCoordList(buf []byte, dest []XinputDeviceTimeCoord) int { b := 0 for i := 0; i < len(dest); i++ { dest[i] = XinputDeviceTimeCoord{} b += ReadXinputDeviceTimeCoord(buf[b:], &dest[i]) } return pad(b) } // Struct write XinputDeviceTimeCoord func (v XinputDeviceTimeCoord) Bytes() []byte { buf := make([]byte, 4) b := 0 Put32(buf[b:], uint32(v.Time)) b += 4 return buf } // Write struct list XinputDeviceTimeCoord func XinputDeviceTimeCoordListBytes(buf []byte, list []XinputDeviceTimeCoord) int { b := 0 var structBytes []byte for _, item := range list { structBytes = item.Bytes() copy(buf[b:], structBytes) b += pad(len(structBytes)) } return b } // 'XinputFeedbackState' struct definition // Size: 4 type XinputFeedbackState struct { ClassId byte Id byte Len uint16 } // Struct read XinputFeedbackState func ReadXinputFeedbackState(buf []byte, v *XinputFeedbackState) int { b := 0 v.ClassId = buf[b] b += 1 v.Id = buf[b] b += 1 v.Len = Get16(buf[b:]) b += 2 return b } // Struct list read XinputFeedbackState func ReadXinputFeedbackStateList(buf []byte, dest []XinputFeedbackState) int { b := 0 for i := 0; i < len(dest); i++ { dest[i] = XinputFeedbackState{} b += ReadXinputFeedbackState(buf[b:], &dest[i]) } return pad(b) } // Struct write XinputFeedbackState func (v XinputFeedbackState) Bytes() []byte { buf := make([]byte, 4) b := 0 buf[b] = v.ClassId b += 1 buf[b] = v.Id b += 1 Put16(buf[b:], v.Len) b += 2 return buf } // Write struct list XinputFeedbackState func XinputFeedbackStateListBytes(buf []byte, list []XinputFeedbackState) int { b := 0 var structBytes []byte for _, item := range list { structBytes = item.Bytes() copy(buf[b:], structBytes) b += pad(len(structBytes)) } return b } // 'XinputKbdFeedbackState' struct definition // Size: 52 type XinputKbdFeedbackState 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 XinputKbdFeedbackState func ReadXinputKbdFeedbackState(buf []byte, v *XinputKbdFeedbackState) int { b := 0 v.ClassId = buf[b] b += 1 v.Id = buf[b] b += 1 v.Len = Get16(buf[b:]) b += 2 v.Pitch = Get16(buf[b:]) b += 2 v.Duration = Get16(buf[b:]) b += 2 v.LedMask = Get32(buf[b:]) b += 4 v.LedValues = 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 += pad(int(32)) return b } // Struct list read XinputKbdFeedbackState func ReadXinputKbdFeedbackStateList(buf []byte, dest []XinputKbdFeedbackState) int { b := 0 for i := 0; i < len(dest); i++ { dest[i] = XinputKbdFeedbackState{} b += ReadXinputKbdFeedbackState(buf[b:], &dest[i]) } return pad(b) } // Struct write XinputKbdFeedbackState func (v XinputKbdFeedbackState) Bytes() []byte { buf := make([]byte, 52) b := 0 buf[b] = v.ClassId b += 1 buf[b] = v.Id b += 1 Put16(buf[b:], v.Len) b += 2 Put16(buf[b:], v.Pitch) b += 2 Put16(buf[b:], v.Duration) b += 2 Put32(buf[b:], v.LedMask) b += 4 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 += pad(int(32)) return buf } // Write struct list XinputKbdFeedbackState func XinputKbdFeedbackStateListBytes(buf []byte, list []XinputKbdFeedbackState) int { b := 0 var structBytes []byte for _, item := range list { structBytes = item.Bytes() copy(buf[b:], structBytes) b += pad(len(structBytes)) } return b } // Struct list size XinputKbdFeedbackState func XinputKbdFeedbackStateListSize(list []XinputKbdFeedbackState) int { size := 0 for _ = range list { size += 52 } return size } // 'XinputPtrFeedbackState' struct definition // Size: 12 type XinputPtrFeedbackState struct { ClassId byte Id byte Len uint16 // padding: 2 bytes AccelNum uint16 AccelDenom uint16 Threshold uint16 } // Struct read XinputPtrFeedbackState func ReadXinputPtrFeedbackState(buf []byte, v *XinputPtrFeedbackState) int { b := 0 v.ClassId = buf[b] b += 1 v.Id = buf[b] b += 1 v.Len = Get16(buf[b:]) b += 2 b += 2 // padding v.AccelNum = Get16(buf[b:]) b += 2 v.AccelDenom = Get16(buf[b:]) b += 2 v.Threshold = Get16(buf[b:]) b += 2 return b } // Struct list read XinputPtrFeedbackState func ReadXinputPtrFeedbackStateList(buf []byte, dest []XinputPtrFeedbackState) int { b := 0 for i := 0; i < len(dest); i++ { dest[i] = XinputPtrFeedbackState{} b += ReadXinputPtrFeedbackState(buf[b:], &dest[i]) } return pad(b) } // Struct write XinputPtrFeedbackState func (v XinputPtrFeedbackState) Bytes() []byte { buf := make([]byte, 12) b := 0 buf[b] = v.ClassId b += 1 buf[b] = v.Id b += 1 Put16(buf[b:], v.Len) b += 2 b += 2 // padding Put16(buf[b:], v.AccelNum) b += 2 Put16(buf[b:], v.AccelDenom) b += 2 Put16(buf[b:], v.Threshold) b += 2 return buf } // Write struct list XinputPtrFeedbackState func XinputPtrFeedbackStateListBytes(buf []byte, list []XinputPtrFeedbackState) int { b := 0 var structBytes []byte for _, item := range list { structBytes = item.Bytes() copy(buf[b:], structBytes) b += pad(len(structBytes)) } return b } // 'XinputIntegerFeedbackState' struct definition // Size: 16 type XinputIntegerFeedbackState struct { ClassId byte Id byte Len uint16 Resolution uint32 MinValue int32 MaxValue int32 } // Struct read XinputIntegerFeedbackState func ReadXinputIntegerFeedbackState(buf []byte, v *XinputIntegerFeedbackState) int { b := 0 v.ClassId = buf[b] b += 1 v.Id = buf[b] b += 1 v.Len = Get16(buf[b:]) b += 2 v.Resolution = Get32(buf[b:]) b += 4 v.MinValue = int32(Get32(buf[b:])) b += 4 v.MaxValue = int32(Get32(buf[b:])) b += 4 return b } // Struct list read XinputIntegerFeedbackState func ReadXinputIntegerFeedbackStateList(buf []byte, dest []XinputIntegerFeedbackState) int { b := 0 for i := 0; i < len(dest); i++ { dest[i] = XinputIntegerFeedbackState{} b += ReadXinputIntegerFeedbackState(buf[b:], &dest[i]) } return pad(b) } // Struct write XinputIntegerFeedbackState func (v XinputIntegerFeedbackState) Bytes() []byte { buf := make([]byte, 16) b := 0 buf[b] = v.ClassId b += 1 buf[b] = v.Id b += 1 Put16(buf[b:], v.Len) b += 2 Put32(buf[b:], v.Resolution) b += 4 Put32(buf[b:], uint32(v.MinValue)) b += 4 Put32(buf[b:], uint32(v.MaxValue)) b += 4 return buf } // Write struct list XinputIntegerFeedbackState func XinputIntegerFeedbackStateListBytes(buf []byte, list []XinputIntegerFeedbackState) int { b := 0 var structBytes []byte for _, item := range list { structBytes = item.Bytes() copy(buf[b:], structBytes) b += pad(len(structBytes)) } return b } // 'XinputStringFeedbackState' struct definition // Size: (8 + pad((int(NumKeysyms) * 4))) type XinputStringFeedbackState struct { ClassId byte Id byte Len uint16 MaxSymbols uint16 NumKeysyms uint16 Keysyms []Keysym // size: pad((int(NumKeysyms) * 4)) } // Struct read XinputStringFeedbackState func ReadXinputStringFeedbackState(buf []byte, v *XinputStringFeedbackState) int { b := 0 v.ClassId = buf[b] b += 1 v.Id = buf[b] b += 1 v.Len = Get16(buf[b:]) b += 2 v.MaxSymbols = Get16(buf[b:]) b += 2 v.NumKeysyms = Get16(buf[b:]) b += 2 v.Keysyms = make([]Keysym, v.NumKeysyms) for i := 0; i < int(v.NumKeysyms); i++ { v.Keysyms[i] = Keysym(Get32(buf[b:])) b += 4 } b = pad(b) return b } // Struct list read XinputStringFeedbackState func ReadXinputStringFeedbackStateList(buf []byte, dest []XinputStringFeedbackState) int { b := 0 for i := 0; i < len(dest); i++ { dest[i] = XinputStringFeedbackState{} b += ReadXinputStringFeedbackState(buf[b:], &dest[i]) } return pad(b) } // Struct write XinputStringFeedbackState func (v XinputStringFeedbackState) Bytes() []byte { buf := make([]byte, (8 + pad((int(v.NumKeysyms) * 4)))) b := 0 buf[b] = v.ClassId b += 1 buf[b] = v.Id b += 1 Put16(buf[b:], v.Len) b += 2 Put16(buf[b:], v.MaxSymbols) b += 2 Put16(buf[b:], v.NumKeysyms) b += 2 for i := 0; i < int(v.NumKeysyms); i++ { Put32(buf[b:], uint32(v.Keysyms[i])) b += 4 } b = pad(b) return buf } // Write struct list XinputStringFeedbackState func XinputStringFeedbackStateListBytes(buf []byte, list []XinputStringFeedbackState) int { b := 0 var structBytes []byte for _, item := range list { structBytes = item.Bytes() copy(buf[b:], structBytes) b += pad(len(structBytes)) } return b } // Struct list size XinputStringFeedbackState func XinputStringFeedbackStateListSize(list []XinputStringFeedbackState) int { size := 0 for _, item := range list { size += (8 + pad((int(item.NumKeysyms) * 4))) } return size } // 'XinputBellFeedbackState' struct definition // Size: 12 type XinputBellFeedbackState struct { ClassId byte Id byte Len uint16 Percent byte // padding: 3 bytes Pitch uint16 Duration uint16 } // Struct read XinputBellFeedbackState func ReadXinputBellFeedbackState(buf []byte, v *XinputBellFeedbackState) int { b := 0 v.ClassId = buf[b] b += 1 v.Id = buf[b] b += 1 v.Len = Get16(buf[b:]) b += 2 v.Percent = buf[b] b += 1 b += 3 // padding v.Pitch = Get16(buf[b:]) b += 2 v.Duration = Get16(buf[b:]) b += 2 return b } // Struct list read XinputBellFeedbackState func ReadXinputBellFeedbackStateList(buf []byte, dest []XinputBellFeedbackState) int { b := 0 for i := 0; i < len(dest); i++ { dest[i] = XinputBellFeedbackState{} b += ReadXinputBellFeedbackState(buf[b:], &dest[i]) } return pad(b) } // Struct write XinputBellFeedbackState func (v XinputBellFeedbackState) Bytes() []byte { buf := make([]byte, 12) b := 0 buf[b] = v.ClassId b += 1 buf[b] = v.Id b += 1 Put16(buf[b:], v.Len) b += 2 buf[b] = v.Percent b += 1 b += 3 // padding Put16(buf[b:], v.Pitch) b += 2 Put16(buf[b:], v.Duration) b += 2 return buf } // Write struct list XinputBellFeedbackState func XinputBellFeedbackStateListBytes(buf []byte, list []XinputBellFeedbackState) int { b := 0 var structBytes []byte for _, item := range list { structBytes = item.Bytes() copy(buf[b:], structBytes) b += pad(len(structBytes)) } return b } // 'XinputLedFeedbackState' struct definition // Size: 12 type XinputLedFeedbackState struct { ClassId byte Id byte Len uint16 LedMask uint32 LedValues uint32 } // Struct read XinputLedFeedbackState func ReadXinputLedFeedbackState(buf []byte, v *XinputLedFeedbackState) int { b := 0 v.ClassId = buf[b] b += 1 v.Id = buf[b] b += 1 v.Len = Get16(buf[b:]) b += 2 v.LedMask = Get32(buf[b:]) b += 4 v.LedValues = Get32(buf[b:]) b += 4 return b } // Struct list read XinputLedFeedbackState func ReadXinputLedFeedbackStateList(buf []byte, dest []XinputLedFeedbackState) int { b := 0 for i := 0; i < len(dest); i++ { dest[i] = XinputLedFeedbackState{} b += ReadXinputLedFeedbackState(buf[b:], &dest[i]) } return pad(b) } // Struct write XinputLedFeedbackState func (v XinputLedFeedbackState) Bytes() []byte { buf := make([]byte, 12) b := 0 buf[b] = v.ClassId b += 1 buf[b] = v.Id b += 1 Put16(buf[b:], v.Len) b += 2 Put32(buf[b:], v.LedMask) b += 4 Put32(buf[b:], v.LedValues) b += 4 return buf } // Write struct list XinputLedFeedbackState func XinputLedFeedbackStateListBytes(buf []byte, list []XinputLedFeedbackState) int { b := 0 var structBytes []byte for _, item := range list { structBytes = item.Bytes() copy(buf[b:], structBytes) b += pad(len(structBytes)) } return b } // 'XinputFeedbackCtl' struct definition // Size: 4 type XinputFeedbackCtl struct { ClassId byte Id byte Len uint16 } // Struct read XinputFeedbackCtl func ReadXinputFeedbackCtl(buf []byte, v *XinputFeedbackCtl) int { b := 0 v.ClassId = buf[b] b += 1 v.Id = buf[b] b += 1 v.Len = Get16(buf[b:]) b += 2 return b } // Struct list read XinputFeedbackCtl func ReadXinputFeedbackCtlList(buf []byte, dest []XinputFeedbackCtl) int { b := 0 for i := 0; i < len(dest); i++ { dest[i] = XinputFeedbackCtl{} b += ReadXinputFeedbackCtl(buf[b:], &dest[i]) } return pad(b) } // Struct write XinputFeedbackCtl func (v XinputFeedbackCtl) Bytes() []byte { buf := make([]byte, 4) b := 0 buf[b] = v.ClassId b += 1 buf[b] = v.Id b += 1 Put16(buf[b:], v.Len) b += 2 return buf } // Write struct list XinputFeedbackCtl func XinputFeedbackCtlListBytes(buf []byte, list []XinputFeedbackCtl) int { b := 0 var structBytes []byte for _, item := range list { structBytes = item.Bytes() copy(buf[b:], structBytes) b += pad(len(structBytes)) } return b } // 'XinputKbdFeedbackCtl' struct definition // Size: 20 type XinputKbdFeedbackCtl struct { ClassId byte Id byte Len uint16 Key XinputKeyCode AutoRepeatMode byte KeyClickPercent int8 BellPercent int8 BellPitch int16 BellDuration int16 LedMask uint32 LedValues uint32 } // Struct read XinputKbdFeedbackCtl func ReadXinputKbdFeedbackCtl(buf []byte, v *XinputKbdFeedbackCtl) int { b := 0 v.ClassId = buf[b] b += 1 v.Id = buf[b] b += 1 v.Len = Get16(buf[b:]) b += 2 v.Key = XinputKeyCode(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(Get16(buf[b:])) b += 2 v.BellDuration = int16(Get16(buf[b:])) b += 2 v.LedMask = Get32(buf[b:]) b += 4 v.LedValues = Get32(buf[b:]) b += 4 return b } // Struct list read XinputKbdFeedbackCtl func ReadXinputKbdFeedbackCtlList(buf []byte, dest []XinputKbdFeedbackCtl) int { b := 0 for i := 0; i < len(dest); i++ { dest[i] = XinputKbdFeedbackCtl{} b += ReadXinputKbdFeedbackCtl(buf[b:], &dest[i]) } return pad(b) } // Struct write XinputKbdFeedbackCtl func (v XinputKbdFeedbackCtl) Bytes() []byte { buf := make([]byte, 20) b := 0 buf[b] = v.ClassId b += 1 buf[b] = v.Id b += 1 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 Put16(buf[b:], uint16(v.BellPitch)) b += 2 Put16(buf[b:], uint16(v.BellDuration)) b += 2 Put32(buf[b:], v.LedMask) b += 4 Put32(buf[b:], v.LedValues) b += 4 return buf } // Write struct list XinputKbdFeedbackCtl func XinputKbdFeedbackCtlListBytes(buf []byte, list []XinputKbdFeedbackCtl) int { b := 0 var structBytes []byte for _, item := range list { structBytes = item.Bytes() copy(buf[b:], structBytes) b += pad(len(structBytes)) } return b } // 'XinputPtrFeedbackCtl' struct definition // Size: 12 type XinputPtrFeedbackCtl struct { ClassId byte Id byte Len uint16 // padding: 2 bytes Num int16 Denom int16 Threshold int16 } // Struct read XinputPtrFeedbackCtl func ReadXinputPtrFeedbackCtl(buf []byte, v *XinputPtrFeedbackCtl) int { b := 0 v.ClassId = buf[b] b += 1 v.Id = buf[b] b += 1 v.Len = Get16(buf[b:]) b += 2 b += 2 // padding v.Num = int16(Get16(buf[b:])) b += 2 v.Denom = int16(Get16(buf[b:])) b += 2 v.Threshold = int16(Get16(buf[b:])) b += 2 return b } // Struct list read XinputPtrFeedbackCtl func ReadXinputPtrFeedbackCtlList(buf []byte, dest []XinputPtrFeedbackCtl) int { b := 0 for i := 0; i < len(dest); i++ { dest[i] = XinputPtrFeedbackCtl{} b += ReadXinputPtrFeedbackCtl(buf[b:], &dest[i]) } return pad(b) } // Struct write XinputPtrFeedbackCtl func (v XinputPtrFeedbackCtl) Bytes() []byte { buf := make([]byte, 12) b := 0 buf[b] = v.ClassId b += 1 buf[b] = v.Id b += 1 Put16(buf[b:], v.Len) b += 2 b += 2 // padding Put16(buf[b:], uint16(v.Num)) b += 2 Put16(buf[b:], uint16(v.Denom)) b += 2 Put16(buf[b:], uint16(v.Threshold)) b += 2 return buf } // Write struct list XinputPtrFeedbackCtl func XinputPtrFeedbackCtlListBytes(buf []byte, list []XinputPtrFeedbackCtl) int { b := 0 var structBytes []byte for _, item := range list { structBytes = item.Bytes() copy(buf[b:], structBytes) b += pad(len(structBytes)) } return b } // 'XinputIntegerFeedbackCtl' struct definition // Size: 8 type XinputIntegerFeedbackCtl struct { ClassId byte Id byte Len uint16 IntToDisplay int32 } // Struct read XinputIntegerFeedbackCtl func ReadXinputIntegerFeedbackCtl(buf []byte, v *XinputIntegerFeedbackCtl) int { b := 0 v.ClassId = buf[b] b += 1 v.Id = buf[b] b += 1 v.Len = Get16(buf[b:]) b += 2 v.IntToDisplay = int32(Get32(buf[b:])) b += 4 return b } // Struct list read XinputIntegerFeedbackCtl func ReadXinputIntegerFeedbackCtlList(buf []byte, dest []XinputIntegerFeedbackCtl) int { b := 0 for i := 0; i < len(dest); i++ { dest[i] = XinputIntegerFeedbackCtl{} b += ReadXinputIntegerFeedbackCtl(buf[b:], &dest[i]) } return pad(b) } // Struct write XinputIntegerFeedbackCtl func (v XinputIntegerFeedbackCtl) Bytes() []byte { buf := make([]byte, 8) b := 0 buf[b] = v.ClassId b += 1 buf[b] = v.Id b += 1 Put16(buf[b:], v.Len) b += 2 Put32(buf[b:], uint32(v.IntToDisplay)) b += 4 return buf } // Write struct list XinputIntegerFeedbackCtl func XinputIntegerFeedbackCtlListBytes(buf []byte, list []XinputIntegerFeedbackCtl) int { b := 0 var structBytes []byte for _, item := range list { structBytes = item.Bytes() copy(buf[b:], structBytes) b += pad(len(structBytes)) } return b } // 'XinputStringFeedbackCtl' struct definition // Size: (8 + pad((int(NumKeysyms) * 4))) type XinputStringFeedbackCtl struct { ClassId byte Id byte Len uint16 // padding: 2 bytes NumKeysyms uint16 Keysyms []Keysym // size: pad((int(NumKeysyms) * 4)) } // Struct read XinputStringFeedbackCtl func ReadXinputStringFeedbackCtl(buf []byte, v *XinputStringFeedbackCtl) int { b := 0 v.ClassId = buf[b] b += 1 v.Id = buf[b] b += 1 v.Len = Get16(buf[b:]) b += 2 b += 2 // padding v.NumKeysyms = Get16(buf[b:]) b += 2 v.Keysyms = make([]Keysym, v.NumKeysyms) for i := 0; i < int(v.NumKeysyms); i++ { v.Keysyms[i] = Keysym(Get32(buf[b:])) b += 4 } b = pad(b) return b } // Struct list read XinputStringFeedbackCtl func ReadXinputStringFeedbackCtlList(buf []byte, dest []XinputStringFeedbackCtl) int { b := 0 for i := 0; i < len(dest); i++ { dest[i] = XinputStringFeedbackCtl{} b += ReadXinputStringFeedbackCtl(buf[b:], &dest[i]) } return pad(b) } // Struct write XinputStringFeedbackCtl func (v XinputStringFeedbackCtl) Bytes() []byte { buf := make([]byte, (8 + pad((int(v.NumKeysyms) * 4)))) b := 0 buf[b] = v.ClassId b += 1 buf[b] = v.Id b += 1 Put16(buf[b:], v.Len) b += 2 b += 2 // padding Put16(buf[b:], v.NumKeysyms) b += 2 for i := 0; i < int(v.NumKeysyms); i++ { Put32(buf[b:], uint32(v.Keysyms[i])) b += 4 } b = pad(b) return buf } // Write struct list XinputStringFeedbackCtl func XinputStringFeedbackCtlListBytes(buf []byte, list []XinputStringFeedbackCtl) int { b := 0 var structBytes []byte for _, item := range list { structBytes = item.Bytes() copy(buf[b:], structBytes) b += pad(len(structBytes)) } return b } // Struct list size XinputStringFeedbackCtl func XinputStringFeedbackCtlListSize(list []XinputStringFeedbackCtl) int { size := 0 for _, item := range list { size += (8 + pad((int(item.NumKeysyms) * 4))) } return size } // 'XinputBellFeedbackCtl' struct definition // Size: 12 type XinputBellFeedbackCtl struct { ClassId byte Id byte Len uint16 Percent int8 // padding: 3 bytes Pitch int16 Duration int16 } // Struct read XinputBellFeedbackCtl func ReadXinputBellFeedbackCtl(buf []byte, v *XinputBellFeedbackCtl) int { b := 0 v.ClassId = buf[b] b += 1 v.Id = buf[b] b += 1 v.Len = Get16(buf[b:]) b += 2 v.Percent = int8(buf[b]) b += 1 b += 3 // padding v.Pitch = int16(Get16(buf[b:])) b += 2 v.Duration = int16(Get16(buf[b:])) b += 2 return b } // Struct list read XinputBellFeedbackCtl func ReadXinputBellFeedbackCtlList(buf []byte, dest []XinputBellFeedbackCtl) int { b := 0 for i := 0; i < len(dest); i++ { dest[i] = XinputBellFeedbackCtl{} b += ReadXinputBellFeedbackCtl(buf[b:], &dest[i]) } return pad(b) } // Struct write XinputBellFeedbackCtl func (v XinputBellFeedbackCtl) Bytes() []byte { buf := make([]byte, 12) b := 0 buf[b] = v.ClassId b += 1 buf[b] = v.Id b += 1 Put16(buf[b:], v.Len) b += 2 buf[b] = byte(v.Percent) b += 1 b += 3 // padding Put16(buf[b:], uint16(v.Pitch)) b += 2 Put16(buf[b:], uint16(v.Duration)) b += 2 return buf } // Write struct list XinputBellFeedbackCtl func XinputBellFeedbackCtlListBytes(buf []byte, list []XinputBellFeedbackCtl) int { b := 0 var structBytes []byte for _, item := range list { structBytes = item.Bytes() copy(buf[b:], structBytes) b += pad(len(structBytes)) } return b } // 'XinputLedFeedbackCtl' struct definition // Size: 12 type XinputLedFeedbackCtl struct { ClassId byte Id byte Len uint16 LedMask uint32 LedValues uint32 } // Struct read XinputLedFeedbackCtl func ReadXinputLedFeedbackCtl(buf []byte, v *XinputLedFeedbackCtl) int { b := 0 v.ClassId = buf[b] b += 1 v.Id = buf[b] b += 1 v.Len = Get16(buf[b:]) b += 2 v.LedMask = Get32(buf[b:]) b += 4 v.LedValues = Get32(buf[b:]) b += 4 return b } // Struct list read XinputLedFeedbackCtl func ReadXinputLedFeedbackCtlList(buf []byte, dest []XinputLedFeedbackCtl) int { b := 0 for i := 0; i < len(dest); i++ { dest[i] = XinputLedFeedbackCtl{} b += ReadXinputLedFeedbackCtl(buf[b:], &dest[i]) } return pad(b) } // Struct write XinputLedFeedbackCtl func (v XinputLedFeedbackCtl) Bytes() []byte { buf := make([]byte, 12) b := 0 buf[b] = v.ClassId b += 1 buf[b] = v.Id b += 1 Put16(buf[b:], v.Len) b += 2 Put32(buf[b:], v.LedMask) b += 4 Put32(buf[b:], v.LedValues) b += 4 return buf } // Write struct list XinputLedFeedbackCtl func XinputLedFeedbackCtlListBytes(buf []byte, list []XinputLedFeedbackCtl) int { b := 0 var structBytes []byte for _, item := range list { structBytes = item.Bytes() copy(buf[b:], structBytes) b += pad(len(structBytes)) } return b } // 'XinputInputState' struct definition // Size: 3 type XinputInputState struct { ClassId byte Len byte NumItems byte } // Struct read XinputInputState func ReadXinputInputState(buf []byte, v *XinputInputState) 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 XinputInputState func ReadXinputInputStateList(buf []byte, dest []XinputInputState) int { b := 0 for i := 0; i < len(dest); i++ { dest[i] = XinputInputState{} b += ReadXinputInputState(buf[b:], &dest[i]) } return pad(b) } // Struct write XinputInputState func (v XinputInputState) 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 XinputInputState func XinputInputStateListBytes(buf []byte, list []XinputInputState) int { b := 0 var structBytes []byte for _, item := range list { structBytes = item.Bytes() copy(buf[b:], structBytes) b += pad(len(structBytes)) } return b } // 'XinputKeyState' struct definition // Size: 36 type XinputKeyState struct { ClassId byte Len byte NumKeys byte // padding: 1 bytes Keys []byte // size: 32 } // Struct read XinputKeyState func ReadXinputKeyState(buf []byte, v *XinputKeyState) 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 += pad(int(32)) return b } // Struct list read XinputKeyState func ReadXinputKeyStateList(buf []byte, dest []XinputKeyState) int { b := 0 for i := 0; i < len(dest); i++ { dest[i] = XinputKeyState{} b += ReadXinputKeyState(buf[b:], &dest[i]) } return pad(b) } // Struct write XinputKeyState func (v XinputKeyState) 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 += pad(int(32)) return buf } // Write struct list XinputKeyState func XinputKeyStateListBytes(buf []byte, list []XinputKeyState) int { b := 0 var structBytes []byte for _, item := range list { structBytes = item.Bytes() copy(buf[b:], structBytes) b += pad(len(structBytes)) } return b } // Struct list size XinputKeyState func XinputKeyStateListSize(list []XinputKeyState) int { size := 0 for _ = range list { size += 36 } return size } // 'XinputButtonState' struct definition // Size: 36 type XinputButtonState struct { ClassId byte Len byte NumButtons byte // padding: 1 bytes Buttons []byte // size: 32 } // Struct read XinputButtonState func ReadXinputButtonState(buf []byte, v *XinputButtonState) 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 += pad(int(32)) return b } // Struct list read XinputButtonState func ReadXinputButtonStateList(buf []byte, dest []XinputButtonState) int { b := 0 for i := 0; i < len(dest); i++ { dest[i] = XinputButtonState{} b += ReadXinputButtonState(buf[b:], &dest[i]) } return pad(b) } // Struct write XinputButtonState func (v XinputButtonState) 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 += pad(int(32)) return buf } // Write struct list XinputButtonState func XinputButtonStateListBytes(buf []byte, list []XinputButtonState) int { b := 0 var structBytes []byte for _, item := range list { structBytes = item.Bytes() copy(buf[b:], structBytes) b += pad(len(structBytes)) } return b } // Struct list size XinputButtonState func XinputButtonStateListSize(list []XinputButtonState) int { size := 0 for _ = range list { size += 36 } return size } // 'XinputValuatorState' struct definition // Size: (4 + pad((int(NumValuators) * 4))) type XinputValuatorState struct { ClassId byte Len byte NumValuators byte Mode byte Valuators []uint32 // size: pad((int(NumValuators) * 4)) } // Struct read XinputValuatorState func ReadXinputValuatorState(buf []byte, v *XinputValuatorState) 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] = Get32(buf[b:]) b += 4 } b = pad(b) return b } // Struct list read XinputValuatorState func ReadXinputValuatorStateList(buf []byte, dest []XinputValuatorState) int { b := 0 for i := 0; i < len(dest); i++ { dest[i] = XinputValuatorState{} b += ReadXinputValuatorState(buf[b:], &dest[i]) } return pad(b) } // Struct write XinputValuatorState func (v XinputValuatorState) Bytes() []byte { buf := make([]byte, (4 + 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++ { Put32(buf[b:], v.Valuators[i]) b += 4 } b = pad(b) return buf } // Write struct list XinputValuatorState func XinputValuatorStateListBytes(buf []byte, list []XinputValuatorState) int { b := 0 var structBytes []byte for _, item := range list { structBytes = item.Bytes() copy(buf[b:], structBytes) b += pad(len(structBytes)) } return b } // Struct list size XinputValuatorState func XinputValuatorStateListSize(list []XinputValuatorState) int { size := 0 for _, item := range list { size += (4 + pad((int(item.NumValuators) * 4))) } return size } // 'XinputDeviceState' struct definition // Size: 4 type XinputDeviceState struct { ControlId uint16 Len uint16 } // Struct read XinputDeviceState func ReadXinputDeviceState(buf []byte, v *XinputDeviceState) int { b := 0 v.ControlId = Get16(buf[b:]) b += 2 v.Len = Get16(buf[b:]) b += 2 return b } // Struct list read XinputDeviceState func ReadXinputDeviceStateList(buf []byte, dest []XinputDeviceState) int { b := 0 for i := 0; i < len(dest); i++ { dest[i] = XinputDeviceState{} b += ReadXinputDeviceState(buf[b:], &dest[i]) } return pad(b) } // Struct write XinputDeviceState func (v XinputDeviceState) Bytes() []byte { buf := make([]byte, 4) b := 0 Put16(buf[b:], v.ControlId) b += 2 Put16(buf[b:], v.Len) b += 2 return buf } // Write struct list XinputDeviceState func XinputDeviceStateListBytes(buf []byte, list []XinputDeviceState) int { b := 0 var structBytes []byte for _, item := range list { structBytes = item.Bytes() copy(buf[b:], structBytes) b += pad(len(structBytes)) } return b } // 'XinputDeviceResolutionState' struct definition // Size: (((8 + pad((int(NumValuators) * 4))) + pad((int(NumValuators) * 4))) + pad((int(NumValuators) * 4))) type XinputDeviceResolutionState struct { ControlId uint16 Len uint16 NumValuators uint32 ResolutionValues []uint32 // size: pad((int(NumValuators) * 4)) ResolutionMin []uint32 // size: pad((int(NumValuators) * 4)) ResolutionMax []uint32 // size: pad((int(NumValuators) * 4)) } // Struct read XinputDeviceResolutionState func ReadXinputDeviceResolutionState(buf []byte, v *XinputDeviceResolutionState) int { b := 0 v.ControlId = Get16(buf[b:]) b += 2 v.Len = Get16(buf[b:]) b += 2 v.NumValuators = Get32(buf[b:]) b += 4 v.ResolutionValues = make([]uint32, v.NumValuators) for i := 0; i < int(v.NumValuators); i++ { v.ResolutionValues[i] = Get32(buf[b:]) b += 4 } b = pad(b) v.ResolutionMin = make([]uint32, v.NumValuators) for i := 0; i < int(v.NumValuators); i++ { v.ResolutionMin[i] = Get32(buf[b:]) b += 4 } b = pad(b) v.ResolutionMax = make([]uint32, v.NumValuators) for i := 0; i < int(v.NumValuators); i++ { v.ResolutionMax[i] = Get32(buf[b:]) b += 4 } b = pad(b) return b } // Struct list read XinputDeviceResolutionState func ReadXinputDeviceResolutionStateList(buf []byte, dest []XinputDeviceResolutionState) int { b := 0 for i := 0; i < len(dest); i++ { dest[i] = XinputDeviceResolutionState{} b += ReadXinputDeviceResolutionState(buf[b:], &dest[i]) } return pad(b) } // Struct write XinputDeviceResolutionState func (v XinputDeviceResolutionState) Bytes() []byte { buf := make([]byte, (((8 + pad((int(v.NumValuators) * 4))) + pad((int(v.NumValuators) * 4))) + pad((int(v.NumValuators) * 4)))) b := 0 Put16(buf[b:], v.ControlId) b += 2 Put16(buf[b:], v.Len) b += 2 Put32(buf[b:], v.NumValuators) b += 4 for i := 0; i < int(v.NumValuators); i++ { Put32(buf[b:], v.ResolutionValues[i]) b += 4 } b = pad(b) for i := 0; i < int(v.NumValuators); i++ { Put32(buf[b:], v.ResolutionMin[i]) b += 4 } b = pad(b) for i := 0; i < int(v.NumValuators); i++ { Put32(buf[b:], v.ResolutionMax[i]) b += 4 } b = pad(b) return buf } // Write struct list XinputDeviceResolutionState func XinputDeviceResolutionStateListBytes(buf []byte, list []XinputDeviceResolutionState) int { b := 0 var structBytes []byte for _, item := range list { structBytes = item.Bytes() copy(buf[b:], structBytes) b += pad(len(structBytes)) } return b } // Struct list size XinputDeviceResolutionState func XinputDeviceResolutionStateListSize(list []XinputDeviceResolutionState) int { size := 0 for _, item := range list { size += (((8 + pad((int(item.NumValuators) * 4))) + pad((int(item.NumValuators) * 4))) + pad((int(item.NumValuators) * 4))) } return size } // 'XinputDeviceAbsCalibState' struct definition // Size: 36 type XinputDeviceAbsCalibState struct { ControlId uint16 Len uint16 MinX int32 MaxX int32 MinY int32 MaxY int32 FlipX uint32 FlipY uint32 Rotation uint32 ButtonThreshold uint32 } // Struct read XinputDeviceAbsCalibState func ReadXinputDeviceAbsCalibState(buf []byte, v *XinputDeviceAbsCalibState) int { b := 0 v.ControlId = Get16(buf[b:]) b += 2 v.Len = Get16(buf[b:]) b += 2 v.MinX = int32(Get32(buf[b:])) b += 4 v.MaxX = int32(Get32(buf[b:])) b += 4 v.MinY = int32(Get32(buf[b:])) b += 4 v.MaxY = int32(Get32(buf[b:])) b += 4 v.FlipX = Get32(buf[b:]) b += 4 v.FlipY = Get32(buf[b:]) b += 4 v.Rotation = Get32(buf[b:]) b += 4 v.ButtonThreshold = Get32(buf[b:]) b += 4 return b } // Struct list read XinputDeviceAbsCalibState func ReadXinputDeviceAbsCalibStateList(buf []byte, dest []XinputDeviceAbsCalibState) int { b := 0 for i := 0; i < len(dest); i++ { dest[i] = XinputDeviceAbsCalibState{} b += ReadXinputDeviceAbsCalibState(buf[b:], &dest[i]) } return pad(b) } // Struct write XinputDeviceAbsCalibState func (v XinputDeviceAbsCalibState) Bytes() []byte { buf := make([]byte, 36) b := 0 Put16(buf[b:], v.ControlId) b += 2 Put16(buf[b:], v.Len) b += 2 Put32(buf[b:], uint32(v.MinX)) b += 4 Put32(buf[b:], uint32(v.MaxX)) b += 4 Put32(buf[b:], uint32(v.MinY)) b += 4 Put32(buf[b:], uint32(v.MaxY)) b += 4 Put32(buf[b:], v.FlipX) b += 4 Put32(buf[b:], v.FlipY) b += 4 Put32(buf[b:], v.Rotation) b += 4 Put32(buf[b:], v.ButtonThreshold) b += 4 return buf } // Write struct list XinputDeviceAbsCalibState func XinputDeviceAbsCalibStateListBytes(buf []byte, list []XinputDeviceAbsCalibState) int { b := 0 var structBytes []byte for _, item := range list { structBytes = item.Bytes() copy(buf[b:], structBytes) b += pad(len(structBytes)) } return b } // 'XinputDeviceAbsAreaState' struct definition // Size: 28 type XinputDeviceAbsAreaState struct { ControlId uint16 Len uint16 OffsetX uint32 OffsetY uint32 Width uint32 Height uint32 Screen uint32 Following uint32 } // Struct read XinputDeviceAbsAreaState func ReadXinputDeviceAbsAreaState(buf []byte, v *XinputDeviceAbsAreaState) int { b := 0 v.ControlId = Get16(buf[b:]) b += 2 v.Len = Get16(buf[b:]) b += 2 v.OffsetX = Get32(buf[b:]) b += 4 v.OffsetY = Get32(buf[b:]) b += 4 v.Width = Get32(buf[b:]) b += 4 v.Height = Get32(buf[b:]) b += 4 v.Screen = Get32(buf[b:]) b += 4 v.Following = Get32(buf[b:]) b += 4 return b } // Struct list read XinputDeviceAbsAreaState func ReadXinputDeviceAbsAreaStateList(buf []byte, dest []XinputDeviceAbsAreaState) int { b := 0 for i := 0; i < len(dest); i++ { dest[i] = XinputDeviceAbsAreaState{} b += ReadXinputDeviceAbsAreaState(buf[b:], &dest[i]) } return pad(b) } // Struct write XinputDeviceAbsAreaState func (v XinputDeviceAbsAreaState) Bytes() []byte { buf := make([]byte, 28) b := 0 Put16(buf[b:], v.ControlId) b += 2 Put16(buf[b:], v.Len) b += 2 Put32(buf[b:], v.OffsetX) b += 4 Put32(buf[b:], v.OffsetY) b += 4 Put32(buf[b:], v.Width) b += 4 Put32(buf[b:], v.Height) b += 4 Put32(buf[b:], v.Screen) b += 4 Put32(buf[b:], v.Following) b += 4 return buf } // Write struct list XinputDeviceAbsAreaState func XinputDeviceAbsAreaStateListBytes(buf []byte, list []XinputDeviceAbsAreaState) int { b := 0 var structBytes []byte for _, item := range list { structBytes = item.Bytes() copy(buf[b:], structBytes) b += pad(len(structBytes)) } return b } // 'XinputDeviceCoreState' struct definition // Size: 8 type XinputDeviceCoreState struct { ControlId uint16 Len uint16 Status byte Iscore byte // padding: 2 bytes } // Struct read XinputDeviceCoreState func ReadXinputDeviceCoreState(buf []byte, v *XinputDeviceCoreState) int { b := 0 v.ControlId = Get16(buf[b:]) b += 2 v.Len = 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 XinputDeviceCoreState func ReadXinputDeviceCoreStateList(buf []byte, dest []XinputDeviceCoreState) int { b := 0 for i := 0; i < len(dest); i++ { dest[i] = XinputDeviceCoreState{} b += ReadXinputDeviceCoreState(buf[b:], &dest[i]) } return pad(b) } // Struct write XinputDeviceCoreState func (v XinputDeviceCoreState) Bytes() []byte { buf := make([]byte, 8) b := 0 Put16(buf[b:], v.ControlId) b += 2 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 XinputDeviceCoreState func XinputDeviceCoreStateListBytes(buf []byte, list []XinputDeviceCoreState) int { b := 0 var structBytes []byte for _, item := range list { structBytes = item.Bytes() copy(buf[b:], structBytes) b += pad(len(structBytes)) } return b } // 'XinputDeviceEnableState' struct definition // Size: 8 type XinputDeviceEnableState struct { ControlId uint16 Len uint16 Enable byte // padding: 3 bytes } // Struct read XinputDeviceEnableState func ReadXinputDeviceEnableState(buf []byte, v *XinputDeviceEnableState) int { b := 0 v.ControlId = Get16(buf[b:]) b += 2 v.Len = Get16(buf[b:]) b += 2 v.Enable = buf[b] b += 1 b += 3 // padding return b } // Struct list read XinputDeviceEnableState func ReadXinputDeviceEnableStateList(buf []byte, dest []XinputDeviceEnableState) int { b := 0 for i := 0; i < len(dest); i++ { dest[i] = XinputDeviceEnableState{} b += ReadXinputDeviceEnableState(buf[b:], &dest[i]) } return pad(b) } // Struct write XinputDeviceEnableState func (v XinputDeviceEnableState) Bytes() []byte { buf := make([]byte, 8) b := 0 Put16(buf[b:], v.ControlId) b += 2 Put16(buf[b:], v.Len) b += 2 buf[b] = v.Enable b += 1 b += 3 // padding return buf } // Write struct list XinputDeviceEnableState func XinputDeviceEnableStateListBytes(buf []byte, list []XinputDeviceEnableState) int { b := 0 var structBytes []byte for _, item := range list { structBytes = item.Bytes() copy(buf[b:], structBytes) b += pad(len(structBytes)) } return b } // 'XinputDeviceCtl' struct definition // Size: 4 type XinputDeviceCtl struct { ControlId uint16 Len uint16 } // Struct read XinputDeviceCtl func ReadXinputDeviceCtl(buf []byte, v *XinputDeviceCtl) int { b := 0 v.ControlId = Get16(buf[b:]) b += 2 v.Len = Get16(buf[b:]) b += 2 return b } // Struct list read XinputDeviceCtl func ReadXinputDeviceCtlList(buf []byte, dest []XinputDeviceCtl) int { b := 0 for i := 0; i < len(dest); i++ { dest[i] = XinputDeviceCtl{} b += ReadXinputDeviceCtl(buf[b:], &dest[i]) } return pad(b) } // Struct write XinputDeviceCtl func (v XinputDeviceCtl) Bytes() []byte { buf := make([]byte, 4) b := 0 Put16(buf[b:], v.ControlId) b += 2 Put16(buf[b:], v.Len) b += 2 return buf } // Write struct list XinputDeviceCtl func XinputDeviceCtlListBytes(buf []byte, list []XinputDeviceCtl) int { b := 0 var structBytes []byte for _, item := range list { structBytes = item.Bytes() copy(buf[b:], structBytes) b += pad(len(structBytes)) } return b } // 'XinputDeviceResolutionCtl' struct definition // Size: (6 + pad((int(NumValuators) * 4))) type XinputDeviceResolutionCtl struct { ControlId uint16 Len uint16 FirstValuator byte NumValuators byte ResolutionValues []uint32 // size: pad((int(NumValuators) * 4)) } // Struct read XinputDeviceResolutionCtl func ReadXinputDeviceResolutionCtl(buf []byte, v *XinputDeviceResolutionCtl) int { b := 0 v.ControlId = Get16(buf[b:]) b += 2 v.Len = 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] = Get32(buf[b:]) b += 4 } b = pad(b) return b } // Struct list read XinputDeviceResolutionCtl func ReadXinputDeviceResolutionCtlList(buf []byte, dest []XinputDeviceResolutionCtl) int { b := 0 for i := 0; i < len(dest); i++ { dest[i] = XinputDeviceResolutionCtl{} b += ReadXinputDeviceResolutionCtl(buf[b:], &dest[i]) } return pad(b) } // Struct write XinputDeviceResolutionCtl func (v XinputDeviceResolutionCtl) Bytes() []byte { buf := make([]byte, (6 + pad((int(v.NumValuators) * 4)))) b := 0 Put16(buf[b:], v.ControlId) b += 2 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++ { Put32(buf[b:], v.ResolutionValues[i]) b += 4 } b = pad(b) return buf } // Write struct list XinputDeviceResolutionCtl func XinputDeviceResolutionCtlListBytes(buf []byte, list []XinputDeviceResolutionCtl) int { b := 0 var structBytes []byte for _, item := range list { structBytes = item.Bytes() copy(buf[b:], structBytes) b += pad(len(structBytes)) } return b } // Struct list size XinputDeviceResolutionCtl func XinputDeviceResolutionCtlListSize(list []XinputDeviceResolutionCtl) int { size := 0 for _, item := range list { size += (6 + pad((int(item.NumValuators) * 4))) } return size } // 'XinputDeviceAbsCalibCtl' struct definition // Size: 36 type XinputDeviceAbsCalibCtl struct { ControlId uint16 Len uint16 MinX int32 MaxX int32 MinY int32 MaxY int32 FlipX uint32 FlipY uint32 Rotation uint32 ButtonThreshold uint32 } // Struct read XinputDeviceAbsCalibCtl func ReadXinputDeviceAbsCalibCtl(buf []byte, v *XinputDeviceAbsCalibCtl) int { b := 0 v.ControlId = Get16(buf[b:]) b += 2 v.Len = Get16(buf[b:]) b += 2 v.MinX = int32(Get32(buf[b:])) b += 4 v.MaxX = int32(Get32(buf[b:])) b += 4 v.MinY = int32(Get32(buf[b:])) b += 4 v.MaxY = int32(Get32(buf[b:])) b += 4 v.FlipX = Get32(buf[b:]) b += 4 v.FlipY = Get32(buf[b:]) b += 4 v.Rotation = Get32(buf[b:]) b += 4 v.ButtonThreshold = Get32(buf[b:]) b += 4 return b } // Struct list read XinputDeviceAbsCalibCtl func ReadXinputDeviceAbsCalibCtlList(buf []byte, dest []XinputDeviceAbsCalibCtl) int { b := 0 for i := 0; i < len(dest); i++ { dest[i] = XinputDeviceAbsCalibCtl{} b += ReadXinputDeviceAbsCalibCtl(buf[b:], &dest[i]) } return pad(b) } // Struct write XinputDeviceAbsCalibCtl func (v XinputDeviceAbsCalibCtl) Bytes() []byte { buf := make([]byte, 36) b := 0 Put16(buf[b:], v.ControlId) b += 2 Put16(buf[b:], v.Len) b += 2 Put32(buf[b:], uint32(v.MinX)) b += 4 Put32(buf[b:], uint32(v.MaxX)) b += 4 Put32(buf[b:], uint32(v.MinY)) b += 4 Put32(buf[b:], uint32(v.MaxY)) b += 4 Put32(buf[b:], v.FlipX) b += 4 Put32(buf[b:], v.FlipY) b += 4 Put32(buf[b:], v.Rotation) b += 4 Put32(buf[b:], v.ButtonThreshold) b += 4 return buf } // Write struct list XinputDeviceAbsCalibCtl func XinputDeviceAbsCalibCtlListBytes(buf []byte, list []XinputDeviceAbsCalibCtl) int { b := 0 var structBytes []byte for _, item := range list { structBytes = item.Bytes() copy(buf[b:], structBytes) b += pad(len(structBytes)) } return b } // 'XinputDeviceAbsAreaCtrl' struct definition // Size: 28 type XinputDeviceAbsAreaCtrl struct { ControlId uint16 Len uint16 OffsetX uint32 OffsetY uint32 Width int32 Height int32 Screen int32 Following uint32 } // Struct read XinputDeviceAbsAreaCtrl func ReadXinputDeviceAbsAreaCtrl(buf []byte, v *XinputDeviceAbsAreaCtrl) int { b := 0 v.ControlId = Get16(buf[b:]) b += 2 v.Len = Get16(buf[b:]) b += 2 v.OffsetX = Get32(buf[b:]) b += 4 v.OffsetY = Get32(buf[b:]) b += 4 v.Width = int32(Get32(buf[b:])) b += 4 v.Height = int32(Get32(buf[b:])) b += 4 v.Screen = int32(Get32(buf[b:])) b += 4 v.Following = Get32(buf[b:]) b += 4 return b } // Struct list read XinputDeviceAbsAreaCtrl func ReadXinputDeviceAbsAreaCtrlList(buf []byte, dest []XinputDeviceAbsAreaCtrl) int { b := 0 for i := 0; i < len(dest); i++ { dest[i] = XinputDeviceAbsAreaCtrl{} b += ReadXinputDeviceAbsAreaCtrl(buf[b:], &dest[i]) } return pad(b) } // Struct write XinputDeviceAbsAreaCtrl func (v XinputDeviceAbsAreaCtrl) Bytes() []byte { buf := make([]byte, 28) b := 0 Put16(buf[b:], v.ControlId) b += 2 Put16(buf[b:], v.Len) b += 2 Put32(buf[b:], v.OffsetX) b += 4 Put32(buf[b:], v.OffsetY) b += 4 Put32(buf[b:], uint32(v.Width)) b += 4 Put32(buf[b:], uint32(v.Height)) b += 4 Put32(buf[b:], uint32(v.Screen)) b += 4 Put32(buf[b:], v.Following) b += 4 return buf } // Write struct list XinputDeviceAbsAreaCtrl func XinputDeviceAbsAreaCtrlListBytes(buf []byte, list []XinputDeviceAbsAreaCtrl) int { b := 0 var structBytes []byte for _, item := range list { structBytes = item.Bytes() copy(buf[b:], structBytes) b += pad(len(structBytes)) } return b } // 'XinputDeviceCoreCtrl' struct definition // Size: 8 type XinputDeviceCoreCtrl struct { ControlId uint16 Len uint16 Status byte // padding: 3 bytes } // Struct read XinputDeviceCoreCtrl func ReadXinputDeviceCoreCtrl(buf []byte, v *XinputDeviceCoreCtrl) int { b := 0 v.ControlId = Get16(buf[b:]) b += 2 v.Len = Get16(buf[b:]) b += 2 v.Status = buf[b] b += 1 b += 3 // padding return b } // Struct list read XinputDeviceCoreCtrl func ReadXinputDeviceCoreCtrlList(buf []byte, dest []XinputDeviceCoreCtrl) int { b := 0 for i := 0; i < len(dest); i++ { dest[i] = XinputDeviceCoreCtrl{} b += ReadXinputDeviceCoreCtrl(buf[b:], &dest[i]) } return pad(b) } // Struct write XinputDeviceCoreCtrl func (v XinputDeviceCoreCtrl) Bytes() []byte { buf := make([]byte, 8) b := 0 Put16(buf[b:], v.ControlId) b += 2 Put16(buf[b:], v.Len) b += 2 buf[b] = v.Status b += 1 b += 3 // padding return buf } // Write struct list XinputDeviceCoreCtrl func XinputDeviceCoreCtrlListBytes(buf []byte, list []XinputDeviceCoreCtrl) int { b := 0 var structBytes []byte for _, item := range list { structBytes = item.Bytes() copy(buf[b:], structBytes) b += pad(len(structBytes)) } return b } // 'XinputDeviceEnableCtrl' struct definition // Size: 8 type XinputDeviceEnableCtrl struct { ControlId uint16 Len uint16 Enable byte // padding: 3 bytes } // Struct read XinputDeviceEnableCtrl func ReadXinputDeviceEnableCtrl(buf []byte, v *XinputDeviceEnableCtrl) int { b := 0 v.ControlId = Get16(buf[b:]) b += 2 v.Len = Get16(buf[b:]) b += 2 v.Enable = buf[b] b += 1 b += 3 // padding return b } // Struct list read XinputDeviceEnableCtrl func ReadXinputDeviceEnableCtrlList(buf []byte, dest []XinputDeviceEnableCtrl) int { b := 0 for i := 0; i < len(dest); i++ { dest[i] = XinputDeviceEnableCtrl{} b += ReadXinputDeviceEnableCtrl(buf[b:], &dest[i]) } return pad(b) } // Struct write XinputDeviceEnableCtrl func (v XinputDeviceEnableCtrl) Bytes() []byte { buf := make([]byte, 8) b := 0 Put16(buf[b:], v.ControlId) b += 2 Put16(buf[b:], v.Len) b += 2 buf[b] = v.Enable b += 1 b += 3 // padding return buf } // Write struct list XinputDeviceEnableCtrl func XinputDeviceEnableCtrlListBytes(buf []byte, list []XinputDeviceEnableCtrl) int { b := 0 var structBytes []byte for _, item := range list { structBytes = item.Bytes() copy(buf[b:], structBytes) b += pad(len(structBytes)) } return b } // Event definition XinputDeviceValuator (0) // Size: 32 const XinputDeviceValuator = 0 type XinputDeviceValuatorEvent struct { Sequence uint16 DeviceId byte DeviceState uint16 NumValuators byte FirstValuator byte Valuators []int32 // size: 24 } // Event read XinputDeviceValuator func NewXinputDeviceValuatorEvent(buf []byte) Event { v := XinputDeviceValuatorEvent{} b := 1 // don't read event number v.DeviceId = buf[b] b += 1 v.Sequence = Get16(buf[b:]) b += 2 v.DeviceState = 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(Get32(buf[b:])) b += 4 } b = pad(b) return v } // Event write XinputDeviceValuator func (v XinputDeviceValuatorEvent) 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 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++ { Put32(buf[b:], uint32(v.Valuators[i])) b += 4 } b = pad(b) return buf } func (v XinputDeviceValuatorEvent) ImplementsEvent() {} func (v XinputDeviceValuatorEvent) SequenceId() uint16 { return v.Sequence } func (v XinputDeviceValuatorEvent) String() string { fieldVals := make([]string, 0, 5) fieldVals = append(fieldVals, sprintf("Sequence: %d", v.Sequence)) fieldVals = append(fieldVals, sprintf("DeviceId: %d", v.DeviceId)) fieldVals = append(fieldVals, sprintf("DeviceState: %d", v.DeviceState)) fieldVals = append(fieldVals, sprintf("NumValuators: %d", v.NumValuators)) fieldVals = append(fieldVals, sprintf("FirstValuator: %d", v.FirstValuator)) return "XinputDeviceValuator {" + stringsJoin(fieldVals, ", ") + "}" } func init() { newExtEventFuncs["XInputExtension"][0] = NewXinputDeviceValuatorEvent } // Event definition XinputDeviceKeyPress (1) // Size: 32 const XinputDeviceKeyPress = 1 type XinputDeviceKeyPressEvent struct { Sequence uint16 Detail byte Time Timestamp Root Id Event Id Child Id RootX int16 RootY int16 EventX int16 EventY int16 State uint16 SameScreen bool DeviceId byte } // Event read XinputDeviceKeyPress func NewXinputDeviceKeyPressEvent(buf []byte) Event { v := XinputDeviceKeyPressEvent{} b := 1 // don't read event number v.Detail = buf[b] b += 1 v.Sequence = Get16(buf[b:]) b += 2 v.Time = Timestamp(Get32(buf[b:])) b += 4 v.Root = Id(Get32(buf[b:])) b += 4 v.Event = Id(Get32(buf[b:])) b += 4 v.Child = Id(Get32(buf[b:])) b += 4 v.RootX = int16(Get16(buf[b:])) b += 2 v.RootY = int16(Get16(buf[b:])) b += 2 v.EventX = int16(Get16(buf[b:])) b += 2 v.EventY = int16(Get16(buf[b:])) b += 2 v.State = 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 XinputDeviceKeyPress func (v XinputDeviceKeyPressEvent) 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 Put32(buf[b:], uint32(v.Time)) b += 4 Put32(buf[b:], uint32(v.Root)) b += 4 Put32(buf[b:], uint32(v.Event)) b += 4 Put32(buf[b:], uint32(v.Child)) b += 4 Put16(buf[b:], uint16(v.RootX)) b += 2 Put16(buf[b:], uint16(v.RootY)) b += 2 Put16(buf[b:], uint16(v.EventX)) b += 2 Put16(buf[b:], uint16(v.EventY)) b += 2 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 XinputDeviceKeyPressEvent) ImplementsEvent() {} func (v XinputDeviceKeyPressEvent) SequenceId() uint16 { return v.Sequence } func (v XinputDeviceKeyPressEvent) String() string { fieldVals := make([]string, 0, 12) fieldVals = append(fieldVals, sprintf("Sequence: %d", v.Sequence)) fieldVals = append(fieldVals, sprintf("Detail: %d", v.Detail)) fieldVals = append(fieldVals, sprintf("Time: %d", v.Time)) fieldVals = append(fieldVals, sprintf("Root: %d", v.Root)) fieldVals = append(fieldVals, sprintf("Event: %d", v.Event)) fieldVals = append(fieldVals, sprintf("Child: %d", v.Child)) fieldVals = append(fieldVals, sprintf("RootX: %d", v.RootX)) fieldVals = append(fieldVals, sprintf("RootY: %d", v.RootY)) fieldVals = append(fieldVals, sprintf("EventX: %d", v.EventX)) fieldVals = append(fieldVals, sprintf("EventY: %d", v.EventY)) fieldVals = append(fieldVals, sprintf("State: %d", v.State)) fieldVals = append(fieldVals, sprintf("SameScreen: %t", v.SameScreen)) fieldVals = append(fieldVals, sprintf("DeviceId: %d", v.DeviceId)) return "XinputDeviceKeyPress {" + stringsJoin(fieldVals, ", ") + "}" } func init() { newExtEventFuncs["XInputExtension"][1] = NewXinputDeviceKeyPressEvent } // Event definition XinputFocusIn (6) // Size: 32 const XinputFocusIn = 6 type XinputFocusInEvent struct { Sequence uint16 Detail byte Time Timestamp Window Id Mode byte DeviceId byte // padding: 18 bytes } // Event read XinputFocusIn func NewXinputFocusInEvent(buf []byte) Event { v := XinputFocusInEvent{} b := 1 // don't read event number v.Detail = buf[b] b += 1 v.Sequence = Get16(buf[b:]) b += 2 v.Time = Timestamp(Get32(buf[b:])) b += 4 v.Window = Id(Get32(buf[b:])) b += 4 v.Mode = buf[b] b += 1 v.DeviceId = buf[b] b += 1 b += 18 // padding return v } // Event write XinputFocusIn func (v XinputFocusInEvent) 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 Put32(buf[b:], uint32(v.Time)) b += 4 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 XinputFocusInEvent) ImplementsEvent() {} func (v XinputFocusInEvent) SequenceId() uint16 { return v.Sequence } func (v XinputFocusInEvent) String() string { fieldVals := make([]string, 0, 6) fieldVals = append(fieldVals, sprintf("Sequence: %d", v.Sequence)) fieldVals = append(fieldVals, sprintf("Detail: %d", v.Detail)) fieldVals = append(fieldVals, sprintf("Time: %d", v.Time)) fieldVals = append(fieldVals, sprintf("Window: %d", v.Window)) fieldVals = append(fieldVals, sprintf("Mode: %d", v.Mode)) fieldVals = append(fieldVals, sprintf("DeviceId: %d", v.DeviceId)) return "XinputFocusIn {" + stringsJoin(fieldVals, ", ") + "}" } func init() { newExtEventFuncs["XInputExtension"][6] = NewXinputFocusInEvent } // Event definition XinputDeviceStateNotify (10) // Size: 32 const XinputDeviceStateNotify = 10 type XinputDeviceStateNotifyEvent struct { Sequence uint16 DeviceId byte Time Timestamp NumKeys byte NumButtons byte NumValuators byte ClassesReported byte Buttons []byte // size: 4 Keys []byte // size: 4 Valuators []uint32 // size: 12 } // Event read XinputDeviceStateNotify func NewXinputDeviceStateNotifyEvent(buf []byte) Event { v := XinputDeviceStateNotifyEvent{} b := 1 // don't read event number v.DeviceId = buf[b] b += 1 v.Sequence = Get16(buf[b:]) b += 2 v.Time = Timestamp(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 += pad(int(4)) v.Keys = make([]byte, 4) copy(v.Keys[:4], buf[b:]) b += pad(int(4)) v.Valuators = make([]uint32, 3) for i := 0; i < int(3); i++ { v.Valuators[i] = Get32(buf[b:]) b += 4 } b = pad(b) return v } // Event write XinputDeviceStateNotify func (v XinputDeviceStateNotifyEvent) 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 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 += pad(int(4)) copy(buf[b:], v.Keys[:4]) b += pad(int(4)) for i := 0; i < int(3); i++ { Put32(buf[b:], v.Valuators[i]) b += 4 } b = pad(b) return buf } func (v XinputDeviceStateNotifyEvent) ImplementsEvent() {} func (v XinputDeviceStateNotifyEvent) SequenceId() uint16 { return v.Sequence } func (v XinputDeviceStateNotifyEvent) String() string { fieldVals := make([]string, 0, 9) fieldVals = append(fieldVals, sprintf("Sequence: %d", v.Sequence)) fieldVals = append(fieldVals, sprintf("DeviceId: %d", v.DeviceId)) fieldVals = append(fieldVals, sprintf("Time: %d", v.Time)) fieldVals = append(fieldVals, sprintf("NumKeys: %d", v.NumKeys)) fieldVals = append(fieldVals, sprintf("NumButtons: %d", v.NumButtons)) fieldVals = append(fieldVals, sprintf("NumValuators: %d", v.NumValuators)) fieldVals = append(fieldVals, sprintf("ClassesReported: %d", v.ClassesReported)) return "XinputDeviceStateNotify {" + stringsJoin(fieldVals, ", ") + "}" } func init() { newExtEventFuncs["XInputExtension"][10] = NewXinputDeviceStateNotifyEvent } // Event definition XinputDeviceMappingNotify (11) // Size: 32 const XinputDeviceMappingNotify = 11 type XinputDeviceMappingNotifyEvent struct { Sequence uint16 DeviceId byte Request byte FirstKeycode XinputKeyCode Count byte // padding: 1 bytes Time Timestamp // padding: 20 bytes } // Event read XinputDeviceMappingNotify func NewXinputDeviceMappingNotifyEvent(buf []byte) Event { v := XinputDeviceMappingNotifyEvent{} b := 1 // don't read event number v.DeviceId = buf[b] b += 1 v.Sequence = Get16(buf[b:]) b += 2 v.Request = buf[b] b += 1 v.FirstKeycode = XinputKeyCode(buf[b]) b += 1 v.Count = buf[b] b += 1 b += 1 // padding v.Time = Timestamp(Get32(buf[b:])) b += 4 b += 20 // padding return v } // Event write XinputDeviceMappingNotify func (v XinputDeviceMappingNotifyEvent) 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 Put32(buf[b:], uint32(v.Time)) b += 4 b += 20 // padding return buf } func (v XinputDeviceMappingNotifyEvent) ImplementsEvent() {} func (v XinputDeviceMappingNotifyEvent) SequenceId() uint16 { return v.Sequence } func (v XinputDeviceMappingNotifyEvent) String() string { fieldVals := make([]string, 0, 7) fieldVals = append(fieldVals, sprintf("Sequence: %d", v.Sequence)) fieldVals = append(fieldVals, sprintf("DeviceId: %d", v.DeviceId)) fieldVals = append(fieldVals, sprintf("Request: %d", v.Request)) fieldVals = append(fieldVals, sprintf("FirstKeycode: %d", v.FirstKeycode)) fieldVals = append(fieldVals, sprintf("Count: %d", v.Count)) fieldVals = append(fieldVals, sprintf("Time: %d", v.Time)) return "XinputDeviceMappingNotify {" + stringsJoin(fieldVals, ", ") + "}" } func init() { newExtEventFuncs["XInputExtension"][11] = NewXinputDeviceMappingNotifyEvent } // Event definition XinputChangeDeviceNotify (12) // Size: 32 const XinputChangeDeviceNotify = 12 type XinputChangeDeviceNotifyEvent struct { Sequence uint16 DeviceId byte Time Timestamp Request byte // padding: 23 bytes } // Event read XinputChangeDeviceNotify func NewXinputChangeDeviceNotifyEvent(buf []byte) Event { v := XinputChangeDeviceNotifyEvent{} b := 1 // don't read event number v.DeviceId = buf[b] b += 1 v.Sequence = Get16(buf[b:]) b += 2 v.Time = Timestamp(Get32(buf[b:])) b += 4 v.Request = buf[b] b += 1 b += 23 // padding return v } // Event write XinputChangeDeviceNotify func (v XinputChangeDeviceNotifyEvent) 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 Put32(buf[b:], uint32(v.Time)) b += 4 buf[b] = v.Request b += 1 b += 23 // padding return buf } func (v XinputChangeDeviceNotifyEvent) ImplementsEvent() {} func (v XinputChangeDeviceNotifyEvent) SequenceId() uint16 { return v.Sequence } func (v XinputChangeDeviceNotifyEvent) String() string { fieldVals := make([]string, 0, 4) fieldVals = append(fieldVals, sprintf("Sequence: %d", v.Sequence)) fieldVals = append(fieldVals, sprintf("DeviceId: %d", v.DeviceId)) fieldVals = append(fieldVals, sprintf("Time: %d", v.Time)) fieldVals = append(fieldVals, sprintf("Request: %d", v.Request)) return "XinputChangeDeviceNotify {" + stringsJoin(fieldVals, ", ") + "}" } func init() { newExtEventFuncs["XInputExtension"][12] = NewXinputChangeDeviceNotifyEvent } // Event definition XinputDeviceKeyStateNotify (13) // Size: 32 const XinputDeviceKeyStateNotify = 13 type XinputDeviceKeyStateNotifyEvent struct { Sequence uint16 DeviceId byte Keys []byte // size: 28 } // Event read XinputDeviceKeyStateNotify func NewXinputDeviceKeyStateNotifyEvent(buf []byte) Event { v := XinputDeviceKeyStateNotifyEvent{} b := 1 // don't read event number v.DeviceId = buf[b] b += 1 v.Sequence = Get16(buf[b:]) b += 2 v.Keys = make([]byte, 28) copy(v.Keys[:28], buf[b:]) b += pad(int(28)) return v } // Event write XinputDeviceKeyStateNotify func (v XinputDeviceKeyStateNotifyEvent) 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 += pad(int(28)) return buf } func (v XinputDeviceKeyStateNotifyEvent) ImplementsEvent() {} func (v XinputDeviceKeyStateNotifyEvent) SequenceId() uint16 { return v.Sequence } func (v XinputDeviceKeyStateNotifyEvent) String() string { fieldVals := make([]string, 0, 2) fieldVals = append(fieldVals, sprintf("Sequence: %d", v.Sequence)) fieldVals = append(fieldVals, sprintf("DeviceId: %d", v.DeviceId)) return "XinputDeviceKeyStateNotify {" + stringsJoin(fieldVals, ", ") + "}" } func init() { newExtEventFuncs["XInputExtension"][13] = NewXinputDeviceKeyStateNotifyEvent } // Event definition XinputDeviceButtonStateNotify (14) // Size: 32 const XinputDeviceButtonStateNotify = 14 type XinputDeviceButtonStateNotifyEvent struct { Sequence uint16 DeviceId byte Buttons []byte // size: 28 } // Event read XinputDeviceButtonStateNotify func NewXinputDeviceButtonStateNotifyEvent(buf []byte) Event { v := XinputDeviceButtonStateNotifyEvent{} b := 1 // don't read event number v.DeviceId = buf[b] b += 1 v.Sequence = Get16(buf[b:]) b += 2 v.Buttons = make([]byte, 28) copy(v.Buttons[:28], buf[b:]) b += pad(int(28)) return v } // Event write XinputDeviceButtonStateNotify func (v XinputDeviceButtonStateNotifyEvent) 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 += pad(int(28)) return buf } func (v XinputDeviceButtonStateNotifyEvent) ImplementsEvent() {} func (v XinputDeviceButtonStateNotifyEvent) SequenceId() uint16 { return v.Sequence } func (v XinputDeviceButtonStateNotifyEvent) String() string { fieldVals := make([]string, 0, 2) fieldVals = append(fieldVals, sprintf("Sequence: %d", v.Sequence)) fieldVals = append(fieldVals, sprintf("DeviceId: %d", v.DeviceId)) return "XinputDeviceButtonStateNotify {" + stringsJoin(fieldVals, ", ") + "}" } func init() { newExtEventFuncs["XInputExtension"][14] = NewXinputDeviceButtonStateNotifyEvent } // Event definition XinputDevicePresenceNotify (15) // Size: 32 const XinputDevicePresenceNotify = 15 type XinputDevicePresenceNotifyEvent struct { Sequence uint16 // padding: 1 bytes Time Timestamp Devchange byte DeviceId byte Control uint16 // padding: 20 bytes } // Event read XinputDevicePresenceNotify func NewXinputDevicePresenceNotifyEvent(buf []byte) Event { v := XinputDevicePresenceNotifyEvent{} b := 1 // don't read event number b += 1 // padding v.Sequence = Get16(buf[b:]) b += 2 v.Time = Timestamp(Get32(buf[b:])) b += 4 v.Devchange = buf[b] b += 1 v.DeviceId = buf[b] b += 1 v.Control = Get16(buf[b:]) b += 2 b += 20 // padding return v } // Event write XinputDevicePresenceNotify func (v XinputDevicePresenceNotifyEvent) Bytes() []byte { buf := make([]byte, 32) b := 0 // write event number buf[b] = 15 b += 1 b += 1 // padding b += 2 // skip sequence number Put32(buf[b:], uint32(v.Time)) b += 4 buf[b] = v.Devchange b += 1 buf[b] = v.DeviceId b += 1 Put16(buf[b:], v.Control) b += 2 b += 20 // padding return buf } func (v XinputDevicePresenceNotifyEvent) ImplementsEvent() {} func (v XinputDevicePresenceNotifyEvent) SequenceId() uint16 { return v.Sequence } func (v XinputDevicePresenceNotifyEvent) String() string { fieldVals := make([]string, 0, 6) fieldVals = append(fieldVals, sprintf("Sequence: %d", v.Sequence)) fieldVals = append(fieldVals, sprintf("Time: %d", v.Time)) fieldVals = append(fieldVals, sprintf("Devchange: %d", v.Devchange)) fieldVals = append(fieldVals, sprintf("DeviceId: %d", v.DeviceId)) fieldVals = append(fieldVals, sprintf("Control: %d", v.Control)) return "XinputDevicePresenceNotify {" + stringsJoin(fieldVals, ", ") + "}" } func init() { newExtEventFuncs["XInputExtension"][15] = NewXinputDevicePresenceNotifyEvent } // EventCopy definition XinputDeviceKeyRelease (2) const XinputDeviceKeyRelease = 2 type XinputDeviceKeyReleaseEvent XinputDeviceKeyPressEvent func NewXinputDeviceKeyReleaseEvent(buf []byte) Event { return XinputDeviceKeyReleaseEvent(NewXinputDeviceKeyPressEvent(buf).(XinputDeviceKeyPressEvent)) } func (v XinputDeviceKeyReleaseEvent) Bytes() []byte { return XinputDeviceKeyPressEvent(v).Bytes() } func (v XinputDeviceKeyReleaseEvent) ImplementsEvent() {} func (v XinputDeviceKeyReleaseEvent) SequenceId() uint16 { return v.Sequence } func (v XinputDeviceKeyReleaseEvent) String() string { fieldVals := make([]string, 0, 12) fieldVals = append(fieldVals, sprintf("Sequence: %d", v.Sequence)) fieldVals = append(fieldVals, sprintf("Detail: %d", v.Detail)) fieldVals = append(fieldVals, sprintf("Time: %d", v.Time)) fieldVals = append(fieldVals, sprintf("Root: %d", v.Root)) fieldVals = append(fieldVals, sprintf("Event: %d", v.Event)) fieldVals = append(fieldVals, sprintf("Child: %d", v.Child)) fieldVals = append(fieldVals, sprintf("RootX: %d", v.RootX)) fieldVals = append(fieldVals, sprintf("RootY: %d", v.RootY)) fieldVals = append(fieldVals, sprintf("EventX: %d", v.EventX)) fieldVals = append(fieldVals, sprintf("EventY: %d", v.EventY)) fieldVals = append(fieldVals, sprintf("State: %d", v.State)) fieldVals = append(fieldVals, sprintf("SameScreen: %t", v.SameScreen)) fieldVals = append(fieldVals, sprintf("DeviceId: %d", v.DeviceId)) return "XinputDeviceKeyRelease {" + stringsJoin(fieldVals, ", ") + "}" } func init() { newExtEventFuncs["XInputExtension"][2] = NewXinputDeviceKeyReleaseEvent } // EventCopy definition XinputDeviceButtonPress (3) const XinputDeviceButtonPress = 3 type XinputDeviceButtonPressEvent XinputDeviceKeyPressEvent func NewXinputDeviceButtonPressEvent(buf []byte) Event { return XinputDeviceButtonPressEvent(NewXinputDeviceKeyPressEvent(buf).(XinputDeviceKeyPressEvent)) } func (v XinputDeviceButtonPressEvent) Bytes() []byte { return XinputDeviceKeyPressEvent(v).Bytes() } func (v XinputDeviceButtonPressEvent) ImplementsEvent() {} func (v XinputDeviceButtonPressEvent) SequenceId() uint16 { return v.Sequence } func (v XinputDeviceButtonPressEvent) String() string { fieldVals := make([]string, 0, 12) fieldVals = append(fieldVals, sprintf("Sequence: %d", v.Sequence)) fieldVals = append(fieldVals, sprintf("Detail: %d", v.Detail)) fieldVals = append(fieldVals, sprintf("Time: %d", v.Time)) fieldVals = append(fieldVals, sprintf("Root: %d", v.Root)) fieldVals = append(fieldVals, sprintf("Event: %d", v.Event)) fieldVals = append(fieldVals, sprintf("Child: %d", v.Child)) fieldVals = append(fieldVals, sprintf("RootX: %d", v.RootX)) fieldVals = append(fieldVals, sprintf("RootY: %d", v.RootY)) fieldVals = append(fieldVals, sprintf("EventX: %d", v.EventX)) fieldVals = append(fieldVals, sprintf("EventY: %d", v.EventY)) fieldVals = append(fieldVals, sprintf("State: %d", v.State)) fieldVals = append(fieldVals, sprintf("SameScreen: %t", v.SameScreen)) fieldVals = append(fieldVals, sprintf("DeviceId: %d", v.DeviceId)) return "XinputDeviceButtonPress {" + stringsJoin(fieldVals, ", ") + "}" } func init() { newExtEventFuncs["XInputExtension"][3] = NewXinputDeviceButtonPressEvent } // EventCopy definition XinputDeviceButtonRelease (4) const XinputDeviceButtonRelease = 4 type XinputDeviceButtonReleaseEvent XinputDeviceKeyPressEvent func NewXinputDeviceButtonReleaseEvent(buf []byte) Event { return XinputDeviceButtonReleaseEvent(NewXinputDeviceKeyPressEvent(buf).(XinputDeviceKeyPressEvent)) } func (v XinputDeviceButtonReleaseEvent) Bytes() []byte { return XinputDeviceKeyPressEvent(v).Bytes() } func (v XinputDeviceButtonReleaseEvent) ImplementsEvent() {} func (v XinputDeviceButtonReleaseEvent) SequenceId() uint16 { return v.Sequence } func (v XinputDeviceButtonReleaseEvent) String() string { fieldVals := make([]string, 0, 12) fieldVals = append(fieldVals, sprintf("Sequence: %d", v.Sequence)) fieldVals = append(fieldVals, sprintf("Detail: %d", v.Detail)) fieldVals = append(fieldVals, sprintf("Time: %d", v.Time)) fieldVals = append(fieldVals, sprintf("Root: %d", v.Root)) fieldVals = append(fieldVals, sprintf("Event: %d", v.Event)) fieldVals = append(fieldVals, sprintf("Child: %d", v.Child)) fieldVals = append(fieldVals, sprintf("RootX: %d", v.RootX)) fieldVals = append(fieldVals, sprintf("RootY: %d", v.RootY)) fieldVals = append(fieldVals, sprintf("EventX: %d", v.EventX)) fieldVals = append(fieldVals, sprintf("EventY: %d", v.EventY)) fieldVals = append(fieldVals, sprintf("State: %d", v.State)) fieldVals = append(fieldVals, sprintf("SameScreen: %t", v.SameScreen)) fieldVals = append(fieldVals, sprintf("DeviceId: %d", v.DeviceId)) return "XinputDeviceButtonRelease {" + stringsJoin(fieldVals, ", ") + "}" } func init() { newExtEventFuncs["XInputExtension"][4] = NewXinputDeviceButtonReleaseEvent } // EventCopy definition XinputDeviceMotionNotify (5) const XinputDeviceMotionNotify = 5 type XinputDeviceMotionNotifyEvent XinputDeviceKeyPressEvent func NewXinputDeviceMotionNotifyEvent(buf []byte) Event { return XinputDeviceMotionNotifyEvent(NewXinputDeviceKeyPressEvent(buf).(XinputDeviceKeyPressEvent)) } func (v XinputDeviceMotionNotifyEvent) Bytes() []byte { return XinputDeviceKeyPressEvent(v).Bytes() } func (v XinputDeviceMotionNotifyEvent) ImplementsEvent() {} func (v XinputDeviceMotionNotifyEvent) SequenceId() uint16 { return v.Sequence } func (v XinputDeviceMotionNotifyEvent) String() string { fieldVals := make([]string, 0, 12) fieldVals = append(fieldVals, sprintf("Sequence: %d", v.Sequence)) fieldVals = append(fieldVals, sprintf("Detail: %d", v.Detail)) fieldVals = append(fieldVals, sprintf("Time: %d", v.Time)) fieldVals = append(fieldVals, sprintf("Root: %d", v.Root)) fieldVals = append(fieldVals, sprintf("Event: %d", v.Event)) fieldVals = append(fieldVals, sprintf("Child: %d", v.Child)) fieldVals = append(fieldVals, sprintf("RootX: %d", v.RootX)) fieldVals = append(fieldVals, sprintf("RootY: %d", v.RootY)) fieldVals = append(fieldVals, sprintf("EventX: %d", v.EventX)) fieldVals = append(fieldVals, sprintf("EventY: %d", v.EventY)) fieldVals = append(fieldVals, sprintf("State: %d", v.State)) fieldVals = append(fieldVals, sprintf("SameScreen: %t", v.SameScreen)) fieldVals = append(fieldVals, sprintf("DeviceId: %d", v.DeviceId)) return "XinputDeviceMotionNotify {" + stringsJoin(fieldVals, ", ") + "}" } func init() { newExtEventFuncs["XInputExtension"][5] = NewXinputDeviceMotionNotifyEvent } // EventCopy definition XinputProximityIn (8) const XinputProximityIn = 8 type XinputProximityInEvent XinputDeviceKeyPressEvent func NewXinputProximityInEvent(buf []byte) Event { return XinputProximityInEvent(NewXinputDeviceKeyPressEvent(buf).(XinputDeviceKeyPressEvent)) } func (v XinputProximityInEvent) Bytes() []byte { return XinputDeviceKeyPressEvent(v).Bytes() } func (v XinputProximityInEvent) ImplementsEvent() {} func (v XinputProximityInEvent) SequenceId() uint16 { return v.Sequence } func (v XinputProximityInEvent) String() string { fieldVals := make([]string, 0, 12) fieldVals = append(fieldVals, sprintf("Sequence: %d", v.Sequence)) fieldVals = append(fieldVals, sprintf("Detail: %d", v.Detail)) fieldVals = append(fieldVals, sprintf("Time: %d", v.Time)) fieldVals = append(fieldVals, sprintf("Root: %d", v.Root)) fieldVals = append(fieldVals, sprintf("Event: %d", v.Event)) fieldVals = append(fieldVals, sprintf("Child: %d", v.Child)) fieldVals = append(fieldVals, sprintf("RootX: %d", v.RootX)) fieldVals = append(fieldVals, sprintf("RootY: %d", v.RootY)) fieldVals = append(fieldVals, sprintf("EventX: %d", v.EventX)) fieldVals = append(fieldVals, sprintf("EventY: %d", v.EventY)) fieldVals = append(fieldVals, sprintf("State: %d", v.State)) fieldVals = append(fieldVals, sprintf("SameScreen: %t", v.SameScreen)) fieldVals = append(fieldVals, sprintf("DeviceId: %d", v.DeviceId)) return "XinputProximityIn {" + stringsJoin(fieldVals, ", ") + "}" } func init() { newExtEventFuncs["XInputExtension"][8] = NewXinputProximityInEvent } // EventCopy definition XinputProximityOut (9) const XinputProximityOut = 9 type XinputProximityOutEvent XinputDeviceKeyPressEvent func NewXinputProximityOutEvent(buf []byte) Event { return XinputProximityOutEvent(NewXinputDeviceKeyPressEvent(buf).(XinputDeviceKeyPressEvent)) } func (v XinputProximityOutEvent) Bytes() []byte { return XinputDeviceKeyPressEvent(v).Bytes() } func (v XinputProximityOutEvent) ImplementsEvent() {} func (v XinputProximityOutEvent) SequenceId() uint16 { return v.Sequence } func (v XinputProximityOutEvent) String() string { fieldVals := make([]string, 0, 12) fieldVals = append(fieldVals, sprintf("Sequence: %d", v.Sequence)) fieldVals = append(fieldVals, sprintf("Detail: %d", v.Detail)) fieldVals = append(fieldVals, sprintf("Time: %d", v.Time)) fieldVals = append(fieldVals, sprintf("Root: %d", v.Root)) fieldVals = append(fieldVals, sprintf("Event: %d", v.Event)) fieldVals = append(fieldVals, sprintf("Child: %d", v.Child)) fieldVals = append(fieldVals, sprintf("RootX: %d", v.RootX)) fieldVals = append(fieldVals, sprintf("RootY: %d", v.RootY)) fieldVals = append(fieldVals, sprintf("EventX: %d", v.EventX)) fieldVals = append(fieldVals, sprintf("EventY: %d", v.EventY)) fieldVals = append(fieldVals, sprintf("State: %d", v.State)) fieldVals = append(fieldVals, sprintf("SameScreen: %t", v.SameScreen)) fieldVals = append(fieldVals, sprintf("DeviceId: %d", v.DeviceId)) return "XinputProximityOut {" + stringsJoin(fieldVals, ", ") + "}" } func init() { newExtEventFuncs["XInputExtension"][9] = NewXinputProximityOutEvent } // EventCopy definition XinputFocusOut (7) const XinputFocusOut = 7 type XinputFocusOutEvent XinputFocusInEvent func NewXinputFocusOutEvent(buf []byte) Event { return XinputFocusOutEvent(NewXinputFocusInEvent(buf).(XinputFocusInEvent)) } func (v XinputFocusOutEvent) Bytes() []byte { return XinputFocusInEvent(v).Bytes() } func (v XinputFocusOutEvent) ImplementsEvent() {} func (v XinputFocusOutEvent) SequenceId() uint16 { return v.Sequence } func (v XinputFocusOutEvent) String() string { fieldVals := make([]string, 0, 6) fieldVals = append(fieldVals, sprintf("Sequence: %d", v.Sequence)) fieldVals = append(fieldVals, sprintf("Detail: %d", v.Detail)) fieldVals = append(fieldVals, sprintf("Time: %d", v.Time)) fieldVals = append(fieldVals, sprintf("Window: %d", v.Window)) fieldVals = append(fieldVals, sprintf("Mode: %d", v.Mode)) fieldVals = append(fieldVals, sprintf("DeviceId: %d", v.DeviceId)) return "XinputFocusOut {" + stringsJoin(fieldVals, ", ") + "}" } func init() { newExtEventFuncs["XInputExtension"][7] = NewXinputFocusOutEvent } // Error definition XinputDevice (0) // Size: 32 const BadXinputDevice = 0 type XinputDeviceError struct { Sequence uint16 NiceName string } // Error read XinputDevice func NewXinputDeviceError(buf []byte) Error { v := XinputDeviceError{} v.NiceName = "XinputDevice" b := 1 // skip error determinant b += 1 // don't read error number v.Sequence = Get16(buf[b:]) b += 2 return v } func (err XinputDeviceError) ImplementsError() {} func (err XinputDeviceError) SequenceId() uint16 { return err.Sequence } func (err XinputDeviceError) BadId() Id { return 0 } func (err XinputDeviceError) Error() string { fieldVals := make([]string, 0, 0) fieldVals = append(fieldVals, "NiceName: "+err.NiceName) fieldVals = append(fieldVals, sprintf("Sequence: %d", err.Sequence)) return "BadXinputDevice {" + stringsJoin(fieldVals, ", ") + "}" } func init() { newExtErrorFuncs["XInputExtension"][0] = NewXinputDeviceError } // Error definition XinputEvent (1) // Size: 32 const BadXinputEvent = 1 type XinputEventError struct { Sequence uint16 NiceName string } // Error read XinputEvent func NewXinputEventError(buf []byte) Error { v := XinputEventError{} v.NiceName = "XinputEvent" b := 1 // skip error determinant b += 1 // don't read error number v.Sequence = Get16(buf[b:]) b += 2 return v } func (err XinputEventError) ImplementsError() {} func (err XinputEventError) SequenceId() uint16 { return err.Sequence } func (err XinputEventError) BadId() Id { return 0 } func (err XinputEventError) Error() string { fieldVals := make([]string, 0, 0) fieldVals = append(fieldVals, "NiceName: "+err.NiceName) fieldVals = append(fieldVals, sprintf("Sequence: %d", err.Sequence)) return "BadXinputEvent {" + stringsJoin(fieldVals, ", ") + "}" } func init() { newExtErrorFuncs["XInputExtension"][1] = NewXinputEventError } // Error definition XinputMode (2) // Size: 32 const BadXinputMode = 2 type XinputModeError struct { Sequence uint16 NiceName string } // Error read XinputMode func NewXinputModeError(buf []byte) Error { v := XinputModeError{} v.NiceName = "XinputMode" b := 1 // skip error determinant b += 1 // don't read error number v.Sequence = Get16(buf[b:]) b += 2 return v } func (err XinputModeError) ImplementsError() {} func (err XinputModeError) SequenceId() uint16 { return err.Sequence } func (err XinputModeError) BadId() Id { return 0 } func (err XinputModeError) Error() string { fieldVals := make([]string, 0, 0) fieldVals = append(fieldVals, "NiceName: "+err.NiceName) fieldVals = append(fieldVals, sprintf("Sequence: %d", err.Sequence)) return "BadXinputMode {" + stringsJoin(fieldVals, ", ") + "}" } func init() { newExtErrorFuncs["XInputExtension"][2] = NewXinputModeError } // Error definition XinputDeviceBusy (3) // Size: 32 const BadXinputDeviceBusy = 3 type XinputDeviceBusyError struct { Sequence uint16 NiceName string } // Error read XinputDeviceBusy func NewXinputDeviceBusyError(buf []byte) Error { v := XinputDeviceBusyError{} v.NiceName = "XinputDeviceBusy" b := 1 // skip error determinant b += 1 // don't read error number v.Sequence = Get16(buf[b:]) b += 2 return v } func (err XinputDeviceBusyError) ImplementsError() {} func (err XinputDeviceBusyError) SequenceId() uint16 { return err.Sequence } func (err XinputDeviceBusyError) BadId() Id { return 0 } func (err XinputDeviceBusyError) Error() string { fieldVals := make([]string, 0, 0) fieldVals = append(fieldVals, "NiceName: "+err.NiceName) fieldVals = append(fieldVals, sprintf("Sequence: %d", err.Sequence)) return "BadXinputDeviceBusy {" + stringsJoin(fieldVals, ", ") + "}" } func init() { newExtErrorFuncs["XInputExtension"][3] = NewXinputDeviceBusyError } // Error definition XinputClass (4) // Size: 32 const BadXinputClass = 4 type XinputClassError struct { Sequence uint16 NiceName string } // Error read XinputClass func NewXinputClassError(buf []byte) Error { v := XinputClassError{} v.NiceName = "XinputClass" b := 1 // skip error determinant b += 1 // don't read error number v.Sequence = Get16(buf[b:]) b += 2 return v } func (err XinputClassError) ImplementsError() {} func (err XinputClassError) SequenceId() uint16 { return err.Sequence } func (err XinputClassError) BadId() Id { return 0 } func (err XinputClassError) Error() string { fieldVals := make([]string, 0, 0) fieldVals = append(fieldVals, "NiceName: "+err.NiceName) fieldVals = append(fieldVals, sprintf("Sequence: %d", err.Sequence)) return "BadXinputClass {" + stringsJoin(fieldVals, ", ") + "}" } func init() { newExtErrorFuncs["XInputExtension"][4] = NewXinputClassError } // Request XinputGetExtensionVersion // size: pad((8 + pad((int(NameLen) * 1)))) type XinputGetExtensionVersionCookie struct { *cookie } func (c *Conn) XinputGetExtensionVersion(NameLen uint16, Name string) XinputGetExtensionVersionCookie { cookie := c.newCookie(true, true) c.newRequest(c.xinputGetExtensionVersionRequest(NameLen, Name), cookie) return XinputGetExtensionVersionCookie{cookie} } func (c *Conn) XinputGetExtensionVersionUnchecked(NameLen uint16, Name string) XinputGetExtensionVersionCookie { cookie := c.newCookie(false, true) c.newRequest(c.xinputGetExtensionVersionRequest(NameLen, Name), cookie) return XinputGetExtensionVersionCookie{cookie} } // Request reply for XinputGetExtensionVersion // size: 32 type XinputGetExtensionVersionReply struct { Sequence uint16 Length uint32 // padding: 1 bytes ServerMajor uint16 ServerMinor uint16 Present bool // padding: 19 bytes } // Waits and reads reply data from request XinputGetExtensionVersion func (cook XinputGetExtensionVersionCookie) Reply() (*XinputGetExtensionVersionReply, error) { buf, err := cook.reply() if err != nil { return nil, err } if buf == nil { return nil, nil } return xinputGetExtensionVersionReply(buf), nil } // Read reply into structure from buffer for XinputGetExtensionVersion func xinputGetExtensionVersionReply(buf []byte) *XinputGetExtensionVersionReply { v := new(XinputGetExtensionVersionReply) b := 1 // skip reply determinant b += 1 // padding v.Sequence = Get16(buf[b:]) b += 2 v.Length = Get32(buf[b:]) // 4-byte units b += 4 v.ServerMajor = Get16(buf[b:]) b += 2 v.ServerMinor = Get16(buf[b:]) b += 2 if buf[b] == 1 { v.Present = true } else { v.Present = false } b += 1 b += 19 // padding return v } func (cook XinputGetExtensionVersionCookie) Check() error { return cook.check() } // Write request to wire for XinputGetExtensionVersion func (c *Conn) xinputGetExtensionVersionRequest(NameLen uint16, Name string) []byte { size := pad((8 + pad((int(NameLen) * 1)))) b := 0 buf := make([]byte, size) buf[b] = c.extensions["XINPUTEXTENSION"] b += 1 buf[b] = 1 // request opcode b += 1 Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units b += 2 Put16(buf[b:], NameLen) b += 2 b += 2 // padding copy(buf[b:], Name[:NameLen]) b += pad(int(NameLen)) return buf } // Request XinputListInputDevices // size: 4 type XinputListInputDevicesCookie struct { *cookie } func (c *Conn) XinputListInputDevices() XinputListInputDevicesCookie { cookie := c.newCookie(true, true) c.newRequest(c.xinputListInputDevicesRequest(), cookie) return XinputListInputDevicesCookie{cookie} } func (c *Conn) XinputListInputDevicesUnchecked() XinputListInputDevicesCookie { cookie := c.newCookie(false, true) c.newRequest(c.xinputListInputDevicesRequest(), cookie) return XinputListInputDevicesCookie{cookie} } // Request reply for XinputListInputDevices // size: (32 + pad((int(DevicesLen) * 8))) type XinputListInputDevicesReply struct { Sequence uint16 Length uint32 // padding: 1 bytes DevicesLen byte // padding: 23 bytes Devices []XinputDeviceInfo // size: pad((int(DevicesLen) * 8)) } // Waits and reads reply data from request XinputListInputDevices func (cook XinputListInputDevicesCookie) Reply() (*XinputListInputDevicesReply, error) { buf, err := cook.reply() if err != nil { return nil, err } if buf == nil { return nil, nil } return xinputListInputDevicesReply(buf), nil } // Read reply into structure from buffer for XinputListInputDevices func xinputListInputDevicesReply(buf []byte) *XinputListInputDevicesReply { v := new(XinputListInputDevicesReply) b := 1 // skip reply determinant b += 1 // padding v.Sequence = Get16(buf[b:]) b += 2 v.Length = Get32(buf[b:]) // 4-byte units b += 4 v.DevicesLen = buf[b] b += 1 b += 23 // padding v.Devices = make([]XinputDeviceInfo, v.DevicesLen) b += ReadXinputDeviceInfoList(buf[b:], v.Devices) return v } func (cook XinputListInputDevicesCookie) Check() error { return cook.check() } // Write request to wire for XinputListInputDevices func (c *Conn) xinputListInputDevicesRequest() []byte { size := 4 b := 0 buf := make([]byte, size) buf[b] = c.extensions["XINPUTEXTENSION"] b += 1 buf[b] = 2 // request opcode b += 1 Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units b += 2 return buf } // Request XinputOpenDevice // size: 8 type XinputOpenDeviceCookie struct { *cookie } func (c *Conn) XinputOpenDevice(DeviceId byte) XinputOpenDeviceCookie { cookie := c.newCookie(true, true) c.newRequest(c.xinputOpenDeviceRequest(DeviceId), cookie) return XinputOpenDeviceCookie{cookie} } func (c *Conn) XinputOpenDeviceUnchecked(DeviceId byte) XinputOpenDeviceCookie { cookie := c.newCookie(false, true) c.newRequest(c.xinputOpenDeviceRequest(DeviceId), cookie) return XinputOpenDeviceCookie{cookie} } // Request reply for XinputOpenDevice // size: (32 + pad((int(NumClasses) * 2))) type XinputOpenDeviceReply struct { Sequence uint16 Length uint32 // padding: 1 bytes NumClasses byte // padding: 23 bytes ClassInfo []XinputInputClassInfo // size: pad((int(NumClasses) * 2)) } // Waits and reads reply data from request XinputOpenDevice func (cook XinputOpenDeviceCookie) Reply() (*XinputOpenDeviceReply, error) { buf, err := cook.reply() if err != nil { return nil, err } if buf == nil { return nil, nil } return xinputOpenDeviceReply(buf), nil } // Read reply into structure from buffer for XinputOpenDevice func xinputOpenDeviceReply(buf []byte) *XinputOpenDeviceReply { v := new(XinputOpenDeviceReply) b := 1 // skip reply determinant b += 1 // padding v.Sequence = Get16(buf[b:]) b += 2 v.Length = Get32(buf[b:]) // 4-byte units b += 4 v.NumClasses = buf[b] b += 1 b += 23 // padding v.ClassInfo = make([]XinputInputClassInfo, v.NumClasses) b += ReadXinputInputClassInfoList(buf[b:], v.ClassInfo) return v } func (cook XinputOpenDeviceCookie) Check() error { return cook.check() } // Write request to wire for XinputOpenDevice func (c *Conn) xinputOpenDeviceRequest(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 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 XinputCloseDevice // size: 8 type XinputCloseDeviceCookie struct { *cookie } // Write request to wire for XinputCloseDevice func (c *Conn) XinputCloseDevice(DeviceId byte) XinputCloseDeviceCookie { cookie := c.newCookie(false, false) c.newRequest(c.xinputCloseDeviceRequest(DeviceId), cookie) return XinputCloseDeviceCookie{cookie} } func (c *Conn) XinputCloseDeviceChecked(DeviceId byte) XinputCloseDeviceCookie { cookie := c.newCookie(true, false) c.newRequest(c.xinputCloseDeviceRequest(DeviceId), cookie) return XinputCloseDeviceCookie{cookie} } func (cook XinputCloseDeviceCookie) Check() error { return cook.check() } // Write request to wire for XinputCloseDevice func (c *Conn) xinputCloseDeviceRequest(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 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 XinputSetDeviceMode // size: 8 type XinputSetDeviceModeCookie struct { *cookie } func (c *Conn) XinputSetDeviceMode(DeviceId byte, Mode byte) XinputSetDeviceModeCookie { cookie := c.newCookie(true, true) c.newRequest(c.xinputSetDeviceModeRequest(DeviceId, Mode), cookie) return XinputSetDeviceModeCookie{cookie} } func (c *Conn) XinputSetDeviceModeUnchecked(DeviceId byte, Mode byte) XinputSetDeviceModeCookie { cookie := c.newCookie(false, true) c.newRequest(c.xinputSetDeviceModeRequest(DeviceId, Mode), cookie) return XinputSetDeviceModeCookie{cookie} } // Request reply for XinputSetDeviceMode // size: 32 type XinputSetDeviceModeReply struct { Sequence uint16 Length uint32 // padding: 1 bytes Status byte // padding: 23 bytes } // Waits and reads reply data from request XinputSetDeviceMode func (cook XinputSetDeviceModeCookie) Reply() (*XinputSetDeviceModeReply, error) { buf, err := cook.reply() if err != nil { return nil, err } if buf == nil { return nil, nil } return xinputSetDeviceModeReply(buf), nil } // Read reply into structure from buffer for XinputSetDeviceMode func xinputSetDeviceModeReply(buf []byte) *XinputSetDeviceModeReply { v := new(XinputSetDeviceModeReply) b := 1 // skip reply determinant b += 1 // padding v.Sequence = Get16(buf[b:]) b += 2 v.Length = Get32(buf[b:]) // 4-byte units b += 4 v.Status = buf[b] b += 1 b += 23 // padding return v } func (cook XinputSetDeviceModeCookie) Check() error { return cook.check() } // Write request to wire for XinputSetDeviceMode func (c *Conn) xinputSetDeviceModeRequest(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 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 XinputSelectExtensionEvent // size: pad((12 + pad((int(NumClasses) * 4)))) type XinputSelectExtensionEventCookie struct { *cookie } // Write request to wire for XinputSelectExtensionEvent func (c *Conn) XinputSelectExtensionEvent(Window Id, NumClasses uint16, Classes []XinputEventClass) XinputSelectExtensionEventCookie { cookie := c.newCookie(false, false) c.newRequest(c.xinputSelectExtensionEventRequest(Window, NumClasses, Classes), cookie) return XinputSelectExtensionEventCookie{cookie} } func (c *Conn) XinputSelectExtensionEventChecked(Window Id, NumClasses uint16, Classes []XinputEventClass) XinputSelectExtensionEventCookie { cookie := c.newCookie(true, false) c.newRequest(c.xinputSelectExtensionEventRequest(Window, NumClasses, Classes), cookie) return XinputSelectExtensionEventCookie{cookie} } func (cook XinputSelectExtensionEventCookie) Check() error { return cook.check() } // Write request to wire for XinputSelectExtensionEvent func (c *Conn) xinputSelectExtensionEventRequest(Window Id, NumClasses uint16, Classes []XinputEventClass) []byte { size := pad((12 + pad((int(NumClasses) * 4)))) b := 0 buf := make([]byte, size) buf[b] = c.extensions["XINPUTEXTENSION"] b += 1 buf[b] = 6 // request opcode b += 1 Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units b += 2 Put32(buf[b:], uint32(Window)) b += 4 Put16(buf[b:], NumClasses) b += 2 b += 2 // padding for i := 0; i < int(NumClasses); i++ { Put32(buf[b:], uint32(Classes[i])) b += 4 } b = pad(b) return buf } // Request XinputGetSelectedExtensionEvents // size: 8 type XinputGetSelectedExtensionEventsCookie struct { *cookie } func (c *Conn) XinputGetSelectedExtensionEvents(Window Id) XinputGetSelectedExtensionEventsCookie { cookie := c.newCookie(true, true) c.newRequest(c.xinputGetSelectedExtensionEventsRequest(Window), cookie) return XinputGetSelectedExtensionEventsCookie{cookie} } func (c *Conn) XinputGetSelectedExtensionEventsUnchecked(Window Id) XinputGetSelectedExtensionEventsCookie { cookie := c.newCookie(false, true) c.newRequest(c.xinputGetSelectedExtensionEventsRequest(Window), cookie) return XinputGetSelectedExtensionEventsCookie{cookie} } // Request reply for XinputGetSelectedExtensionEvents // size: ((32 + pad((int(NumThisClasses) * 4))) + pad((int(NumAllClasses) * 4))) type XinputGetSelectedExtensionEventsReply struct { Sequence uint16 Length uint32 // padding: 1 bytes NumThisClasses uint16 NumAllClasses uint16 // padding: 20 bytes ThisClasses []XinputEventClass // size: pad((int(NumThisClasses) * 4)) AllClasses []XinputEventClass // size: pad((int(NumAllClasses) * 4)) } // Waits and reads reply data from request XinputGetSelectedExtensionEvents func (cook XinputGetSelectedExtensionEventsCookie) Reply() (*XinputGetSelectedExtensionEventsReply, error) { buf, err := cook.reply() if err != nil { return nil, err } if buf == nil { return nil, nil } return xinputGetSelectedExtensionEventsReply(buf), nil } // Read reply into structure from buffer for XinputGetSelectedExtensionEvents func xinputGetSelectedExtensionEventsReply(buf []byte) *XinputGetSelectedExtensionEventsReply { v := new(XinputGetSelectedExtensionEventsReply) b := 1 // skip reply determinant b += 1 // padding v.Sequence = Get16(buf[b:]) b += 2 v.Length = Get32(buf[b:]) // 4-byte units b += 4 v.NumThisClasses = Get16(buf[b:]) b += 2 v.NumAllClasses = Get16(buf[b:]) b += 2 b += 20 // padding v.ThisClasses = make([]XinputEventClass, v.NumThisClasses) for i := 0; i < int(v.NumThisClasses); i++ { v.ThisClasses[i] = XinputEventClass(Get32(buf[b:])) b += 4 } b = pad(b) v.AllClasses = make([]XinputEventClass, v.NumAllClasses) for i := 0; i < int(v.NumAllClasses); i++ { v.AllClasses[i] = XinputEventClass(Get32(buf[b:])) b += 4 } b = pad(b) return v } func (cook XinputGetSelectedExtensionEventsCookie) Check() error { return cook.check() } // Write request to wire for XinputGetSelectedExtensionEvents func (c *Conn) xinputGetSelectedExtensionEventsRequest(Window Id) []byte { size := 8 b := 0 buf := make([]byte, size) buf[b] = c.extensions["XINPUTEXTENSION"] b += 1 buf[b] = 7 // request opcode b += 1 Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units b += 2 Put32(buf[b:], uint32(Window)) b += 4 return buf } // Request XinputChangeDeviceDontPropagateList // size: pad((12 + pad((int(NumClasses) * 4)))) type XinputChangeDeviceDontPropagateListCookie struct { *cookie } // Write request to wire for XinputChangeDeviceDontPropagateList func (c *Conn) XinputChangeDeviceDontPropagateList(Window Id, NumClasses uint16, Mode byte, Classes []XinputEventClass) XinputChangeDeviceDontPropagateListCookie { cookie := c.newCookie(false, false) c.newRequest(c.xinputChangeDeviceDontPropagateListRequest(Window, NumClasses, Mode, Classes), cookie) return XinputChangeDeviceDontPropagateListCookie{cookie} } func (c *Conn) XinputChangeDeviceDontPropagateListChecked(Window Id, NumClasses uint16, Mode byte, Classes []XinputEventClass) XinputChangeDeviceDontPropagateListCookie { cookie := c.newCookie(true, false) c.newRequest(c.xinputChangeDeviceDontPropagateListRequest(Window, NumClasses, Mode, Classes), cookie) return XinputChangeDeviceDontPropagateListCookie{cookie} } func (cook XinputChangeDeviceDontPropagateListCookie) Check() error { return cook.check() } // Write request to wire for XinputChangeDeviceDontPropagateList func (c *Conn) xinputChangeDeviceDontPropagateListRequest(Window Id, NumClasses uint16, Mode byte, Classes []XinputEventClass) []byte { size := pad((12 + pad((int(NumClasses) * 4)))) b := 0 buf := make([]byte, size) buf[b] = c.extensions["XINPUTEXTENSION"] b += 1 buf[b] = 8 // request opcode b += 1 Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units b += 2 Put32(buf[b:], uint32(Window)) b += 4 Put16(buf[b:], NumClasses) b += 2 buf[b] = Mode b += 1 b += 1 // padding for i := 0; i < int(NumClasses); i++ { Put32(buf[b:], uint32(Classes[i])) b += 4 } b = pad(b) return buf } // Request XinputGetDeviceDontPropagateList // size: 8 type XinputGetDeviceDontPropagateListCookie struct { *cookie } func (c *Conn) XinputGetDeviceDontPropagateList(Window Id) XinputGetDeviceDontPropagateListCookie { cookie := c.newCookie(true, true) c.newRequest(c.xinputGetDeviceDontPropagateListRequest(Window), cookie) return XinputGetDeviceDontPropagateListCookie{cookie} } func (c *Conn) XinputGetDeviceDontPropagateListUnchecked(Window Id) XinputGetDeviceDontPropagateListCookie { cookie := c.newCookie(false, true) c.newRequest(c.xinputGetDeviceDontPropagateListRequest(Window), cookie) return XinputGetDeviceDontPropagateListCookie{cookie} } // Request reply for XinputGetDeviceDontPropagateList // size: (32 + pad((int(NumClasses) * 4))) type XinputGetDeviceDontPropagateListReply struct { Sequence uint16 Length uint32 // padding: 1 bytes NumClasses uint16 // padding: 22 bytes Classes []XinputEventClass // size: pad((int(NumClasses) * 4)) } // Waits and reads reply data from request XinputGetDeviceDontPropagateList func (cook XinputGetDeviceDontPropagateListCookie) Reply() (*XinputGetDeviceDontPropagateListReply, error) { buf, err := cook.reply() if err != nil { return nil, err } if buf == nil { return nil, nil } return xinputGetDeviceDontPropagateListReply(buf), nil } // Read reply into structure from buffer for XinputGetDeviceDontPropagateList func xinputGetDeviceDontPropagateListReply(buf []byte) *XinputGetDeviceDontPropagateListReply { v := new(XinputGetDeviceDontPropagateListReply) b := 1 // skip reply determinant b += 1 // padding v.Sequence = Get16(buf[b:]) b += 2 v.Length = Get32(buf[b:]) // 4-byte units b += 4 v.NumClasses = Get16(buf[b:]) b += 2 b += 22 // padding v.Classes = make([]XinputEventClass, v.NumClasses) for i := 0; i < int(v.NumClasses); i++ { v.Classes[i] = XinputEventClass(Get32(buf[b:])) b += 4 } b = pad(b) return v } func (cook XinputGetDeviceDontPropagateListCookie) Check() error { return cook.check() } // Write request to wire for XinputGetDeviceDontPropagateList func (c *Conn) xinputGetDeviceDontPropagateListRequest(Window Id) []byte { size := 8 b := 0 buf := make([]byte, size) buf[b] = c.extensions["XINPUTEXTENSION"] b += 1 buf[b] = 9 // request opcode b += 1 Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units b += 2 Put32(buf[b:], uint32(Window)) b += 4 return buf } // Request XinputGetDeviceMotionEvents // size: 16 type XinputGetDeviceMotionEventsCookie struct { *cookie } func (c *Conn) XinputGetDeviceMotionEvents(Start Timestamp, Stop Timestamp, DeviceId byte) XinputGetDeviceMotionEventsCookie { cookie := c.newCookie(true, true) c.newRequest(c.xinputGetDeviceMotionEventsRequest(Start, Stop, DeviceId), cookie) return XinputGetDeviceMotionEventsCookie{cookie} } func (c *Conn) XinputGetDeviceMotionEventsUnchecked(Start Timestamp, Stop Timestamp, DeviceId byte) XinputGetDeviceMotionEventsCookie { cookie := c.newCookie(false, true) c.newRequest(c.xinputGetDeviceMotionEventsRequest(Start, Stop, DeviceId), cookie) return XinputGetDeviceMotionEventsCookie{cookie} } // Request reply for XinputGetDeviceMotionEvents // size: 32 type XinputGetDeviceMotionEventsReply struct { Sequence uint16 Length uint32 // padding: 1 bytes NumCoords uint32 NumAxes byte DeviceMode byte // padding: 18 bytes } // Waits and reads reply data from request XinputGetDeviceMotionEvents func (cook XinputGetDeviceMotionEventsCookie) Reply() (*XinputGetDeviceMotionEventsReply, error) { buf, err := cook.reply() if err != nil { return nil, err } if buf == nil { return nil, nil } return xinputGetDeviceMotionEventsReply(buf), nil } // Read reply into structure from buffer for XinputGetDeviceMotionEvents func xinputGetDeviceMotionEventsReply(buf []byte) *XinputGetDeviceMotionEventsReply { v := new(XinputGetDeviceMotionEventsReply) b := 1 // skip reply determinant b += 1 // padding v.Sequence = Get16(buf[b:]) b += 2 v.Length = Get32(buf[b:]) // 4-byte units b += 4 v.NumCoords = Get32(buf[b:]) b += 4 v.NumAxes = buf[b] b += 1 v.DeviceMode = buf[b] b += 1 b += 18 // padding return v } func (cook XinputGetDeviceMotionEventsCookie) Check() error { return cook.check() } // Write request to wire for XinputGetDeviceMotionEvents func (c *Conn) xinputGetDeviceMotionEventsRequest(Start Timestamp, Stop 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 Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units b += 2 Put32(buf[b:], uint32(Start)) b += 4 Put32(buf[b:], uint32(Stop)) b += 4 buf[b] = DeviceId b += 1 return buf } // Request XinputChangeKeyboardDevice // size: 8 type XinputChangeKeyboardDeviceCookie struct { *cookie } func (c *Conn) XinputChangeKeyboardDevice(DeviceId byte) XinputChangeKeyboardDeviceCookie { cookie := c.newCookie(true, true) c.newRequest(c.xinputChangeKeyboardDeviceRequest(DeviceId), cookie) return XinputChangeKeyboardDeviceCookie{cookie} } func (c *Conn) XinputChangeKeyboardDeviceUnchecked(DeviceId byte) XinputChangeKeyboardDeviceCookie { cookie := c.newCookie(false, true) c.newRequest(c.xinputChangeKeyboardDeviceRequest(DeviceId), cookie) return XinputChangeKeyboardDeviceCookie{cookie} } // Request reply for XinputChangeKeyboardDevice // size: 32 type XinputChangeKeyboardDeviceReply struct { Sequence uint16 Length uint32 // padding: 1 bytes Status byte // padding: 23 bytes } // Waits and reads reply data from request XinputChangeKeyboardDevice func (cook XinputChangeKeyboardDeviceCookie) Reply() (*XinputChangeKeyboardDeviceReply, error) { buf, err := cook.reply() if err != nil { return nil, err } if buf == nil { return nil, nil } return xinputChangeKeyboardDeviceReply(buf), nil } // Read reply into structure from buffer for XinputChangeKeyboardDevice func xinputChangeKeyboardDeviceReply(buf []byte) *XinputChangeKeyboardDeviceReply { v := new(XinputChangeKeyboardDeviceReply) b := 1 // skip reply determinant b += 1 // padding v.Sequence = Get16(buf[b:]) b += 2 v.Length = Get32(buf[b:]) // 4-byte units b += 4 v.Status = buf[b] b += 1 b += 23 // padding return v } func (cook XinputChangeKeyboardDeviceCookie) Check() error { return cook.check() } // Write request to wire for XinputChangeKeyboardDevice func (c *Conn) xinputChangeKeyboardDeviceRequest(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 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 XinputChangePointerDevice // size: 8 type XinputChangePointerDeviceCookie struct { *cookie } func (c *Conn) XinputChangePointerDevice(XAxis byte, YAxis byte, DeviceId byte) XinputChangePointerDeviceCookie { cookie := c.newCookie(true, true) c.newRequest(c.xinputChangePointerDeviceRequest(XAxis, YAxis, DeviceId), cookie) return XinputChangePointerDeviceCookie{cookie} } func (c *Conn) XinputChangePointerDeviceUnchecked(XAxis byte, YAxis byte, DeviceId byte) XinputChangePointerDeviceCookie { cookie := c.newCookie(false, true) c.newRequest(c.xinputChangePointerDeviceRequest(XAxis, YAxis, DeviceId), cookie) return XinputChangePointerDeviceCookie{cookie} } // Request reply for XinputChangePointerDevice // size: 32 type XinputChangePointerDeviceReply struct { Sequence uint16 Length uint32 // padding: 1 bytes Status byte // padding: 23 bytes } // Waits and reads reply data from request XinputChangePointerDevice func (cook XinputChangePointerDeviceCookie) Reply() (*XinputChangePointerDeviceReply, error) { buf, err := cook.reply() if err != nil { return nil, err } if buf == nil { return nil, nil } return xinputChangePointerDeviceReply(buf), nil } // Read reply into structure from buffer for XinputChangePointerDevice func xinputChangePointerDeviceReply(buf []byte) *XinputChangePointerDeviceReply { v := new(XinputChangePointerDeviceReply) b := 1 // skip reply determinant b += 1 // padding v.Sequence = Get16(buf[b:]) b += 2 v.Length = Get32(buf[b:]) // 4-byte units b += 4 v.Status = buf[b] b += 1 b += 23 // padding return v } func (cook XinputChangePointerDeviceCookie) Check() error { return cook.check() } // Write request to wire for XinputChangePointerDevice func (c *Conn) xinputChangePointerDeviceRequest(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 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 XinputGrabDevice // size: pad((20 + pad((int(NumClasses) * 4)))) type XinputGrabDeviceCookie struct { *cookie } func (c *Conn) XinputGrabDevice(GrabWindow Id, Time Timestamp, NumClasses uint16, ThisDeviceMode byte, OtherDeviceMode byte, OwnerEvents bool, DeviceId byte, Classes []XinputEventClass) XinputGrabDeviceCookie { cookie := c.newCookie(true, true) c.newRequest(c.xinputGrabDeviceRequest(GrabWindow, Time, NumClasses, ThisDeviceMode, OtherDeviceMode, OwnerEvents, DeviceId, Classes), cookie) return XinputGrabDeviceCookie{cookie} } func (c *Conn) XinputGrabDeviceUnchecked(GrabWindow Id, Time Timestamp, NumClasses uint16, ThisDeviceMode byte, OtherDeviceMode byte, OwnerEvents bool, DeviceId byte, Classes []XinputEventClass) XinputGrabDeviceCookie { cookie := c.newCookie(false, true) c.newRequest(c.xinputGrabDeviceRequest(GrabWindow, Time, NumClasses, ThisDeviceMode, OtherDeviceMode, OwnerEvents, DeviceId, Classes), cookie) return XinputGrabDeviceCookie{cookie} } // Request reply for XinputGrabDevice // size: 32 type XinputGrabDeviceReply struct { Sequence uint16 Length uint32 // padding: 1 bytes Status byte // padding: 23 bytes } // Waits and reads reply data from request XinputGrabDevice func (cook XinputGrabDeviceCookie) Reply() (*XinputGrabDeviceReply, error) { buf, err := cook.reply() if err != nil { return nil, err } if buf == nil { return nil, nil } return xinputGrabDeviceReply(buf), nil } // Read reply into structure from buffer for XinputGrabDevice func xinputGrabDeviceReply(buf []byte) *XinputGrabDeviceReply { v := new(XinputGrabDeviceReply) b := 1 // skip reply determinant b += 1 // padding v.Sequence = Get16(buf[b:]) b += 2 v.Length = Get32(buf[b:]) // 4-byte units b += 4 v.Status = buf[b] b += 1 b += 23 // padding return v } func (cook XinputGrabDeviceCookie) Check() error { return cook.check() } // Write request to wire for XinputGrabDevice func (c *Conn) xinputGrabDeviceRequest(GrabWindow Id, Time Timestamp, NumClasses uint16, ThisDeviceMode byte, OtherDeviceMode byte, OwnerEvents bool, DeviceId byte, Classes []XinputEventClass) []byte { size := pad((20 + pad((int(NumClasses) * 4)))) b := 0 buf := make([]byte, size) buf[b] = c.extensions["XINPUTEXTENSION"] b += 1 buf[b] = 13 // request opcode b += 1 Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units b += 2 Put32(buf[b:], uint32(GrabWindow)) b += 4 Put32(buf[b:], uint32(Time)) b += 4 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++ { Put32(buf[b:], uint32(Classes[i])) b += 4 } b = pad(b) return buf } // Request XinputUngrabDevice // size: 12 type XinputUngrabDeviceCookie struct { *cookie } // Write request to wire for XinputUngrabDevice func (c *Conn) XinputUngrabDevice(Time Timestamp, DeviceId byte) XinputUngrabDeviceCookie { cookie := c.newCookie(false, false) c.newRequest(c.xinputUngrabDeviceRequest(Time, DeviceId), cookie) return XinputUngrabDeviceCookie{cookie} } func (c *Conn) XinputUngrabDeviceChecked(Time Timestamp, DeviceId byte) XinputUngrabDeviceCookie { cookie := c.newCookie(true, false) c.newRequest(c.xinputUngrabDeviceRequest(Time, DeviceId), cookie) return XinputUngrabDeviceCookie{cookie} } func (cook XinputUngrabDeviceCookie) Check() error { return cook.check() } // Write request to wire for XinputUngrabDevice func (c *Conn) xinputUngrabDeviceRequest(Time 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 Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units b += 2 Put32(buf[b:], uint32(Time)) b += 4 buf[b] = DeviceId b += 1 return buf } // Request XinputGrabDeviceKey // size: pad((20 + pad((int(NumClasses) * 4)))) type XinputGrabDeviceKeyCookie struct { *cookie } // Write request to wire for XinputGrabDeviceKey func (c *Conn) XinputGrabDeviceKey(GrabWindow Id, NumClasses uint16, Modifiers uint16, ModifierDevice byte, GrabbedDevice byte, Key byte, ThisDeviceMode byte, OtherDeviceMode byte, OwnerEvents bool, Classes []XinputEventClass) XinputGrabDeviceKeyCookie { cookie := c.newCookie(false, false) c.newRequest(c.xinputGrabDeviceKeyRequest(GrabWindow, NumClasses, Modifiers, ModifierDevice, GrabbedDevice, Key, ThisDeviceMode, OtherDeviceMode, OwnerEvents, Classes), cookie) return XinputGrabDeviceKeyCookie{cookie} } func (c *Conn) XinputGrabDeviceKeyChecked(GrabWindow Id, NumClasses uint16, Modifiers uint16, ModifierDevice byte, GrabbedDevice byte, Key byte, ThisDeviceMode byte, OtherDeviceMode byte, OwnerEvents bool, Classes []XinputEventClass) XinputGrabDeviceKeyCookie { cookie := c.newCookie(true, false) c.newRequest(c.xinputGrabDeviceKeyRequest(GrabWindow, NumClasses, Modifiers, ModifierDevice, GrabbedDevice, Key, ThisDeviceMode, OtherDeviceMode, OwnerEvents, Classes), cookie) return XinputGrabDeviceKeyCookie{cookie} } func (cook XinputGrabDeviceKeyCookie) Check() error { return cook.check() } // Write request to wire for XinputGrabDeviceKey func (c *Conn) xinputGrabDeviceKeyRequest(GrabWindow Id, NumClasses uint16, Modifiers uint16, ModifierDevice byte, GrabbedDevice byte, Key byte, ThisDeviceMode byte, OtherDeviceMode byte, OwnerEvents bool, Classes []XinputEventClass) []byte { size := pad((20 + pad((int(NumClasses) * 4)))) b := 0 buf := make([]byte, size) buf[b] = c.extensions["XINPUTEXTENSION"] b += 1 buf[b] = 15 // request opcode b += 1 Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units b += 2 Put32(buf[b:], uint32(GrabWindow)) b += 4 Put16(buf[b:], NumClasses) b += 2 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++ { Put32(buf[b:], uint32(Classes[i])) b += 4 } b = pad(b) return buf } // Request XinputUngrabDeviceKey // size: 16 type XinputUngrabDeviceKeyCookie struct { *cookie } // Write request to wire for XinputUngrabDeviceKey func (c *Conn) XinputUngrabDeviceKey(GrabWindow Id, Modifiers uint16, ModifierDevice byte, Key byte, GrabbedDevice byte) XinputUngrabDeviceKeyCookie { cookie := c.newCookie(false, false) c.newRequest(c.xinputUngrabDeviceKeyRequest(GrabWindow, Modifiers, ModifierDevice, Key, GrabbedDevice), cookie) return XinputUngrabDeviceKeyCookie{cookie} } func (c *Conn) XinputUngrabDeviceKeyChecked(GrabWindow Id, Modifiers uint16, ModifierDevice byte, Key byte, GrabbedDevice byte) XinputUngrabDeviceKeyCookie { cookie := c.newCookie(true, false) c.newRequest(c.xinputUngrabDeviceKeyRequest(GrabWindow, Modifiers, ModifierDevice, Key, GrabbedDevice), cookie) return XinputUngrabDeviceKeyCookie{cookie} } func (cook XinputUngrabDeviceKeyCookie) Check() error { return cook.check() } // Write request to wire for XinputUngrabDeviceKey func (c *Conn) xinputUngrabDeviceKeyRequest(GrabWindow Id, 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 Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units b += 2 Put32(buf[b:], uint32(GrabWindow)) b += 4 Put16(buf[b:], Modifiers) b += 2 buf[b] = ModifierDevice b += 1 buf[b] = Key b += 1 buf[b] = GrabbedDevice b += 1 return buf } // Request XinputGrabDeviceButton // size: pad((20 + pad((int(NumClasses) * 4)))) type XinputGrabDeviceButtonCookie struct { *cookie } // Write request to wire for XinputGrabDeviceButton func (c *Conn) XinputGrabDeviceButton(GrabWindow Id, GrabbedDevice byte, ModifierDevice byte, NumClasses uint16, Modifiers uint16, ThisDeviceMode byte, OtherDeviceMode byte, Button byte, OwnerEvents byte, Classes []XinputEventClass) XinputGrabDeviceButtonCookie { cookie := c.newCookie(false, false) c.newRequest(c.xinputGrabDeviceButtonRequest(GrabWindow, GrabbedDevice, ModifierDevice, NumClasses, Modifiers, ThisDeviceMode, OtherDeviceMode, Button, OwnerEvents, Classes), cookie) return XinputGrabDeviceButtonCookie{cookie} } func (c *Conn) XinputGrabDeviceButtonChecked(GrabWindow Id, GrabbedDevice byte, ModifierDevice byte, NumClasses uint16, Modifiers uint16, ThisDeviceMode byte, OtherDeviceMode byte, Button byte, OwnerEvents byte, Classes []XinputEventClass) XinputGrabDeviceButtonCookie { cookie := c.newCookie(true, false) c.newRequest(c.xinputGrabDeviceButtonRequest(GrabWindow, GrabbedDevice, ModifierDevice, NumClasses, Modifiers, ThisDeviceMode, OtherDeviceMode, Button, OwnerEvents, Classes), cookie) return XinputGrabDeviceButtonCookie{cookie} } func (cook XinputGrabDeviceButtonCookie) Check() error { return cook.check() } // Write request to wire for XinputGrabDeviceButton func (c *Conn) xinputGrabDeviceButtonRequest(GrabWindow Id, GrabbedDevice byte, ModifierDevice byte, NumClasses uint16, Modifiers uint16, ThisDeviceMode byte, OtherDeviceMode byte, Button byte, OwnerEvents byte, Classes []XinputEventClass) []byte { size := pad((20 + pad((int(NumClasses) * 4)))) b := 0 buf := make([]byte, size) buf[b] = c.extensions["XINPUTEXTENSION"] b += 1 buf[b] = 17 // request opcode b += 1 Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units b += 2 Put32(buf[b:], uint32(GrabWindow)) b += 4 buf[b] = GrabbedDevice b += 1 buf[b] = ModifierDevice b += 1 Put16(buf[b:], NumClasses) b += 2 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++ { Put32(buf[b:], uint32(Classes[i])) b += 4 } b = pad(b) return buf } // Request XinputUngrabDeviceButton // size: 16 type XinputUngrabDeviceButtonCookie struct { *cookie } // Write request to wire for XinputUngrabDeviceButton func (c *Conn) XinputUngrabDeviceButton(GrabWindow Id, Modifiers uint16, ModifierDevice byte, Button byte, GrabbedDevice byte) XinputUngrabDeviceButtonCookie { cookie := c.newCookie(false, false) c.newRequest(c.xinputUngrabDeviceButtonRequest(GrabWindow, Modifiers, ModifierDevice, Button, GrabbedDevice), cookie) return XinputUngrabDeviceButtonCookie{cookie} } func (c *Conn) XinputUngrabDeviceButtonChecked(GrabWindow Id, Modifiers uint16, ModifierDevice byte, Button byte, GrabbedDevice byte) XinputUngrabDeviceButtonCookie { cookie := c.newCookie(true, false) c.newRequest(c.xinputUngrabDeviceButtonRequest(GrabWindow, Modifiers, ModifierDevice, Button, GrabbedDevice), cookie) return XinputUngrabDeviceButtonCookie{cookie} } func (cook XinputUngrabDeviceButtonCookie) Check() error { return cook.check() } // Write request to wire for XinputUngrabDeviceButton func (c *Conn) xinputUngrabDeviceButtonRequest(GrabWindow Id, 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 Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units b += 2 Put32(buf[b:], uint32(GrabWindow)) b += 4 Put16(buf[b:], Modifiers) b += 2 buf[b] = ModifierDevice b += 1 buf[b] = Button b += 1 buf[b] = GrabbedDevice b += 1 return buf } // Request XinputAllowDeviceEvents // size: 12 type XinputAllowDeviceEventsCookie struct { *cookie } // Write request to wire for XinputAllowDeviceEvents func (c *Conn) XinputAllowDeviceEvents(Time Timestamp, Mode byte, DeviceId byte) XinputAllowDeviceEventsCookie { cookie := c.newCookie(false, false) c.newRequest(c.xinputAllowDeviceEventsRequest(Time, Mode, DeviceId), cookie) return XinputAllowDeviceEventsCookie{cookie} } func (c *Conn) XinputAllowDeviceEventsChecked(Time Timestamp, Mode byte, DeviceId byte) XinputAllowDeviceEventsCookie { cookie := c.newCookie(true, false) c.newRequest(c.xinputAllowDeviceEventsRequest(Time, Mode, DeviceId), cookie) return XinputAllowDeviceEventsCookie{cookie} } func (cook XinputAllowDeviceEventsCookie) Check() error { return cook.check() } // Write request to wire for XinputAllowDeviceEvents func (c *Conn) xinputAllowDeviceEventsRequest(Time 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 Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units b += 2 Put32(buf[b:], uint32(Time)) b += 4 buf[b] = Mode b += 1 buf[b] = DeviceId b += 1 return buf } // Request XinputGetDeviceFocus // size: 8 type XinputGetDeviceFocusCookie struct { *cookie } func (c *Conn) XinputGetDeviceFocus(DeviceId byte) XinputGetDeviceFocusCookie { cookie := c.newCookie(true, true) c.newRequest(c.xinputGetDeviceFocusRequest(DeviceId), cookie) return XinputGetDeviceFocusCookie{cookie} } func (c *Conn) XinputGetDeviceFocusUnchecked(DeviceId byte) XinputGetDeviceFocusCookie { cookie := c.newCookie(false, true) c.newRequest(c.xinputGetDeviceFocusRequest(DeviceId), cookie) return XinputGetDeviceFocusCookie{cookie} } // Request reply for XinputGetDeviceFocus // size: 32 type XinputGetDeviceFocusReply struct { Sequence uint16 Length uint32 // padding: 1 bytes Focus Id Time Timestamp RevertTo byte // padding: 15 bytes } // Waits and reads reply data from request XinputGetDeviceFocus func (cook XinputGetDeviceFocusCookie) Reply() (*XinputGetDeviceFocusReply, error) { buf, err := cook.reply() if err != nil { return nil, err } if buf == nil { return nil, nil } return xinputGetDeviceFocusReply(buf), nil } // Read reply into structure from buffer for XinputGetDeviceFocus func xinputGetDeviceFocusReply(buf []byte) *XinputGetDeviceFocusReply { v := new(XinputGetDeviceFocusReply) b := 1 // skip reply determinant b += 1 // padding v.Sequence = Get16(buf[b:]) b += 2 v.Length = Get32(buf[b:]) // 4-byte units b += 4 v.Focus = Id(Get32(buf[b:])) b += 4 v.Time = Timestamp(Get32(buf[b:])) b += 4 v.RevertTo = buf[b] b += 1 b += 15 // padding return v } func (cook XinputGetDeviceFocusCookie) Check() error { return cook.check() } // Write request to wire for XinputGetDeviceFocus func (c *Conn) xinputGetDeviceFocusRequest(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 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 XinputSetDeviceFocus // size: 16 type XinputSetDeviceFocusCookie struct { *cookie } // Write request to wire for XinputSetDeviceFocus func (c *Conn) XinputSetDeviceFocus(Focus Id, Time Timestamp, RevertTo byte, DeviceId byte) XinputSetDeviceFocusCookie { cookie := c.newCookie(false, false) c.newRequest(c.xinputSetDeviceFocusRequest(Focus, Time, RevertTo, DeviceId), cookie) return XinputSetDeviceFocusCookie{cookie} } func (c *Conn) XinputSetDeviceFocusChecked(Focus Id, Time Timestamp, RevertTo byte, DeviceId byte) XinputSetDeviceFocusCookie { cookie := c.newCookie(true, false) c.newRequest(c.xinputSetDeviceFocusRequest(Focus, Time, RevertTo, DeviceId), cookie) return XinputSetDeviceFocusCookie{cookie} } func (cook XinputSetDeviceFocusCookie) Check() error { return cook.check() } // Write request to wire for XinputSetDeviceFocus func (c *Conn) xinputSetDeviceFocusRequest(Focus Id, Time 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 Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units b += 2 Put32(buf[b:], uint32(Focus)) b += 4 Put32(buf[b:], uint32(Time)) b += 4 buf[b] = RevertTo b += 1 buf[b] = DeviceId b += 1 return buf } // Request XinputGetFeedbackControl // size: 8 type XinputGetFeedbackControlCookie struct { *cookie } func (c *Conn) XinputGetFeedbackControl(DeviceId byte) XinputGetFeedbackControlCookie { cookie := c.newCookie(true, true) c.newRequest(c.xinputGetFeedbackControlRequest(DeviceId), cookie) return XinputGetFeedbackControlCookie{cookie} } func (c *Conn) XinputGetFeedbackControlUnchecked(DeviceId byte) XinputGetFeedbackControlCookie { cookie := c.newCookie(false, true) c.newRequest(c.xinputGetFeedbackControlRequest(DeviceId), cookie) return XinputGetFeedbackControlCookie{cookie} } // Request reply for XinputGetFeedbackControl // size: 32 type XinputGetFeedbackControlReply struct { Sequence uint16 Length uint32 // padding: 1 bytes NumFeedback uint16 // padding: 22 bytes } // Waits and reads reply data from request XinputGetFeedbackControl func (cook XinputGetFeedbackControlCookie) Reply() (*XinputGetFeedbackControlReply, error) { buf, err := cook.reply() if err != nil { return nil, err } if buf == nil { return nil, nil } return xinputGetFeedbackControlReply(buf), nil } // Read reply into structure from buffer for XinputGetFeedbackControl func xinputGetFeedbackControlReply(buf []byte) *XinputGetFeedbackControlReply { v := new(XinputGetFeedbackControlReply) b := 1 // skip reply determinant b += 1 // padding v.Sequence = Get16(buf[b:]) b += 2 v.Length = Get32(buf[b:]) // 4-byte units b += 4 v.NumFeedback = Get16(buf[b:]) b += 2 b += 22 // padding return v } func (cook XinputGetFeedbackControlCookie) Check() error { return cook.check() } // Write request to wire for XinputGetFeedbackControl func (c *Conn) xinputGetFeedbackControlRequest(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 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 XinputGetDeviceKeyMapping // size: 8 type XinputGetDeviceKeyMappingCookie struct { *cookie } func (c *Conn) XinputGetDeviceKeyMapping(DeviceId byte, FirstKeycode XinputKeyCode, Count byte) XinputGetDeviceKeyMappingCookie { cookie := c.newCookie(true, true) c.newRequest(c.xinputGetDeviceKeyMappingRequest(DeviceId, FirstKeycode, Count), cookie) return XinputGetDeviceKeyMappingCookie{cookie} } func (c *Conn) XinputGetDeviceKeyMappingUnchecked(DeviceId byte, FirstKeycode XinputKeyCode, Count byte) XinputGetDeviceKeyMappingCookie { cookie := c.newCookie(false, true) c.newRequest(c.xinputGetDeviceKeyMappingRequest(DeviceId, FirstKeycode, Count), cookie) return XinputGetDeviceKeyMappingCookie{cookie} } // Request reply for XinputGetDeviceKeyMapping // size: (32 + pad((int(Length) * 4))) type XinputGetDeviceKeyMappingReply struct { Sequence uint16 Length uint32 // padding: 1 bytes KeysymsPerKeycode byte // padding: 23 bytes Keysyms []Keysym // size: pad((int(Length) * 4)) } // Waits and reads reply data from request XinputGetDeviceKeyMapping func (cook XinputGetDeviceKeyMappingCookie) Reply() (*XinputGetDeviceKeyMappingReply, error) { buf, err := cook.reply() if err != nil { return nil, err } if buf == nil { return nil, nil } return xinputGetDeviceKeyMappingReply(buf), nil } // Read reply into structure from buffer for XinputGetDeviceKeyMapping func xinputGetDeviceKeyMappingReply(buf []byte) *XinputGetDeviceKeyMappingReply { v := new(XinputGetDeviceKeyMappingReply) b := 1 // skip reply determinant b += 1 // padding v.Sequence = Get16(buf[b:]) b += 2 v.Length = Get32(buf[b:]) // 4-byte units b += 4 v.KeysymsPerKeycode = buf[b] b += 1 b += 23 // padding v.Keysyms = make([]Keysym, v.Length) for i := 0; i < int(v.Length); i++ { v.Keysyms[i] = Keysym(Get32(buf[b:])) b += 4 } b = pad(b) return v } func (cook XinputGetDeviceKeyMappingCookie) Check() error { return cook.check() } // Write request to wire for XinputGetDeviceKeyMapping func (c *Conn) xinputGetDeviceKeyMappingRequest(DeviceId byte, FirstKeycode XinputKeyCode, 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 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 XinputChangeDeviceKeyMapping // size: pad((8 + pad(((int(KeycodeCount) * int(KeysymsPerKeycode)) * 4)))) type XinputChangeDeviceKeyMappingCookie struct { *cookie } // Write request to wire for XinputChangeDeviceKeyMapping func (c *Conn) XinputChangeDeviceKeyMapping(DeviceId byte, FirstKeycode XinputKeyCode, KeysymsPerKeycode byte, KeycodeCount byte, Keysyms []Keysym) XinputChangeDeviceKeyMappingCookie { cookie := c.newCookie(false, false) c.newRequest(c.xinputChangeDeviceKeyMappingRequest(DeviceId, FirstKeycode, KeysymsPerKeycode, KeycodeCount, Keysyms), cookie) return XinputChangeDeviceKeyMappingCookie{cookie} } func (c *Conn) XinputChangeDeviceKeyMappingChecked(DeviceId byte, FirstKeycode XinputKeyCode, KeysymsPerKeycode byte, KeycodeCount byte, Keysyms []Keysym) XinputChangeDeviceKeyMappingCookie { cookie := c.newCookie(true, false) c.newRequest(c.xinputChangeDeviceKeyMappingRequest(DeviceId, FirstKeycode, KeysymsPerKeycode, KeycodeCount, Keysyms), cookie) return XinputChangeDeviceKeyMappingCookie{cookie} } func (cook XinputChangeDeviceKeyMappingCookie) Check() error { return cook.check() } // Write request to wire for XinputChangeDeviceKeyMapping func (c *Conn) xinputChangeDeviceKeyMappingRequest(DeviceId byte, FirstKeycode XinputKeyCode, KeysymsPerKeycode byte, KeycodeCount byte, Keysyms []Keysym) []byte { size := pad((8 + 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 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++ { Put32(buf[b:], uint32(Keysyms[i])) b += 4 } b = pad(b) return buf } // Request XinputGetDeviceModifierMapping // size: 8 type XinputGetDeviceModifierMappingCookie struct { *cookie } func (c *Conn) XinputGetDeviceModifierMapping(DeviceId byte) XinputGetDeviceModifierMappingCookie { cookie := c.newCookie(true, true) c.newRequest(c.xinputGetDeviceModifierMappingRequest(DeviceId), cookie) return XinputGetDeviceModifierMappingCookie{cookie} } func (c *Conn) XinputGetDeviceModifierMappingUnchecked(DeviceId byte) XinputGetDeviceModifierMappingCookie { cookie := c.newCookie(false, true) c.newRequest(c.xinputGetDeviceModifierMappingRequest(DeviceId), cookie) return XinputGetDeviceModifierMappingCookie{cookie} } // Request reply for XinputGetDeviceModifierMapping // size: (32 + pad(((int(KeycodesPerModifier) * 8) * 1))) type XinputGetDeviceModifierMappingReply struct { Sequence uint16 Length uint32 // padding: 1 bytes KeycodesPerModifier byte // padding: 23 bytes Keymaps []byte // size: pad(((int(KeycodesPerModifier) * 8) * 1)) } // Waits and reads reply data from request XinputGetDeviceModifierMapping func (cook XinputGetDeviceModifierMappingCookie) Reply() (*XinputGetDeviceModifierMappingReply, error) { buf, err := cook.reply() if err != nil { return nil, err } if buf == nil { return nil, nil } return xinputGetDeviceModifierMappingReply(buf), nil } // Read reply into structure from buffer for XinputGetDeviceModifierMapping func xinputGetDeviceModifierMappingReply(buf []byte) *XinputGetDeviceModifierMappingReply { v := new(XinputGetDeviceModifierMappingReply) b := 1 // skip reply determinant b += 1 // padding v.Sequence = Get16(buf[b:]) b += 2 v.Length = 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 += pad(int((int(v.KeycodesPerModifier) * 8))) return v } func (cook XinputGetDeviceModifierMappingCookie) Check() error { return cook.check() } // Write request to wire for XinputGetDeviceModifierMapping func (c *Conn) xinputGetDeviceModifierMappingRequest(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 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 XinputSetDeviceModifierMapping // size: pad((7 + pad(((int(KeycodesPerModifier) * 8) * 1)))) type XinputSetDeviceModifierMappingCookie struct { *cookie } func (c *Conn) XinputSetDeviceModifierMapping(DeviceId byte, KeycodesPerModifier byte, Keymaps []byte) XinputSetDeviceModifierMappingCookie { cookie := c.newCookie(true, true) c.newRequest(c.xinputSetDeviceModifierMappingRequest(DeviceId, KeycodesPerModifier, Keymaps), cookie) return XinputSetDeviceModifierMappingCookie{cookie} } func (c *Conn) XinputSetDeviceModifierMappingUnchecked(DeviceId byte, KeycodesPerModifier byte, Keymaps []byte) XinputSetDeviceModifierMappingCookie { cookie := c.newCookie(false, true) c.newRequest(c.xinputSetDeviceModifierMappingRequest(DeviceId, KeycodesPerModifier, Keymaps), cookie) return XinputSetDeviceModifierMappingCookie{cookie} } // Request reply for XinputSetDeviceModifierMapping // size: 32 type XinputSetDeviceModifierMappingReply struct { Sequence uint16 Length uint32 // padding: 1 bytes Status byte // padding: 23 bytes } // Waits and reads reply data from request XinputSetDeviceModifierMapping func (cook XinputSetDeviceModifierMappingCookie) Reply() (*XinputSetDeviceModifierMappingReply, error) { buf, err := cook.reply() if err != nil { return nil, err } if buf == nil { return nil, nil } return xinputSetDeviceModifierMappingReply(buf), nil } // Read reply into structure from buffer for XinputSetDeviceModifierMapping func xinputSetDeviceModifierMappingReply(buf []byte) *XinputSetDeviceModifierMappingReply { v := new(XinputSetDeviceModifierMappingReply) b := 1 // skip reply determinant b += 1 // padding v.Sequence = Get16(buf[b:]) b += 2 v.Length = Get32(buf[b:]) // 4-byte units b += 4 v.Status = buf[b] b += 1 b += 23 // padding return v } func (cook XinputSetDeviceModifierMappingCookie) Check() error { return cook.check() } // Write request to wire for XinputSetDeviceModifierMapping func (c *Conn) xinputSetDeviceModifierMappingRequest(DeviceId byte, KeycodesPerModifier byte, Keymaps []byte) []byte { size := pad((7 + 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 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 += pad(int((int(KeycodesPerModifier) * 8))) return buf } // Request XinputGetDeviceButtonMapping // size: 8 type XinputGetDeviceButtonMappingCookie struct { *cookie } func (c *Conn) XinputGetDeviceButtonMapping(DeviceId byte) XinputGetDeviceButtonMappingCookie { cookie := c.newCookie(true, true) c.newRequest(c.xinputGetDeviceButtonMappingRequest(DeviceId), cookie) return XinputGetDeviceButtonMappingCookie{cookie} } func (c *Conn) XinputGetDeviceButtonMappingUnchecked(DeviceId byte) XinputGetDeviceButtonMappingCookie { cookie := c.newCookie(false, true) c.newRequest(c.xinputGetDeviceButtonMappingRequest(DeviceId), cookie) return XinputGetDeviceButtonMappingCookie{cookie} } // Request reply for XinputGetDeviceButtonMapping // size: (32 + pad((int(MapSize) * 1))) type XinputGetDeviceButtonMappingReply struct { Sequence uint16 Length uint32 // padding: 1 bytes MapSize byte // padding: 23 bytes Map []byte // size: pad((int(MapSize) * 1)) } // Waits and reads reply data from request XinputGetDeviceButtonMapping func (cook XinputGetDeviceButtonMappingCookie) Reply() (*XinputGetDeviceButtonMappingReply, error) { buf, err := cook.reply() if err != nil { return nil, err } if buf == nil { return nil, nil } return xinputGetDeviceButtonMappingReply(buf), nil } // Read reply into structure from buffer for XinputGetDeviceButtonMapping func xinputGetDeviceButtonMappingReply(buf []byte) *XinputGetDeviceButtonMappingReply { v := new(XinputGetDeviceButtonMappingReply) b := 1 // skip reply determinant b += 1 // padding v.Sequence = Get16(buf[b:]) b += 2 v.Length = 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 += pad(int(v.MapSize)) return v } func (cook XinputGetDeviceButtonMappingCookie) Check() error { return cook.check() } // Write request to wire for XinputGetDeviceButtonMapping func (c *Conn) xinputGetDeviceButtonMappingRequest(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 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 XinputSetDeviceButtonMapping // size: pad((8 + pad((int(MapSize) * 1)))) type XinputSetDeviceButtonMappingCookie struct { *cookie } func (c *Conn) XinputSetDeviceButtonMapping(DeviceId byte, MapSize byte, Map []byte) XinputSetDeviceButtonMappingCookie { cookie := c.newCookie(true, true) c.newRequest(c.xinputSetDeviceButtonMappingRequest(DeviceId, MapSize, Map), cookie) return XinputSetDeviceButtonMappingCookie{cookie} } func (c *Conn) XinputSetDeviceButtonMappingUnchecked(DeviceId byte, MapSize byte, Map []byte) XinputSetDeviceButtonMappingCookie { cookie := c.newCookie(false, true) c.newRequest(c.xinputSetDeviceButtonMappingRequest(DeviceId, MapSize, Map), cookie) return XinputSetDeviceButtonMappingCookie{cookie} } // Request reply for XinputSetDeviceButtonMapping // size: 32 type XinputSetDeviceButtonMappingReply struct { Sequence uint16 Length uint32 // padding: 1 bytes Status byte // padding: 23 bytes } // Waits and reads reply data from request XinputSetDeviceButtonMapping func (cook XinputSetDeviceButtonMappingCookie) Reply() (*XinputSetDeviceButtonMappingReply, error) { buf, err := cook.reply() if err != nil { return nil, err } if buf == nil { return nil, nil } return xinputSetDeviceButtonMappingReply(buf), nil } // Read reply into structure from buffer for XinputSetDeviceButtonMapping func xinputSetDeviceButtonMappingReply(buf []byte) *XinputSetDeviceButtonMappingReply { v := new(XinputSetDeviceButtonMappingReply) b := 1 // skip reply determinant b += 1 // padding v.Sequence = Get16(buf[b:]) b += 2 v.Length = Get32(buf[b:]) // 4-byte units b += 4 v.Status = buf[b] b += 1 b += 23 // padding return v } func (cook XinputSetDeviceButtonMappingCookie) Check() error { return cook.check() } // Write request to wire for XinputSetDeviceButtonMapping func (c *Conn) xinputSetDeviceButtonMappingRequest(DeviceId byte, MapSize byte, Map []byte) []byte { size := pad((8 + pad((int(MapSize) * 1)))) b := 0 buf := make([]byte, size) buf[b] = c.extensions["XINPUTEXTENSION"] b += 1 buf[b] = 29 // request opcode b += 1 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 += pad(int(MapSize)) return buf } // Request XinputQueryDeviceState // size: 8 type XinputQueryDeviceStateCookie struct { *cookie } func (c *Conn) XinputQueryDeviceState(DeviceId byte) XinputQueryDeviceStateCookie { cookie := c.newCookie(true, true) c.newRequest(c.xinputQueryDeviceStateRequest(DeviceId), cookie) return XinputQueryDeviceStateCookie{cookie} } func (c *Conn) XinputQueryDeviceStateUnchecked(DeviceId byte) XinputQueryDeviceStateCookie { cookie := c.newCookie(false, true) c.newRequest(c.xinputQueryDeviceStateRequest(DeviceId), cookie) return XinputQueryDeviceStateCookie{cookie} } // Request reply for XinputQueryDeviceState // size: 32 type XinputQueryDeviceStateReply struct { Sequence uint16 Length uint32 // padding: 1 bytes NumClasses byte // padding: 23 bytes } // Waits and reads reply data from request XinputQueryDeviceState func (cook XinputQueryDeviceStateCookie) Reply() (*XinputQueryDeviceStateReply, error) { buf, err := cook.reply() if err != nil { return nil, err } if buf == nil { return nil, nil } return xinputQueryDeviceStateReply(buf), nil } // Read reply into structure from buffer for XinputQueryDeviceState func xinputQueryDeviceStateReply(buf []byte) *XinputQueryDeviceStateReply { v := new(XinputQueryDeviceStateReply) b := 1 // skip reply determinant b += 1 // padding v.Sequence = Get16(buf[b:]) b += 2 v.Length = Get32(buf[b:]) // 4-byte units b += 4 v.NumClasses = buf[b] b += 1 b += 23 // padding return v } func (cook XinputQueryDeviceStateCookie) Check() error { return cook.check() } // Write request to wire for XinputQueryDeviceState func (c *Conn) xinputQueryDeviceStateRequest(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 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 XinputSendExtensionEvent // size: pad(((16 + pad(((int(NumEvents) * 32) * 1))) + pad((int(NumClasses) * 4)))) type XinputSendExtensionEventCookie struct { *cookie } // Write request to wire for XinputSendExtensionEvent func (c *Conn) XinputSendExtensionEvent(Destination Id, DeviceId byte, Propagate bool, NumClasses uint16, NumEvents byte, Events string, Classes []XinputEventClass) XinputSendExtensionEventCookie { cookie := c.newCookie(false, false) c.newRequest(c.xinputSendExtensionEventRequest(Destination, DeviceId, Propagate, NumClasses, NumEvents, Events, Classes), cookie) return XinputSendExtensionEventCookie{cookie} } func (c *Conn) XinputSendExtensionEventChecked(Destination Id, DeviceId byte, Propagate bool, NumClasses uint16, NumEvents byte, Events string, Classes []XinputEventClass) XinputSendExtensionEventCookie { cookie := c.newCookie(true, false) c.newRequest(c.xinputSendExtensionEventRequest(Destination, DeviceId, Propagate, NumClasses, NumEvents, Events, Classes), cookie) return XinputSendExtensionEventCookie{cookie} } func (cook XinputSendExtensionEventCookie) Check() error { return cook.check() } // Write request to wire for XinputSendExtensionEvent func (c *Conn) xinputSendExtensionEventRequest(Destination Id, DeviceId byte, Propagate bool, NumClasses uint16, NumEvents byte, Events string, Classes []XinputEventClass) []byte { size := pad(((16 + pad(((int(NumEvents) * 32) * 1))) + pad((int(NumClasses) * 4)))) b := 0 buf := make([]byte, size) buf[b] = c.extensions["XINPUTEXTENSION"] b += 1 buf[b] = 31 // request opcode b += 1 Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units b += 2 Put32(buf[b:], uint32(Destination)) b += 4 buf[b] = DeviceId b += 1 if Propagate { buf[b] = 1 } else { buf[b] = 0 } b += 1 Put16(buf[b:], NumClasses) b += 2 buf[b] = NumEvents b += 1 b += 3 // padding copy(buf[b:], Events[:(int(NumEvents)*32)]) b += pad(int((int(NumEvents) * 32))) for i := 0; i < int(NumClasses); i++ { Put32(buf[b:], uint32(Classes[i])) b += 4 } b = pad(b) return buf } // Request XinputDeviceBell // size: 8 type XinputDeviceBellCookie struct { *cookie } // Write request to wire for XinputDeviceBell func (c *Conn) XinputDeviceBell(DeviceId byte, FeedbackId byte, FeedbackClass byte, Percent int8) XinputDeviceBellCookie { cookie := c.newCookie(false, false) c.newRequest(c.xinputDeviceBellRequest(DeviceId, FeedbackId, FeedbackClass, Percent), cookie) return XinputDeviceBellCookie{cookie} } func (c *Conn) XinputDeviceBellChecked(DeviceId byte, FeedbackId byte, FeedbackClass byte, Percent int8) XinputDeviceBellCookie { cookie := c.newCookie(true, false) c.newRequest(c.xinputDeviceBellRequest(DeviceId, FeedbackId, FeedbackClass, Percent), cookie) return XinputDeviceBellCookie{cookie} } func (cook XinputDeviceBellCookie) Check() error { return cook.check() } // Write request to wire for XinputDeviceBell func (c *Conn) xinputDeviceBellRequest(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 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 XinputSetDeviceValuators // size: pad((8 + pad((int(NumValuators) * 4)))) type XinputSetDeviceValuatorsCookie struct { *cookie } func (c *Conn) XinputSetDeviceValuators(DeviceId byte, FirstValuator byte, NumValuators byte, Valuators []int32) XinputSetDeviceValuatorsCookie { cookie := c.newCookie(true, true) c.newRequest(c.xinputSetDeviceValuatorsRequest(DeviceId, FirstValuator, NumValuators, Valuators), cookie) return XinputSetDeviceValuatorsCookie{cookie} } func (c *Conn) XinputSetDeviceValuatorsUnchecked(DeviceId byte, FirstValuator byte, NumValuators byte, Valuators []int32) XinputSetDeviceValuatorsCookie { cookie := c.newCookie(false, true) c.newRequest(c.xinputSetDeviceValuatorsRequest(DeviceId, FirstValuator, NumValuators, Valuators), cookie) return XinputSetDeviceValuatorsCookie{cookie} } // Request reply for XinputSetDeviceValuators // size: 32 type XinputSetDeviceValuatorsReply struct { Sequence uint16 Length uint32 // padding: 1 bytes Status byte // padding: 23 bytes } // Waits and reads reply data from request XinputSetDeviceValuators func (cook XinputSetDeviceValuatorsCookie) Reply() (*XinputSetDeviceValuatorsReply, error) { buf, err := cook.reply() if err != nil { return nil, err } if buf == nil { return nil, nil } return xinputSetDeviceValuatorsReply(buf), nil } // Read reply into structure from buffer for XinputSetDeviceValuators func xinputSetDeviceValuatorsReply(buf []byte) *XinputSetDeviceValuatorsReply { v := new(XinputSetDeviceValuatorsReply) b := 1 // skip reply determinant b += 1 // padding v.Sequence = Get16(buf[b:]) b += 2 v.Length = Get32(buf[b:]) // 4-byte units b += 4 v.Status = buf[b] b += 1 b += 23 // padding return v } func (cook XinputSetDeviceValuatorsCookie) Check() error { return cook.check() } // Write request to wire for XinputSetDeviceValuators func (c *Conn) xinputSetDeviceValuatorsRequest(DeviceId byte, FirstValuator byte, NumValuators byte, Valuators []int32) []byte { size := pad((8 + pad((int(NumValuators) * 4)))) b := 0 buf := make([]byte, size) buf[b] = c.extensions["XINPUTEXTENSION"] b += 1 buf[b] = 33 // request opcode b += 1 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++ { Put32(buf[b:], uint32(Valuators[i])) b += 4 } b = pad(b) return buf } // Request XinputGetDeviceControl // size: 8 type XinputGetDeviceControlCookie struct { *cookie } func (c *Conn) XinputGetDeviceControl(ControlId uint16, DeviceId byte) XinputGetDeviceControlCookie { cookie := c.newCookie(true, true) c.newRequest(c.xinputGetDeviceControlRequest(ControlId, DeviceId), cookie) return XinputGetDeviceControlCookie{cookie} } func (c *Conn) XinputGetDeviceControlUnchecked(ControlId uint16, DeviceId byte) XinputGetDeviceControlCookie { cookie := c.newCookie(false, true) c.newRequest(c.xinputGetDeviceControlRequest(ControlId, DeviceId), cookie) return XinputGetDeviceControlCookie{cookie} } // Request reply for XinputGetDeviceControl // size: 32 type XinputGetDeviceControlReply struct { Sequence uint16 Length uint32 // padding: 1 bytes Status byte // padding: 23 bytes } // Waits and reads reply data from request XinputGetDeviceControl func (cook XinputGetDeviceControlCookie) Reply() (*XinputGetDeviceControlReply, error) { buf, err := cook.reply() if err != nil { return nil, err } if buf == nil { return nil, nil } return xinputGetDeviceControlReply(buf), nil } // Read reply into structure from buffer for XinputGetDeviceControl func xinputGetDeviceControlReply(buf []byte) *XinputGetDeviceControlReply { v := new(XinputGetDeviceControlReply) b := 1 // skip reply determinant b += 1 // padding v.Sequence = Get16(buf[b:]) b += 2 v.Length = Get32(buf[b:]) // 4-byte units b += 4 v.Status = buf[b] b += 1 b += 23 // padding return v } func (cook XinputGetDeviceControlCookie) Check() error { return cook.check() } // Write request to wire for XinputGetDeviceControl func (c *Conn) xinputGetDeviceControlRequest(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 Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units b += 2 Put16(buf[b:], ControlId) b += 2 buf[b] = DeviceId b += 1 b += 1 // padding return buf }