
    iyS                        d Z ddlZddlZddlZddlmZ ddlmZ ddlm	Z	 dZ
dZdZdZdZdZdZd	Zd
ZdZdZdZdZd	Zd
ZdZdZdZdZdZdZd	Zd
Z dZ!dZ"dZ#dZ$dZ%dZ&d	Z'd
Z(dZ)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eIz  ZZdeJz  Z[deKz  Z\deLz  Z]deMz  Z^deNz  Z_deOz  Z`dePz  ZadeQz  ZbdeRz  ZcdeSz  ZddeTz  ZedeUz  ZfdeVz  ZgdeWz  ZhdeXz  ZideYz  ZjdZkdZldZmej                  Zoej                  Zpej                  ZrdZs G d dej                        Zu G d  d!ej                        Zw G d" d#ej                        Zyd$ Zz G d% d&ej                        Z| ej                   epd'       ej                  d(d       e|d(            Z G d) d*ej                         Zd+ Z ej                   ej                  d,       ej                  d-       ej                  d.       ej                  d            Z G d/ d0e      Z G d1 d2ej                        Z ej                   ej                  d,       ej                  d-       ej                  d.       ej                  d3d       ed4       ej                  d5ej                              Z ej                   ej                  d,       ej                  d-       ej                  d.       ej                  d6d       ej                  d6ej                              Z ej                   ej                  d,       ej                  d-       ej                  d.       ej                  d7       ej                  d8       ewd9       ewd:       ewd;       ej                  d<       ej                  d=       ej                  d	            Z ej                   ej                  d,       ej                  d-       ej                  d.       ej                  d7       ej                  d>       ej                  d       ej                  d?       ewd@            Z ej                   ej                  d,       ej                  d-       ej                  d.       ej                  d=       ej                  dA            ZeAeeBeeCeeDeeEeiZ G dB dCe      Z e       Z ej                   eod'       ej                  dD       ej                  dE       ej                  dFd       ej                  dGd       ej"                  dH       ej                  d       ej$                  dGd
       ej                  dFe      	      Z G dI dJej                        ZdK Z G dL dMej                        ZdN Z G dO dPej                        ZddQZ G dR dSej                         ZdT Z G dU dVej                         ZdW Z G dX dYej                        ZdZ Z G d[ d\ej                         Zd] Z G d^ d_ej                        Zd` Zda Z G db dcej                         Zdd Zde Z ej                   eod'       eodE       erd,       ej"                  dH       ej                  d       ej                  d?            Z ej                   eod'       ej                  df       ej                  d?       ej                  dgd       ej                  d       ej                  dge            Z ej                   ej                  dh       ej                  di       ej                  dj       ej                  dk            Z ej                   ej                  dl       ej                  dm       ej                  dn       ej                  do            Z ej                   eod'       ej                  df       ej                  dp       ejX                  dq       ejX                  dr       ejX                  ds       eudt       eudu       eudv       eudw       ej                  dxd       ej                  dy       eod.       ej                  d       ej                  d?       ejZ                  dze       ejZ                  d{e       edx            Z ej                   eod'       ej                  df       ej                  dFd       eod.       ej                  d|       ej                  d       ej                  dFe            Z ej                   eod'       ej                  df       ej                  d}       ej                  d~       ej                  d            Zd Zy)z;
A very incomplete implementation of the XInput extension.
    N)integer_types)rq)XXInputExtension                     l                  @         	   
                     FLOATc                       e Zd Zd Zd Zy)FP1616c                     t        |dz        S )Ng      @)intselfvalues     Y/home/obispo/Crisostomo_bridge/mision_env/lib/python3.12/site-packages/Xlib/ext/xinput.pycheck_valuezFP1616.check_value   s    57?##    c                 0    t        |      t        d      z  S )Nr   float)r"   r#   displays      r$   parse_valuezFP1616.parse_value   s    U|eGn,,r&   N)__name__
__module____qualname__r%   r+    r&   r$   r   r      s    $-r&   r   c                        e Zd ZdZdZd Zd Zy)FP3232lLr   c                     |S Nr/   r!   s     r$   r%   zFP3232.check_value   s    r&   c                 H    |\  }}t        |      }|t        |      dz  z  }|S )Ng      =r(   )r"   r#   r*   integralfracrets         r$   r+   zFP3232.parse_value   s,    $HouT{o..
r&   N)r,   r-   r.   
structcodestructvaluesr%   r+   r/   r&   r$   r1   r1      s    JLr&   r1   c                      e Zd Z ej                   ej
                  d       ej                  d       ej                          ej                  d       ej                  d            Z	 ej                   ej                          ej                  d       ej                  d       ej                          ej                  d       ej                  d       ej                  d            Zy)	XIQueryVersionopcode/   major_versionminor_versionr   sequence_number   N)r,   r-   r.   r   StructCard8OpcodeRequestLengthCard16_request	ReplyCodePadReplyLength_replyr/   r&   r$   r<   r<      s    ryy		"		/"		/"
H RYYq			#$		/"		/"r

Fr&   r<   c                 n    t        | j                  | j                  j                  t              dd      S )Nr   r   )r*   r=   r?   r@   )r<   r*   get_extension_majorextnamer"   s    r$   query_versionrQ      s.    ||//8	
 
r&   c                       e Zd Zd Zd Zy)Maskc                 f    t         j                  j                  | |t         j                  d       y )Nr   )pad)r   List__init__Card32r"   names     r$   rW   zMask.__init__   s!    
tRYYA6r&   c                    t        j                   t        j                  d         t        |t              rht
        j                  dk(  rfd}n9t
        j                  dk(  rj                  }nt        t
        j                        |r% ||dz         |dz	  }|rnj                  |       t        j                        t              d fS )NLlittlec                 *    j                  d|        y )Nr   )insert)valmask_seqs    r$   funzMask.pack_value.<locals>.fun   s    OOAs+r&   bigl    r   )arrayr   struct_to_array_codes
isinstancer   sys	byteorderappendAssertionErrorextendencode_arraylen)r"   r`   rb   ra   s      @r$   
pack_valuezMask.pack_value   s    ;;r77<=c=) }}(,%'oo$S]]33C*$%Ri  OOC x(#h-==r&   N)r,   r-   r.   rW   rn   r/   r&   r$   rS   rS      s    7>r&   rS   deviceidmaskc                      e Zd Z ej                   ej
                  d       ej                  d       ej                          ej                  d       ej                  dd       ej                  d       ej                  de            Zy)XISelectEventsr=   .   windowmasksr   N)r,   r-   r.   r   rC   rD   rE   rF   WindowLengthOfrJ   rV   	EventMaskrH   r/   r&   r$   rr   rr      sv    ryy		"		(GQq	#Hr&   rr   c                 n    t        | j                  | j                  j                  t              | |      S )a  
    select_events(event_masks)

    event_masks:
      Sequence of (deviceid, mask) pairs, where deviceid is a numerical device
      ID, or AllDevices or AllMasterDevices, and mask is either an unsigned
      integer or sequence of 32 bits unsigned values
    )r*   r=   rt   ru   )rr   r*   rN   rO   )r"   event_maskss     r$   select_eventsr{     s0     ||//8	 r&   typelengthsourceidc                   *    e Zd Zd Zd Zd Zd Zd Zy)
ButtonMaskc                      || _         || _        y r4   )_value_length)r"   r#   r}   s      r$   rW   zButtonMask.__init__  s    r&   c                     | j                   S r4   )r   rP   s    r$   __len__zButtonMask.__len__"  s    ||r&   c                 &    | j                   d|z  z  S )Nr   )r   )r"   keys     r$   __getitem__zButtonMask.__getitem__%  s    {{a3h''r&   c                     t        |       S r4   )reprrP   s    r$   __str__zButtonMask.__str__(  s    Dzr&   c                 P    dj                  | j                  | j                        S )Nz0b{value:0{width}b})r#   width)formatr   r   rP   s    r$   __repr__zButtonMask.__repr__+  s)    $++$++26,, , @ 	@r&   N)r,   r-   r.   rW   r   r   r   r   r/   r&   r$   r   r     s    (@r&   r   c                       e Zd ZdZd Zd Zy)ButtonStateNc                 D    t         j                  j                  | |       y r4   )r   
ValueFieldrW   rY   s     r$   rW   zButtonState.__init__3  s    
tT*r&   c                     d|dz   dz	  dz   dz	  z  }|d | }d}t        t        j                  dj                  |      |            D ]  }|dz  }||z  } ||d  }|dz  dk(  sJ t	        |dz	  |      |fS )	Nr
   r   r	   r   r   z={0:d}Br   r   )reversedstructunpackr   r   )	r"   datar*   r}   fmtmask_len	mask_data
mask_valuebytes	            r$   parse_binary_valuezButtonState.parse_binary_value6  s    6A:!+q0Q67(O	
V]]9+;+;H+EyQR 	D1J$J	 HIQ1$$$*/62D88r&   )r,   r-   r.   r9   rW   r   r/   r&   r$   r   r   /  s    J+
9r&   r   )statelabelsr   r   keycodesnumberlabelminmaxr#   
resolutionmodescroll_typeflags	incrementnum_touchesc                       e Zd ZdZd Zy)ClassInfoClassNc                     t        j                  d|d d       \  }}t        j                  |t              }|j                  ||      \  }}||dz  d  }||fS )Nz=HHr
   )r   r   INFO_CLASSESgetAnyInfoparse_binary)r"   r   r*   
class_typer}   class_struct
class_data_s           r$   r   zClassInfoClass.parse_binary  s`    #]]5$r(;
F#''
G<$11$@
AFQJK 4r&   )r,   r-   r.   r9   r   r/   r&   r$   r   r   |  s    J r&   r   use
attachmentclassesrZ   enabledc                      e Zd Z ej                   ej
                  d       ej                  d       ej                          ed       ej                  d            Z
 ej                   ej                          ej                  d       ej                  d       ej                          ej                  dd       ej                  d       ej                  de            Zy	)
XIQueryDevicer=   0   ro   r   r   rA   devices   N)r,   r-   r.   r   rC   rD   rE   rF   DEVICEIDrJ   rH   rI   rG   rK   rw   rV   
DeviceInforL   r/   r&   r$   r   r     s    ryy		"q	H RYYq			#$Iq!r
	:&
Fr&   r   c                 l    t        | j                  | j                  j                  t              |      S N)r*   r=   ro   )r   r*   rN   rO   r"   ro   s     r$   query_devicer     s+    ||//8
 
r&   c                      e Zd Z ej                   ej
                  d       ej                  d       ej                          ed       ej                  d            Z
 ej                   ej                          ej                  d       ej                  d       ej                          ej                  dd       ej                  d       ej                  dej                               Zy	)
XIListPropertiesr=   8   ro   r   r   rA   atomsr   N)r,   r-   r.   r   rC   rD   rE   rF   r   rJ   rH   rI   rG   rK   rw   rV   	Card32ObjrL   r/   r&   r$   r   r     s    ryy		"q	H RYYq			#$GQr
&Fr&   r   c                 l    t        | j                  | j                  j                  t              |      S r   )r   r*   rN   rO   r   s     r$   list_device_propertiesr     s+    ||//8 r&   c                      e Zd Z ej                   ej
                  d       ej                  d       ej                          ed       ej
                  d       ej                  d       ej                  d       ej                  d       ej                  d       ej                  d	      
      Z ej                   ej                          ej                  d       ej                  d
       ej                          ej                  d       ej                  d       ej                  dd       ej                   dd       ej                  d       ej"                  d      
      Zy)XIGetPropertyr=   ;   ro   deleter   propertyr|   offsetr}   rA   bytes_afterr#   r
   r   N)r,   r-   r.   r   rC   rD   rE   rF   r   rJ   rX   rH   rI   rG   rK   rw   FormatPropertyDatarL   r/   r&   r$   r   r     s2   ryy		"q			*		&		(		(H RYYq			#$		&		- GQ		'1r
 Fr&   r   c           
      v    t        | j                  | j                  j                  t              ||||||      S )N)r*   r=   ro   r   r|   r   r}   r   )r   r*   rN   rO   )r"   ro   r   r|   r   r}   r   s          r$   get_device_propertyr     s:    ||//8	 	r&   c                   p   e Zd Z ej                   ej
                  d       ej                  d       ej                          ed       ej
                  d       ej                  dd       ej                  d       ej                  d       ej                  dd	       ej                  d      
      Zy
)XIChangePropertyr=   9   ro   r   r#   r   r   r|   r
   N)r,   r-   r.   r   rC   rD   rE   rF   r   r   rX   rw   r   rH   r/   r&   r$   r   r     s    ryy		"		'1		*		&GQ Hr&   r   c           	      t    t        | j                  | j                  j                  t              |||||      S )N)r*   r=   ro   r   r|   r   r#   )r   r*   rN   rO   )r"   ro   r   r|   r   r#   s         r$   change_device_propertyr     s7    ||//8 r&   c            
           e Zd Z ej                   ej
                  d       ej                  d       ej                          ed       ej                  d       ej                  d            Zy)XIDeletePropertyr=   :   ro   r   r   N)r,   r-   r.   r   rC   rD   rE   rF   r   rJ   rX   rH   r/   r&   r$   r   r   	  s^    ryy		"q			*Hr&   r   c                 n    t        | j                  | j                  j                  t              ||      S )N)r*   r=   ro   r   )r   r*   rN   rO   )r"   ro   r   s      r$   delete_device_propertyr     s.    ||//8	 r&   c                      e Zd Z ej                   ej
                  d       ej                  d       ej                          ej                  d       ej                  d       ej                  dej                  f       ed       ej                  ddeef       ej                  d	deef       ej"                  d
       ej$                  d       ej&                  dd       ed            Z ej                   ej,                          ej$                  d       ej.                  d       ej0                          ej
                  d       ej$                  d            Zy)XIGrabDevicer=   3   grab_windowtimecursorro   	grab_moder   paired_device_modeowner_eventsrp   r   rA   status   N)r,   r-   r.   r   rC   rD   rE   rF   rv   rX   Cursorr   NONEr   SetGrabModeSyncGrabModeAsyncBoolrJ   rw   rS   rH   rI   rG   rK   rL   r/   r&   r$   r   r     s6   ryy		"		- 		&		(QVVJ'{Am<=#Q}(EFq	FAVH  RYYq			#$r

Fr&   r   c                     t        | j                  | j                  j                  t              || |t        j
                  ||||
      S )N)
r*   r=   ro   r   r   r   r   r   r   rp   )r   r*   rN   rO   r   r   )r"   ro   r   r   r   r   
event_masks          r$   grab_devicer   5  sD    ||//8vv-!
 
r&   c            
           e Zd Z ej                   ej
                  d       ej                  d       ej                          ej                  d       e	d       ej                  d            Zy)XIUngrabDevicer=   4   r   ro   r   N)r,   r-   r.   r   rC   rD   rE   rF   rX   r   rJ   rH   r/   r&   r$   r   r   C  s^    ryy		"		&q	Hr&   r   c                 n    t        | j                  | j                  j                  t              ||      S )N)r*   r=   r   ro   )r   r*   rN   rO   )r"   ro   r   s      r$   ungrab_devicer   M  s.    ||//8	 r&   c                      e Zd Z ej                   ej
                  d       ej                  d       ej                          ej                  d       ej                  d       ej                  dej                  f       ej                  d       ed       ej                  dd	       ej                  d
d	       ej                  ddeeeeef       ej                  ddeef       ej                  ddeef       ej.                  d       ej0                  d	       ed
       ej4                  dej                              Z ej                   ej8                          ej0                  d       ej:                  d       ej<                          ej                  dd	       ej0                  d       ej4                  dej                              Zy)XIPassiveGrabDevicer=   6   r   r   r   detailro   	modifiersr   rp   	grab_typer   r   r   r   rA   r   N) r,   r-   r.   r   rC   rD   rE   rF   rX   rv   r   r   r   r   rw   r   GrabtypeButtonGrabtypeKeycodeGrabtypeEnterGrabtypeFocusInGrabtypeTouchBeginr   r   r   rJ   rS   rV   rH   rI   rG   rK   rL   r/   r&   r$   r   r   U  s   ryy		"		&		- 		(QVVJ'		(K#FA{A /1C E 	F{Am<=#Q}(EFq	VRYY'%H* RYYq			#$K#r
RYY'
Fr&   r   c
                     t        | j                  | j                  j                  t              || |t        j
                  |||||||	      S )N)r*   r=   ro   r   r   r   r   r   r   r   r   rp   r   )r   r*   rN   rO   r   r   )
r"   ro   r   r   r   r   r   r   r   r   s
             r$   passive_grab_devicer  u  sO     ||//8vv-!
 
r&   c	                 2    t        | |||t        |||||
      S r4   )r  r  )	r"   ro   r   keycoder   r   r   r   r   s	            r$   grab_keycoder
    s+     tXtW.(*<+ZD Dr&   c                      e Zd Z ej                   ej
                  d       ej                  d       ej                          ej                  d       ej                  d       e
d       ej                  dd       ej                  dd	eeeeef       ej$                  d
       ej&                  dej                        
      Zy)XIPassiveUngrabDevicer=   7   r   r   ro   r   r   r   r   r	   N)r,   r-   r.   r   rC   rD   rE   rF   rv   rX   r   rw   r   r  r  r  r  r  rJ   rV   rH   r/   r&   r$   r  r    s    ryy		"		- 		(K#{A - 2 4 	5 	q	RYY'Hr&   r  c           	      t    t        | j                  | j                  j                  t              || |||      S )N)r*   r=   ro   r   r   r   r   )r  r*   rN   rO   )r"   ro   r   r   r   s        r$   passive_ungrab_devicer    s7     ||//8
 
r&   c                 (    t        | ||t        |      S r4   )r  r  )r"   ro   r	  r   s       r$   ungrab_keycoder    s     x!0)= =r&   r   info	base_modslatched_modslocked_modseffective_mods
base_grouplatched_grouplocked_groupeffective_groupr   rooteventchildroot_xroot_yevent_xevent_ybuttonsvalulators_lenmodsgroupsreasonr   whatc                 x   | j                  ddt               | j                  ddt               | j                  ddt               | j                  ddt               | j                  ddt
               | j                  ddt               | j                  dd	t               | j                  dd
t               | j                  ddt               | j                  ddt               | j                  ddt               t        | d      rt        t        t        t         t"        fD ]#  }| j%                  |j&                  |t(               % | j%                  |j&                  t*        t(               | j%                  |j&                  t,        t.               | j%                  |j&                  t0        t2               y y )Nr*   xinput_query_versionrt   xinput_select_eventsxinput_query_devicexinput_grab_devicexinput_ungrab_devicexinput_grab_keycodexinput_ungrab_keycodexinput_get_device_propertyxinput_list_device_propertiesxinput_change_device_propertyxinput_delete_device_propertyge_add_event_data)extension_add_methodrQ   r{   r   r   r   r
  r  r   r   r   r   hasattrButtonPressButtonReleaseKeyPress
KeyReleaseMotionr4  major_opcodeDeviceEventDataDeviceChangedHierarchyChangedHierarchyEventDataPropertyEventPropertyEventData)dispr  device_events      r$   initrE    sf   i)?Oh(>Ni)>Mh(<kJi)?Oh(=|Lh(?Pi)EGZ[i)HJ`ai)HJ`ai)HJ`at'((-:vV 	UL""4#4#4lOT	Ut00-Qt002BDVWt00-ARS )r&   )F)__doc__rg   rd   r   sixr   Xlib.protocolr   Xlibr   rO   PropertyDeletedPropertyCreatedPropertyModifiedNotifyNormal
NotifyGrabNotifyUngrabNotifyWhileGrabbedNotifyPassiveGrabNotifyPassiveUngrabNotifyAncestorNotifyVirtualNotifyInferiorNotifyNonlinearNotifyNonlinearVirtualNotifyPointerNotifyPointerRootNotifyDetailNoner  r  r  r  r  AnyModifier	AnyButton
AnyKeycodeAsyncDevice
SyncDeviceReplayDeviceAsyncPairedDevice	AsyncPairSyncPairSlaveSwitchDeviceChangeMasterAddedMasterRemoved
SlaveAddedSlaveRemovedSlaveAttachedSlaveDetachedDeviceEnabledDeviceDisabled	AddMasterRemoveMasterAttachSlaveDetachSlaveAttachToMasterFloatingModeRelativeModeAbsoluteMasterPointerMasterKeyboardSlavePointerSlaveKeyboardFloatingSlaveKeyClassButtonClassValuatorClassScrollClass
TouchClass	KeyRepeat
AllDevicesAllMasterDevicesr>  r9  r:  r7  r8  r;  EnterLeaveFocusInFocusOutr?  rA  RawKeyPressRawKeyReleaseRawButtonPressRawButtonRelease	RawMotionDeviceChangedMaskKeyPressMaskKeyReleaseMaskButtonPressMaskButtonReleaseMask
MotionMask	EnterMask	LeaveMaskFocusInMaskFocusOutMaskHierarchyChangedMaskPropertyEventMaskRawKeyPressMaskRawKeyReleaseMaskRawButtonPressMaskRawButtonReleaseMaskRawMotionMaskr   r   GrabModeTouchrG   r   DEVICErD   	DEVICEUSEPROPERTY_TYPE_FLOATInt32r   r   r1   ReplyRequestr<   rQ   rV   rS   rC   rw   rx   Requestrr   r{   rJ   r   objectr   r   rX   
ButtonInfoKeyInfoValuatorInfo
ScrollInfo	TouchInfor   r   	ClassInfor   String8r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r
  r  r  r  HierarchyInfor@  ModifierInfo	GroupInforv   Objectr=  DeviceChangedEventDatarB  rE  r/   r&   r$   <module>r     sH
  .        
       	

 	
	
	
 
	
		
  	-' Xz/#-' 6k
%Z	%Z	G|X-- -' #-' >) -- i99	HH	 -RXX -R]] 
R__ 
&
>277 >> BII
:BKKL		RZZ 	  "))BIIfBIIhBIIj
BFF1I	@ @&9"-- 9& RYYBIIfBIIhBIIjBKK#Q'BGGHbii 
 "))BIIfBIIhBIIjBKK
ABGGJ		" ryyBIIfBIIhBIIjBIIhBIIg
5M
5M
7OBIIlBHHV
BFF1I RYYBIIfBIIhBIIjBIIhBIIm
BFF1IBIIg
;	
 BIIBIIfBIIhBIIjBHHVBHH]	 g<		 V 	  	RYYZBIIeBIIlBKK	1BKKBGGI
BFF1IBJJvqBGGIy!


BOO 
&
r &BOO 6
rzz 	rzz 
2?? 
4
RZZ 
"// 
@
&DBJJ "	
= 		Z\fBGGI
BFF1IBIIg RYYZBIIfBIIgBKK
BFF2JBGGFM"  ryyBIIkBIInBIImBII	 BIIBHH\BHH_BHH^BHH		 "))ZBIIfBIIhBIIfBIIgBIIg
8
8
9
9BKK	1BIIZ
BFF1IBIIgBIIfl#BIIh	"	%* #ZBIIfBKK	1ZBHHX
BFF2JBGGIy!  BIIZBIIfBIIjBHHV
BFF2J Tr&   