
    ^jT                        d dl Z d dlZd dlZd dlmZmZmZmZmZ d dl	m
Z
mZmZmZmZmZ d dlZd dlmZ d dlmZmZmZmZmZ d dlmZ d dlmZ d dlmZ d d	lm Z  d d
l!m"Z"m#Z# d dl$m%Z% dD ]Z&	  ej'        e&          Z( n# e)$ r Y w xY w e)d          dZ*dZ+dZ,d Z-dZ.d Z/dZ0dZ1dZ2dZ3d Z4dZ5dZ6dZ7dZ8dZ9dZ:dZ;dZ<dZ=dZ>dZ?dZ@dZAdZBdZCdZDd ZEd!ZFdZGdZHdZIdZJdZKdZLdZMdZNd"ZOd#ZPdZQd$ZRd%ZSd&ZTd'ZUd(ZVd)ZWd*ZXd+ZYd,ZZd-Z[d.Z\d/Z]d0Z^d1Z_d2Z`d3Zad4Zbd5Zcd6Zdd7Zed8Zfd9Zgd:Zhd;Zid<Zjd=Zkd>Zld?Zmd@ZndAZodBZpdCZqdZrdZsdDZtdEZud Zv G dF dGe          Zw G dH dIe          Zx G dJ dKe          Zy G dL dMe          Zz G dN dOe          Z{ G dP dQe          Z|e&dRk    rfe(j}        Z}e
e" ee{          ge}_~        e
e}_        e(dS         Ze
e_        e
 eex          ge_~        e(dT         Ze
e_        e
e
e
 ee|          ge_~        nCdZ}e(j        Ze
e_        e
 eex          ge_~        e(j        Ze
e_        e
e
 eez          ge_~        e(j        Ze
 eey          ge_~        e
e_        eZeZdUZd ZdZdZd ZdZ ej        dVdWdXdYdZd d[d d\d]d^          Z ej        d_d`dadbdcd d[d d\d]d^          Z G dd deej                  Z G df dgej                  Z G dh diej                  Z G dj dkej                  Zdl Ze8dme9dne:doe;dpe<dqe=dreBdse>dte?due@dveAdweCdxeDdyeEdzeFd{iZ G d| d}e          Z G d~ de          Ze                    d           e                    d           e                    d            e            Z G d de          Z G d de          Zd Zd ZdS )    N)POINTER	Structurebyrefc_void_pwindll)DWORDLONGLPCWSTRSHORTULONGWORD)EventDispatcher)AbsoluteAxisButton
ControllerControllerManagerDevice)_ole32)	_oleaut32)com)CLSCTX_INPROC_SERVER)BYTEVARIANT)Vec2)	xinput1_4xinput9_1_0	xinput1_3zCould not import XInputi  i!                              @         i   i   i   i    i @           i X  iX  iX  iX  iX  iX  iX  iX  iX  iX  iX  iX  iX  iX  iX  iX  i X  i!X  i"X  i#X  i$X  i%X  i&X  i'X  i0X  i1X  i2X  i3X  i4X  i5X  i6X  i7X  i  i  c                   <    e Zd ZdefdefdefdefdefdefdefgZdS )	XINPUT_GAMEPADwButtonsbLeftTriggerbRightTriggersThumbLXsThumbLYsThumbRXsThumbRYN)__name__
__module____qualname__r   r   r   _fields_     T/home/agentuser/manim-venv/lib/python3.11/site-packages/pyglet/input/win32/xinput.pyr.   r.   s   sM        	T		$	U	U	U	UHHHr;   r.   c                       e Zd ZdefdefgZdS )XINPUT_STATEdwPacketNumberGamepadN)r6   r7   r8   r   r.   r9   r:   r;   r<   r>   r>      s%        	5!	N#HHHr;   r>   c                       e Zd ZdefdefgZdS )XINPUT_VIBRATIONwLeftMotorSpeedwRightMotorSpeedN)r6   r7   r8   r   r9   r:   r;   r<   rB   rB      s%        	D!	T"HHHr;   rB   c                   0    e Zd ZdefdefdefdefdefgZdS )XINPUT_CAPABILITIESTypeSubTypeFlagsr@   	VibrationN)r6   r7   r8   r   r   r.   rB   r9   r:   r;   r<   rF   rF      s<        		D	$	N#	&'HHHr;   rF   c                       e Zd ZdefdefgZdS )XINPUT_BATTERY_INFORMATIONBatteryTypeBatteryLevelN)r6   r7   r8   r   r9   r:   r;   r<   rL   rL      s%        		HHHr;   rL   c                   0    e Zd ZdefdefdefdefdefgZdS )XINPUT_CAPABILITIES_EXCapabilitiesvendorId	productId
revisionIda4N)r6   r7   r8   rF   r   r   r9   r:   r;   r<   rP   rP      s=        	,-	T	d	t	uHHHr;   rP   r   d   l   
   iEi:  i           K   .   $   l   &%8 is  i     M   c            	       n    e Zd Zd ej                    fd ej        ee ee          e	e	          fgZ
dS )IWbemClassObjectGetQualifierSetGetN)r6   r7   r8   r   	STDMETHODBSTRr	   r   r   r   	_methods_r:   r;   r<   rb   rb      sR        					tT777#3#3Xx	H	H	JIIIr;   rb   c            
           e Zd Zd ej                    fd ej        ee ee           ee                    fd ej                    fd ej                    fd ej                    fgZ	dS )IEnumWbemClassObjectResetNext	NextAsyncCloneSkipN)
r6   r7   r8   r   re   r	   r   r   rb   rg   r:   r;   r<   ri   ri      s        					tUGG,<$=$=wwu~~	N	N	P									IIIr;   ri   c                   L   e Zd Zd ej                    fd ej                    fd ej                    fd ej                    fd ej                    fd ej                    fd ej                    fd ej                    fd	 ej                    fd
 ej                    fd ej                    fd ej                    fd ej                    fd ej                    fd ej                    fd ej        eee ee	                    fd ej                    fgZ
dS )IWbemServicesOpenNamespaceCancelAsyncCallQueryObjectSink	GetObjectGetObjectAsyncPutClassPutClassAsyncDeleteClassDeleteClassAsyncCreateClassEnumCreateClassEnumAsyncPutInstancePutInstanceAsyncDeleteInstanceDeleteInstanceAsyncCreateInstanceEnumCreateInstanceEnumAsyncN)r6   r7   r8   r   re   rf   r	   IWbemContextr   ri   rg   r:   r;   r<   rp   rp      so       																																															tT<9M1N1N	O	O	Q	"		C$IIIr;   rp   c                   T    e Zd Zd ej        eeeeeee ee	                    fgZ
dS )IWbemLocatorConnectServerN)r6   r7   r8   r   re   rf   r	   r   r   rp   rg   r:   r;   r<   r   r     sF        		tT4tT<Q^I_I_	`	`	bIIIr;   r   c                     g } t                      }t                      }t                      }t          dz              }t	          j        t          dt          t          t          |                     t          d          }t          d          }t          d          }|                    |ddddddt          |                    }|dk    r| S t	          j        |t          t          dt          t           dt"                    }|dk    r| S |                    |ddt          |                    }|dk    r| S t'                      }	t)          j        t          |	                     	 t-                      }
|                    dt1          |          |t          |
                    }|
j        dk    rnt5          |
j                  D ]}||                             |dt          |	          dd          }|dk    r|	j        t:          k    r|	j        d	k    rd
|	j        v r|	j        }|                    d          dz   }|||dz            }|                    d          dz   }|||dz            }| |                                  }|| vr| !                    |           ې=t)          j"        t          |	                     | S )a  We iterate over all devices in the system looking for IG_ in the device ID, which indicates it's an
    XInput device. Returns a list of strings containing pid/vid.
    Monstrosity found at: https://docs.microsoft.com/en-us/windows/win32/xinput/xinput-and-directinput
       Nz\\.\root\cimv2Win32_PNPEntityDeviceIDr   Ti'   IG_PID_r#   VID_)#r   rp   ri   rb   ole32CoCreateInstanceCLSID_WbemLocatorr   IID_IWbemLocatorr   rf   r   CoSetProxyBlanketRPC_C_AUTHN_WINNTRPC_C_AUTHZ_NONERPC_C_AUTHN_LEVEL_CALLRPC_C_IMP_LEVEL_IMPERSONATE	EOAC_NONEr   r   oleaut32VariantInitr   rk   lenvaluerangerd   vtVT_BSTRbstrValindexlowerappendVariantClear)guids_foundlocatorservicesenum_devicesdevices
name_space
class_name	device_idhrvarreturned_hriresultguid	pid_startdev_pid	vid_startdev_vidsdl_guids                       r<   get_xinput_guidsr      s   
 KnnGH'))L"$''G	,d4HJZ\abi\j\jkkk*++J'((JZ  I 
		z4q!T4x	Y	YB	Qww 
	 +<>NPTVl!<dI
O 
OB 
Qww		$	$ZD%:M:M	N	NB	Qww
))Cs$$$977s7||WeHooNN>Qx~&& 	9 	9AQZ^^Iq%**dDIIF{{6W$$):):++"{$(JJv$6$6$:	"&yQ'>"?$(JJv$6$6$:	"&yQ'>"?&-#8w#8#8#>#>#@#@#;66'..x888+9. %**%%%r;   dpupdpdowndpleftdprightstartbackguide	leftstick
rightstickleftshoulderrightshoulderabxyc                   0     e Zd Z fdZd Zd Zd Z xZS )XInputDevicec           	         t                                          d d|            || _        t          j        |          | _        d| _        t                      | _        d| _	        t                      | _        d | _        d | _        i dt          d          dt          d          dt          d          dt          d          dt          d          d	t          d	          d
t          d
          dt          d          dt          d          dt          d          dt          d          dt          d          dt          d          dt          d          dt          d          dt          ddd          dt          ddd          t          ddd          t          ddd          t          ddd          t          ddd          d| _        d S )NXInputFr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   leftxi r*   leftyrightxrightylefttriggerr"   righttrigger)r   r   r   r   )super__init__r   weakrefproxy_manager	connectedr>   xinput_statepacket_numberrB   	vibrationweak_durationstrong_durationr   r   controls)selfr   manager	__class__s      r<   r   zXInputDevice.__init__x  s   ///000
g..(NN)++!#


 
 	

 F6NN
 VG__
 VG__
 F>22
 VO44
 ,,
 &..
 F6NN
 fX&&
 fX&&
 vi((
" \'6599#
$ \'6599%
& #8VU;;"8VU;;'q#>>(C@@-
 
 
r;   c                 T    t          | j        t          | j                             d S N)XInputSetStater   r   r   r   s    r<   set_rumble_statezXInputDevice.set_rumble_state  s$    tz5#8#899999r;   c                 N    t          | j                                                  S r   )listr   valuesr   s    r<   get_controlszXInputDevice.get_controls  s    DM((**+++r;   c                     dS )NXINPUTCONTROLLERr:   r   s    r<   get_guidzXInputDevice.get_guid  s    !!r;   )r6   r7   r8   r   r   r   r   __classcell__)r   s   @r<   r   r   v  sf        $
 $
 $
 $
 $
L: : :, , ," " " " " " "r;   r   c                   B    e Zd Zd Zd Zd Zed             Zd Zd Z	dS )XInputDeviceManagerc                 H     fdt          t                    D              _        t                       _        t          t                    D ]\} j        |         }t          |t          |j                            t          k    r;d|_	         j        
                    |           ]d _        d _        t          j                     _        t          j                     _        t          j         j        d           _         j                                         d S )Nc                 0    g | ]}t          |          S r:   )r   ).0r   r   s     r<   
<listcomp>z0XInputDeviceManager.__init__.<locals>.<listcomp>  s#    RRRaLD11RRRr;   TgMb?       @)targetdaemon)r   XUSER_MAX_COUNTall_devicesset_connected_devicesXInputGetStater   r   ERROR_DEVICE_NOT_CONNECTEDr   add_polling_rate_detection_rate	threadingEvent_exitLock	_dev_lockThread
_get_state_threadr   )r   r   devices   `  r<   r   zXInputDeviceManager.__init__  s    RRRR5;Q;QRRR"%%%'' 	+ 	+A%a(Fav':!;!;<<@ZZZ#F#''****""_&&
")) 'ttLLLr;   c                 f    | j         5  d | j        D             cd d d            S # 1 swxY w Y   d S )Nc                      g | ]}|j         	|S r:   )r   )r   devs     r<   r   z3XInputDeviceManager.get_devices.<locals>.<listcomp>  s    EEECs}ECEEEr;   )r  r   r   s    r<   get_deviceszXInputDeviceManager.get_devices  s    ^ 	F 	FEE4#3EEE	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	Fs   &**c                    t          t          t                              }| j        }| j        }d}| j                                        s| j                                         ||z  }||k    r|| j	        z
  D ]}| j
        |         }t          |t          |j                            t          k    r;d|_        | j	                            |           t"          j        j                            | d|           d}| j	                                        D ]}| j
        |         }t          |t          |j                            }|t          k    rd|j        r\d|_        |                                 | j	                            |           t"          j        j                            | d|           |t0          k    r|j        r|j        B|xj        |z  c_        |j        dk    r'd |_        d|j        _        |                                 |j        B|xj        |z  c_        |j        dk    r'd |_        d|j        _        |                                 |j        j         |j!        k    r\t"          j        j                            | d|           | j        "                                 tG          j$        |           | j                                        d S d S )Ng        T
on_connectFon_disconnectr   _on_state_change)%r   r   r   r   r   r  is_setr  acquirer   r   r   r   r   r   r   r   pygletappplatform_event_loop
post_eventcopycloseremoveERROR_SUCCESSis_openr   r   rD   r   r   rC   r?   r   releasetimesleep)r   xuser_max_countpolling_ratedetect_rateelapsedr   r  r   s           r<   r  zXInputDeviceManager._get_state  s   eO4455)**##%% <	%N""$$$|#G +%%(4+BB 	Z 	ZA!-a0F%av/B)C)CDDHbbb  (,F$+//222J2==dLRXYYYY ,1133 #` #`)!,'51D+E+EFF777' !+0(/66q999
6AA$Y_``` ! },,, +7,,<,,!/14437F0@AF,="33555-9..,>..!1Q6659F2?@F,<"33555 *9V=QQQ  J2==dDVX^___N""$$$J|$$$y *##%% <	% <	% <	% <	% <	%r;   c                 :   t                                           D ])\  }}| j        j        j        |z  | j        |         _        *| j        j        j        | j        d         _        | j        j        j        | j        d         _        | j        j        j	        | j        d         _        | j        j        j
        | j        d         _        | j        j        j        | j        d         _        | j        j        j        | j        d         _        | j        j        | _        d S )Nr   r   r   r   r   r   )controller_api_to_pygletitemsr   r@   r/   r   r   r0   r1   r2   r3   r4   r5   r?   r   )r  buttonnames      r<   r  z$XInputDeviceManager._on_state_change  s     5::<< 	X 	XLFD*0*=*E*NQW*WFOD!''/5/B/J/W&,060C0K0Y'-)/)<)D)M &)/)<)D)M &*0*=*E*N!'*0*=*E*N!'%2Ar;   c                     dS )zA device was connected.Nr:   r   r  s     r<   r  zXInputDeviceManager.on_connect        r;   c                     dS )zA device was disconnectedNr:   r)  s     r<   r  z!XInputDeviceManager.on_disconnect  r*  r;   N)
r6   r7   r8   r   r  r  staticmethodr  r  r  r:   r;   r<   r   r     s          $F F F
B% B% B%H B B \B& & &( ( ( ( (r;   r   r  r  r  c                   <    e Zd Zd Zd Zd ZddZddZd Zd	 Z	d
S )XInputControllerc                 P   t                                           D ]D}| j        j        |         }| j                            |           |                     ||           EdD ]D}| j        j        |         }| j                            |           |                     ||           Ed S )N)r   r   r   r   r   r   )	r$  r   r  r   _button_controlsr   _add_button_axis_controls	_add_axis)r   button_namecontrol	axis_names       r<   _initialize_controlsz%XInputController._initialize_controls%  s    3::<< 	3 	3Kk*;7G!((111Wk2222\ 	/ 	/Ik*95G&&w///NN7I....	/ 	/r;   c                     d|j         |j        z
  z  d|j         |j        z
  z  d|j        z  z
  dv r|j         fd            }d S dv r|j         fd            }d S dv r|j         fd	            }d S d S )
N      ?r         )r   r   c                 d    | z  }t          |                               d|           d S )Non_trigger_motion)setattrdispatch_event)r   normalized_valuer'  r   tscales     r<   	on_changez-XInputController._add_axis.<locals>.on_change7  sB    #(6> d$4555##$7tEUVVVVVr;   )r   r   c                     | z  z   }t          |           t          j        j                  _                            ddj                   d S )Non_stick_motionr   )r=  r   r   r   
leftanalogr>  r   r?  biasr'  scaler   s     r<   rA  z-XInputController._add_axis.<locals>.on_change>  s]    #(5=4#7 d$4555"&tz4:">">##$5t[$/ZZZZZr;   )r   r   c                     | z  z   }t          |           t          j        j                  _                            ddj                   d S )NrC  r   )r=  r   r   r   rightanalogr>  rE  s     r<   rA  z-XInputController._add_axis.<locals>.on_changeF  s_    #(5=4#7 d$4555#'T[#A#A ##$5t\4K[\\\\\r;   )maxminevent)r   r5  r'  rA  rF  rG  r@  s   ` ` @@@r<   r3  zXInputController._add_axis1  s@   gk12w{W[01gkE))222]W W W W W W ]W W W
 '''][ [ [ [ [ [ [ ][ [ [ )))]] ] ] ] ] ] ] ]] ] ] *)r;   c                      dv r|j          fd            }d S |j          fd            }|j          fd            }|j          fd            }d S )N)r   r   r   r   c                     ddddd         \  }}t          ||| z             t          j        j                  _                            dj                   d S )N)dpadxr:  )rO  r9  )dpadyr:  )rP  r9  )r   r   r   r   on_dpad_motion)r=  r   rO  rP  dpadr>  )r   r   rF  r'  r   s      r<   rA  z/XInputController._add_button.<locals>.on_changeP  st    *9n*9> S  SSW YfdUl333 TZ88	##$4dDIFFFFFr;   c                 *    t          |            d S r   )r=  )r   r'  r   s    r<   rA  z/XInputController._add_button.<locals>.on_changeX  s    dE*****r;   c                  6                         d            d S )Non_button_pressr>  r'  r   s   r<   on_pressz.XInputController._add_button.<locals>.on_press\  s"    ##$5tTBBBBBr;   c                  6                         d            d S )Non_button_releaserV  rW  s   r<   
on_releasez0XInputController._add_button.<locals>.on_release`  s"    ##$7tDDDDDr;   )rL  )r   r5  r'  rA  rX  r[  s   ` `   r<   r1  zXInputController._add_buttonM  s    :::]G G G G G ]G G G ]+ + + + + ]+ ]C C C C C ]C ]E E E E E ]E E Er;   r9        ?c                     t          t          t          d|          d          dz            | j        j        _        || j        _        | j                                         d S Nr9  r   i  )intrJ  rK  r  r   rD   r   r   r   strengthdurations      r<   rumble_play_weakz!XInputController.rumble_play_weakd  sU    14SS(9K9KQ5O5ORX5X1Y1Y.$,!$$&&&&&r;   c                     t          t          t          d|          d          dz            | j        j        _        || j        _        | j                                         d S r^  )r_  rJ  rK  r  r   rC   r   r   r`  s      r<   rumble_play_strongz#XInputController.rumble_play_strongi  sU    03CC8J8JA4N4NQW4W0X0X-&.#$$&&&&&r;   c                 Z    d| j         j        _        | j                                          d S Nr   )r  r   rD   r   r   s    r<   rumble_stop_weakz!XInputController.rumble_stop_weakn  s)    12.$$&&&&&r;   c                 Z    d| j         j        _        | j                                          d S rg  )r  r   rC   r   r   s    r<   rumble_stop_strongz#XInputController.rumble_stop_strongr  s)    01-$$&&&&&r;   N)r9  r\  )
r6   r7   r8   r7  r3  r1  rc  re  rh  rj  r:   r;   r<   r.  r.  #  s        
/ 
/ 
/] ] ]8E E E.' ' ' '
' ' ' '
' ' '' ' ' ' 'r;   r.  c                       e Zd Zd Zd ZdS )XInputControllerManagerc                      i  _         t          j        D ]$}|j        dd}t	          ||           j         |<   %t          j         fd            }t          j         fd            }d S )Nr   r'  r   c                 J                         dj        |                     d S )Nr  r>  _controllersxdevicer   s    r<   r  z4XInputControllerManager.__init__.<locals>.on_connect  s'    d.?.HIIIIIr;   c                 J                         dj        |                     d S )Nr  rp  rr  s    r<   r  z7XInputControllerManager.__init__.<locals>.on_disconnect  s'    1B71KLLLLLr;   )rq  _device_managerr   r'  r.  rL  )r   r  metar  r  s   `    r<   r   z XInputControllerManager.__init__y  s    %1 	G 	GF"K1CDDD(8(F(FDf%%			J 	J 	J 	J 
		J 
		M 	M 	M 	M 
		M 	M 	Mr;   c                 H    d | j                                         D             S )Nc                 *    g | ]}|j         j        |S r:   )r  r   )r   ctlrs     r<   r   z;XInputControllerManager.get_controllers.<locals>.<listcomp>  s"    UUUt{?TUUUUr;   )rq  r   r   s    r<   get_controllersz'XInputControllerManager.get_controllers  s%    UU!2!9!9!;!;UUUUr;   N)r6   r7   r8   r   rz  r:   r;   r<   rl  rl  w  s:        M M MV V V V Vr;   rl  c                  4    t                                           S r   )ru  r  r:   r;   r<   r  r    s    &&(((r;   c                  2    d t                      D             S )Nc                 b    g | ],}t          ||j        |                                d           -S )rn  )r.  r'  r   )r   r  s     r<   r   z#get_controllers.<locals>.<listcomp>  s8    sss[aVfk6??CTCT%U%UVVsssr;   )r  r:   r;   r<   rz  rz    s    ssepererssssr;   )r   r  r   ctypesr   r   r   r   r   ctypes.wintypesr   r	   r
   r   r   r   r  pyglet.eventr   pyglet.input.baser   r   r   r   r   pyglet.libs.win32r   r   r   r   r   pyglet.libs.win32.constantsr   pyglet.libs.win32.typesr   r   pyglet.mathr   library_nameLoadLibrarylibOSError"XINPUT_GAMEPAD_LEFT_THUMB_DEADZONE#XINPUT_GAMEPAD_RIGHT_THUMB_DEADZONE XINPUT_GAMEPAD_TRIGGER_THRESHOLDBATTERY_DEVTYPE_GAMEPADBATTERY_DEVTYPE_HEADSETBATTERY_TYPE_DISCONNECTEDBATTERY_TYPE_WIREDBATTERY_TYPE_ALKALINEBATTERY_TYPE_NIMHBATTERY_TYPE_UNKNOWNBATTERY_LEVEL_EMPTYBATTERY_LEVEL_LOWBATTERY_LEVEL_MEDIUMBATTERY_LEVEL_FULLXINPUT_GAMEPAD_DPAD_UPXINPUT_GAMEPAD_DPAD_DOWNXINPUT_GAMEPAD_DPAD_LEFTXINPUT_GAMEPAD_DPAD_RIGHTXINPUT_GAMEPAD_STARTXINPUT_GAMEPAD_BACKXINPUT_GAMEPAD_LEFT_THUMBXINPUT_GAMEPAD_RIGHT_THUMBXINPUT_GAMEPAD_LEFT_SHOULDERXINPUT_GAMEPAD_RIGHT_SHOULDERXINPUT_GAMEPAD_GUIDEXINPUT_GAMEPAD_AXINPUT_GAMEPAD_BXINPUT_GAMEPAD_XXINPUT_GAMEPAD_YXINPUT_KEYSTROKE_KEYDOWNXINPUT_KEYSTROKE_KEYUPXINPUT_KEYSTROKE_REPEATXINPUT_DEVTYPE_GAMEPADXINPUT_DEVSUBTYPE_GAMEPADXINPUT_DEVSUBTYPE_WHEELXINPUT_DEVSUBTYPE_ARCADE_STICKXINPUT_DEVSUBTYPE_FLIGHT_SICKXINPUT_DEVSUBTYPE_DANCE_PADXINPUT_DEVSUBTYPE_GUITARXINPUT_DEVSUBTYPE_DRUM_KITVK_PAD_AVK_PAD_BVK_PAD_XVK_PAD_YVK_PAD_RSHOULDERVK_PAD_LSHOULDERVK_PAD_LTRIGGERVK_PAD_RTRIGGERVK_PAD_DPAD_UPVK_PAD_DPAD_DOWNVK_PAD_DPAD_LEFTVK_PAD_DPAD_RIGHTVK_PAD_STARTVK_PAD_BACKVK_PAD_LTHUMB_PRESSVK_PAD_RTHUMB_PRESSVK_PAD_LTHUMB_UPVK_PAD_LTHUMB_DOWNVK_PAD_LTHUMB_RIGHTVK_PAD_LTHUMB_LEFTVK_PAD_LTHUMB_UPLEFTVK_PAD_LTHUMB_UPRIGHTVK_PAD_LTHUMB_DOWNRIGHTVK_PAD_LTHUMB_DOWNLEFTVK_PAD_RTHUMB_UPVK_PAD_RTHUMB_DOWNVK_PAD_RTHUMB_RIGHTVK_PAD_RTHUMB_LEFTVK_PAD_RTHUMB_UPLEFTVK_PAD_RTHUMB_UPRIGHTVK_PAD_RTHUMB_DOWNRIGHTVK_PAD_RTHUMB_DOWNLEFTr   XUSER_INDEX_ANYr   ERROR_EMPTYr  r.   r>   rB   rF   rL   rP   XInputGetBatteryInformationargtypesrestyper   XInputGetCapabilitiesr   rf   r   r   r   r   r   r   r   GUIDr   r   	pIUnknownrb   ri   rp   r   r   r$  r   r   register_event_typeru  r.  rl  r  rz  r:   r;   r<   <module>r     sH         > > > > > > > > > > > > > > D D D D D D D D D D D D D D D D  ( ( ( ( ( ( Y Y Y Y Y Y Y Y Y Y Y Y Y Y - - - - - - 3 3 3 3 3 3 ! ! ! ! ! ! < < < < < < 1 1 1 1 1 1 1 1      = - -L f ..    '+
,
,, &* "&* ##%               ! ! "   " # %  &      !        !%  $ "  !                           " 	 	 	 	 	Y 	 	 	    9       y       )              Y    ;"%"A,14A[9\9\+](*/'XN"N$ggl&;&;<N  H$)!&+UE77CY;Z;Z%["" #''N"N$ggl&;&;<N5$)!&+UGG<O4P4P%Q" # ''*:";";<  
     	
CHZtT4QUW[]acghh 38JdD$PTVZ\`bfgg     s}       3=   % % % % %CM % % %P    3=   > > >H Fhhy''{ .!?cccc &/" /" /" /" /"6 /" /" /"dp( p( p( p( p(/ p( p( p(f  ' ' 5 5 5  ' ' 8 8 8  ' '(: ; ; ; &%''Q' Q' Q' Q' Q'z Q' Q' Q'hV V V V V/ V V V*) ) )t t t t ts   .B  BB