
    i                        S SK r S SKrS SKrS SKJr  S SKJr  S SKJr   S SKJ	r	  SrS rSrSrS	rS
rS r " S S\5      r " S S\5      rS SKrS SKJr  \" SS5      rSrS rSS jrS rS rg! \
 a	    S SK	J	r	   NWf = f)    N)time)Thread)glob)QueuellHHI            c                     [         R                  R                  S5      (       d  [        S5      eSS Kn SS Kn[        SS5      nSnU R                  X#[        5        Sn[        S5       H  nU R                  X$U5        M     SnS	nS/S
-  S-  nUR                  UR                  " USUSSSS/UQ76 5        UR                  5         Sn	U R                  X)5        Sn
U$ )Nz/dev/uinputzNo uinput module found.r   wbidU@ieU@   r
   80sHHHHi64i64i64i64i@   r   s   Virtual Keyboardr   iU  iU  )ospathexistsIOErrorfcntlstructopenioctlEV_KEYrangewritepackflush)r   r   uinputUI_SET_EVBITUI_SET_KEYBITiBUS_USBuinput_user_devaxisUI_DEV_CREATEUI_DEV_DESTROYs              W/home/kali/github-search/github-env/lib/python3.13/site-packages/keyboard/_nixcommon.pymake_uinputr(      s    77>>-((/00 -&FL	KKf-M3ZF1-  G,O38a<D
LL_.A7AqRSUV^Y]^_
LLNM	KK&N M    c                   F    \ rS rSrS r\S 5       r\S 5       rS rS r	Sr
g)	EventDevice3   c                 ,    Xl         S U l        S U l        g N)r   _input_file_output_file)selfr   s     r'   __init__EventDevice.__init__4   s    	 r)   c                 P  ^  T R                   c8   [        T R                  S5      T l         U 4S jn[        R                  " U5        T R                   $ ! [         aH  nUR                  S:X  a.  [        SR                  T R                  5      5        [        5          S nANuS nAff = f)NrbzPermission deniedzAPermission denied ({}). You must be sudo to access global events.c                  B   >  T R                   R                    g !    g = fr.   )r/   closer1   s   r'   	try_close)EventDevice.input_file.<locals>.try_closeC   s!    $$**s    )
r/   r   r   r   strerrorprintformatexitatexitregister)r1   er9   s   `  r'   
input_fileEventDevice.input_file9   s    ##'		4#8 
 OOI&  ::!44]ddeienenopFs   A 
B%>B  B%c                     U R                   cE  [        U R                  S5      U l         [        R                  " U R                   R
                  5        U R                   $ )Nr   )r0   r   r   r?   r@   r7   r8   s    r'   output_fileEventDevice.output_fileK   sE    $ $TYY 5DOOD--334   r)   c                     U R                   R                  [        R                  " [        5      5      n[        R
                  " [        U5      u  p#pEnX#S-  -   XEX`R                  4$ )N    .A)rB   readr   calcsizeevent_bin_formatunpackr   )r1   datasecondsmicrosecondstypecodevalues          r'   
read_eventEventDevice.read_eventR   sR    ##FOO4D$EF39==AQSW3X0t5++T		IIr)   c                 N   [        [        5       S5      u  pE[        U5      n[        US-  5      n[        R                  " [
        XgXU5      n[        R                  " [
        Xg[        SS5      n	U R                  R                  X-   5        U R                  R                  5         g )Nr   rH   r   )
divmodnowintr   r   rK   EV_SYNrE   r   r   )
r1   rP   rQ   rR   integerfractionrN   rO   
data_event
sync_events
             r'   write_eventEventDevice.write_eventW   s    "35!,g,8c>*[[!17$V[\
 [[!17&RSUVW
z67 r)   )r/   r0   r   N)__name__
__module____qualname____firstlineno__r2   propertyrB   rE   rS   r^   __static_attributes__ r)   r'   r+   r+   3   s:    !
    " ! !J

!r)   r+   c                   *    \ rS rSrSS jrS rS rSrg)AggregatedEventDevicec   Nc                    ^  [        5       T l        UT l        U=(       d    T R                  S   T l        U 4S jnT R                   H.  n[	        X4/S9nUR                  S5        UR                  5         M0     g )Nr   c                 \   >  TR                   R                  U R                  5       5        M+  r.   )event_queueputrS   )devicer1   s    r'   start_reading5AggregatedEventDevice.__init__.<locals>.start_readingh   s(      $$V%6%6%89 r)   )targetargsT)r   rl   devicesoutputr   	setDaemonstart)r1   rs   rt   ro   rn   threads   `     r'   r2   AggregatedEventDevice.__init__d   s`     7/Q	: llF=x@FT"LLN #r)   c                 4    U R                   R                  SS9$ )NT)block)rl   getr8   s    r'   rS    AggregatedEventDevice.read_eventp   s    ##$#//r)   c                 <    U R                   R                  XU5        g r.   )rt   r^   )r1   rP   rQ   rR   s       r'   r^   !AggregatedEventDevice.write_events   s    E2r)   )rs   rl   rt   r.   )r`   ra   rb   rc   r2   rS   r^   re   rf   r)   r'   rh   rh   c   s    
03r)   rh   )
namedtupleDeviceDescriptionzevent_file is_mouse is_keyboardz)N: Name="([^"]+?)".+?H: Handlers=([^\n]+)c              #   |  #     [        S5       nUR                  5       nS S S 5        0 n[        R                  " [
        W[        R                  5       HB  u  pES[        R                  " SU5      R                  S5      -   nX;   d  M5  [        U5      v   MD     g ! , (       d  f       N= f! [         a     g f = f7f)Nz/proc/bus/input/devicesz/dev/input/eventz
event(\d+)r   )
r   rI   FileNotFoundErrorrefindalldevice_patternDOTALLsearchgroupr+   )	type_namefdescriptionrs   namehandlersr   s          r'   list_devices_from_procr   z   s     +,&&(K -
 G**^["))L!BIImX$F$L$LQ$OO d## M -, sP   B<B, BB, AB<	B<
B)%B, (B<)B, ,
B96B<8B99B<c              #   |   #    [        SR                  U(       a  SOSU 5      5       H  n[        U5      v   M     g 7f)Nz/dev/input/{}/*-event-{}zby-idzby-path)r   r=   r+   )name_suffixby_idr   s      r'   list_devices_from_by_idr      s3     /66%wYXcde$ fs   :<c                 z    [        5       n[        S5      nXl        Xl        [        [        U 5      5      nU(       a	  [        XRS9$ [        [        U 5      5      =(       d    [        [        U SS95      nU(       a	  [        XbS9$ U(       d   eU$ ! [         a   nSS KnUR                  SSS9  S n S nANS nAff = f)	Nzuinput Fake Devicer   zFailed to create a device file using `uinput` module. Sending of events may be limited or unavailable depending on plugged-in devices.r	   )
stacklevel)rt   F)r   )r(   r+   r/   r0   r   warningswarnlistr   rh   r   )r   r   fake_devicerA   r   devices_from_procdevices_from_by_ids          r'   aggregate_devicesr      s    
!"67"(#)  3I>?$%6KK 5i@AzTJabksxJyEz$%7LL ;)    _  lm  	ns   !B 
B:B55B:c                  L    [         R                  " 5       S:w  a  [        S5      eg )Nr   z.You must be root to use this library on linux.)r   geteuidImportErrorrf   r)   r'   ensure_rootr      s!    	zz|qJKK r)   )T)r   r   r?   r   rW   	threadingr   r   queuer   r   rK   rY   r   EV_RELEV_ABSEV_MSCr(   objectr+   rh   r   collectionsr   r   r   r   r   r   r   rf   r)   r'   <module>r      s     	       
				8.!& .!`3F 3& 
 "24UV A$ BLE  s   A/ /A>=A>