
    ^j|                    F   d dl mZ d dl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lmZ d dlmZ 	 d d	lmZ n#  dd
ZY nxY wdZej        d         s+	 d dlmZmZmZ d dlmZ d dlm
Z d dlmZ dZn# e$ r Y nw xY wesd Zd Z G d dej                  ZddZ
ddZdS )    )annotationsN)base)_di_manager)DirectInputDevice_create_controller)get_devices)get_controllers)get_joysticks)get_tabletsc                8    dd l }|                    d           g S )Nr   z&Failed to initialize wintab framework.)warningswarn)displayr   s     V/home/agentuser/manim-venv/lib/python3.11/site-packages/pyglet/input/win32/__init__.pyr   r      s#    >???	    Fwin32_disable_xinput)XInputControllerManagerXInputControllerXInputDevice)_device_managerTc                     g S N r   r   r   xinput_get_devicesr   %       	r   c                     g S r   r   r   r   r   xinput_get_controllersr   (   r   r   c                  <    e Zd ZdZd Zd ZddZdd
ZddZd Z	dS )Win32ControllerManagerzThis class manages XInput and DirectInput as a combined manager.
       XInput will override any XInput compatible DirectInput devices.
       Any devices not supported by XInput will fall back to DirectInput.
    c                t    i  _         t          rfi  _        t          j        D ]$}|j        dd}t          ||           j        |<   %t          j         fd            }t          j         fd            }                                  t          j         fd            }t          j         fd            }d S )NXINPUTCONTROLLER)nameguidc                J                         dj        |                     d S N
on_connectdispatch_event_xinput_controllersxdeviceselfs    r   r&   z3Win32ControllerManager.__init__.<locals>.on_connect<   s'    ##L$2J72STTTTTr   c                J                         dj        |                     d S Non_disconnectr'   r*   s    r   r/   z6Win32ControllerManager.__init__.<locals>.on_disconnect@   s'    ##OT5Mg5VWWWWWr   c                    | j         vrH                    |           r5t          j        j                            dj         |                     d S d S d S r%   )_di_controllers_add_di_controllerpygletappplatform_event_loop
post_event)	di_devicer,   s    r   r&   z3Win32ControllerManager.__init__.<locals>.on_connectF   si     444**955 sJ2==dLRVRfgpRqrrrrr 54s sr   c                    | j         v r=j         |          }j         | = t          j        j                            d|           d S d S r.   )r1   r3   r4   r5   r6   )r7   _controllerr,   s     r   r/   z6Win32ControllerManager.__init__.<locals>.on_disconnectL   sU    D000"29=(3
.99$Q\]]]]] 10r   )
r1   _xinput_enabledr)   _xinput_device_managerall_devicesr"   r   event_set_initial_didevices_di_device_manager)r,   xdevmetar&   r/   s   `    r   __init__zWin32ControllerManager.__init__2   s.   IK 	XMOD$.: N N $	3EFF1A$1M1M(..#)U U U U *)U $)X X X X *)X 	##%%%		!	s 	s 	s 	s 
"	!	s
 
	!	^ 	^ 	^ 	^ 
"	!	^ 	^ 	^r   c                    t           j        s&t          j                     t          j                     t           j        D ]}|                     |           d S r   )r?   
registeredregister_device_eventsset_current_devicesdevicesr2   )r,   devices     r   r>   z-Win32ControllerManager._set_initial_didevicesS   s^    !, 	557772444(0 	, 	,F##F++++	, 	,r   rH   r   returnNone | base.Controllerc                @    t          |          }|r|| j        |<   |S d S r   )r   r1   )r,   rH   
controllers      r   r2   z)Win32ControllerManager._add_di_controller[   s/    '//
 	+5D (tr   listc                Z    t           sg S d | j                                        D             S )Nc                *    g | ]}|j         j        |S r   )rH   	connected).0ctlrs     r   
<listcomp>zBWin32ControllerManager._get_xinput_controllers.<locals>.<listcomp>f   s"    \\\dkF[\\\\r   )r:   r)   valuesr,   s    r   _get_xinput_controllersz.Win32ControllerManager._get_xinput_controllersc   s2     	I\\!9!@!@!B!B\\\\r   c                N    t          | j                                                  S r   )rM   r1   rT   rU   s    r   _get_di_controllersz*Win32ControllerManager._get_di_controllersh   s    D(//11222r   c                T    |                                  |                                 z   S r   )rV   rX   rU   s    r   r	   z&Win32ControllerManager.get_controllersk   s%    ++--0H0H0J0JJJr   N)rH   r   rI   rJ   )rI   rM   )
__name__
__module____qualname____doc__rB   r>   r2   rV   rX   r	   r   r   r   r   r   ,   s         
^ ^ ^B, , ,   ] ] ] ]
3 3 3 3K K K K Kr   r   c                >    t                      t          |           z   S r   )r   dinput_get_devicesr   s    r   r   r   o   s    "4W"="===r   c                >    t                      t          |           z   S r   )r   dinput_get_controllersr`   s    r   r	   r	   s   s    !##&<W&E&EEEr   r   )
__future__r   r3   pyglet.inputr   pyglet.input.win32.directinputr   r?   r   r   r   r_   r	   rb   r
   pyglet.input.win32.wintabr   r:   optionspyglet.input.win32.xinputr   r   r   r   r;   r   r   OSErrorControllerManagerr   r   r   r   <module>rk      s   " " " " " "        L L L L L L P P P P P P P P L L L L L L T T T T T T 8 8 8 8 8 85555555      ~,- 
	eeeeeeeeeeWWWWWWOOOOOOWWWWWW   
      @K @K @K @K @KT3 @K @K @KF> > > >F F F F F Fs   9 AA3 3A;:A;