
    i                     2   S SK r S SKrS SKJr  S SKJr  SSKJrJrJ	r	  SSK
JrJr  SSKJrJrJr  S rS	 r S S
KJr  S SKJr  S SKr\" \5      r\" \5      r\" 5       rS rS rSqS rS r \" 5       r!S r"S r#S r$S r%S r&S r'\(S:X  a  S r)\"" \)5        gg)    N)time)
namedtuple   )KeyboardEventKEY_DOWNKEY_UP)all_modifiersnormalize_name)EV_KEYaggregate_devicesensure_rootc                 X   U R                  S5      n U R                  S5      nS H)  nU R                  U5      (       d  M  U [        U5      S n M+     U S:X  a  Sn OU S:X  a  Sn U R                  S5      (       a  S	U SS
 -   n U R                  S5      (       a  SU SS
 -   n [	        U 5      U4$ )z+Formats a dumpkeys format to our standard. +KP_)Meta_Control_dead_r   NRemoveDelete	Backspace_rzright _lzleft )lstrip
startswithlenendswithr
   )name	is_keypadmods      Y/home/kali/github-search/github-env/lib/python3.13/site-packages/keyboard/_nixkeyboard.pycleanup_keyr"      s    ;;sD&I4??3C	?D 5
 x		}}T$s)#}}Tcr" $**    c                     [        U 5      n U [        ;   a  U $ U S S [        ;   a  U S S $ [        SR                  U 5      5      e)NzUnknown modifier {})r
   r	   
ValueErrorformat)modifiers    r!   cleanup_modifierr)   #   sJ    h'H= }%}
*11(;
<<r#   )check_output)defaultdictc                     U[         U    ;  a  [         U    R                  U5        U [        U   ;  a  [        U   R                  U 5        g g N)to_nameappend	from_name)key_and_modifiersr   s     r!   register_keyr2   8   sH    7,--!"))$/	$/$01 0r#   c            	        ^ [         (       a  [        (       a  g [        5         SSSSS.n Sn[        SS/S	S
9n[        R
                  " X[        R                  5       H  u  p4[        U5      n[        UR                  5       R                  5       5       Hz  u  mn[        [        U4S jU R                  5        5       5      5      n[        U5      u  p[        XW4U5        U	(       d  MU  [         R#                  U5        [        XW4SU-   5        M|     M     S[         ;  d  [         S   S:X  a  [        SS5        S[         ;  d  [         S   S:X  a  [        SS5        S[         ;  a  [        SS5        Sn
[        SS/S	S
9n[        R
                  " X[        R                  5       Hd  u  p[        U5      u  p[        U5      u  pX:w  d  M&  [        U   R%                  [        U   5        [        U   R%                  [        U   5        Mf     g )Nr            )shiftzalt grctrlaltz^keycode\s+(\d+)\s+=(.*?)$dumpkeysz--keys-onlyT)universal_newlinesc              3   D   >#    U  H  u  pTU-  (       d  M  Uv   M     g 7fr-    ).0r(   bitis      r!   	<genexpr>build_tables.<locals>.<genexpr>M   s      $eCY-(]^ad]dXXCYs    	 zkeypad )}   r=   r9   windows)~   r=   )   r=   menuz^(\S+)\s+for (.+)$z--long-info)r.   r0   r   r*   refindall	MULTILINEint	enumeratestripsplittuplesorteditemsr"   r2   keypad_scan_codesaddextend)modifiers_bitskeycode_templatedumpstr_scan_code	str_names	scan_codestr_name	modifiersr   r   synonyms_templatesynonym_stroriginal_strsynonym_originalr@   s                   @r!   build_tablesrc   >   s   w99fM 	N 5]3MD$&JJ/?r||$T &	$Y__%6%<%<%>?KAxf$e>CWCWCY$eefI)(3OD)/6y!%%i0i3Y5EF @ %U 79#5#>Y	*79#5#>Y	* Y'-]3MD%'ZZ0A%V! -
!,/h&&y'9:g%%i&9: &Wr#   c                  F    [         (       a  g [        5         [        S5      q g )Nkbd)devicer   r   r=   r#   r!   build_devicerg   j   s    vvMu%Fr#   c                  ,    [        5         [        5         g r-   )rg   rc   r=   r#   r!   initri   p   s    NNr#   c                    [        5         [        5          [        R                  5       u  pp4nU[        :w  a  M%  UnU(       a  [
        O[        n[        [        [        5      5      n[        Xh4   =(       d    [        US4   =(       d    S/n	U	S   n
U
[        ;   a5  U[
        :X  a  [        R                  U
5        O[        R                  U
5        U[        ;   nU " [        XvXX[US95        M  )Nr=   unknownr   )
event_typerZ   r   r   rf   r   r\   )rg   rc   rf   
read_eventr   r   r   rO   rP   pressed_modifiersr.   r	   rS   discardrR   r   )callbackr   typecodevalue	device_idrZ   rl   pressed_modifiers_tuplenamesr   r   s               r!   listenrw   v   s    NN
-3->->-@*D6>	!&XF
"'/@(A"B<=h)UWAYh^g]hQx= X%!%%d+!))$/!22	*PThq  Sj  k  	l' r#   c                 `    [        5         [        R                  [        U [	        U5      5        g r-   )rg   rf   write_eventr   rK   )rZ   is_downs     r!   ry   ry      s    N
vy#g,7r#   c              #      #    [        5         [        U     H  nUv   M	     U R                  SS5      n[        U5      S:  a"  US   S;   a  [        US       H  nUv   M	     g g g 7f)N r   r   )leftright)rc   r0   rN   r   )r   entrypartss      r!   map_namer      se     N4 ! JJsAE
5zA~%(&77uQx(EK ) 8~s   A#A%c                     [        U S5        g )NTry   rZ   s    r!   pressr      s    	4 r#   c                     [        U S5        g )NFr   r   s    r!   releaser      s    	5!r#   c                 Z   [        U 5      n[        U5      [        S5      S  nS H$  n[        [	        U5      5      u  pE[        U5        M&     U H/  n[        [	        U5      5      u  pE[        U5        [        U5        M1     S H$  n[        [	        U5      5      u  pE[        U5        M&     g )N0x)r8   r7   u)ordhexr   nextr   r   r   )	character	codepointhexadecimalkeyrZ   ra   s         r!   type_unicoder      s    IIi.T,K%HSM*	i & HSM*	i	 
 &HSM*		 &r#   __main__c                     [        U 5        g r-   )print)es    r!   pr      s	    ar#   )*struct	tracebackr   nowcollectionsr   _keyboard_eventr   r   r   _canonical_namesr	   r
   
_nixcommonr   r   r   r"   r)   
subprocessr*   r+   rH   listr.   r0   setrR   r2   rc   rf   rg   ri   rn   rw   ry   r   r   r   r   __name__r   r=   r#   r!   <module>r      s       " < < ; > >
+,=
 $ # 	
d
	E 2);V 
& E l28!"" z
1I r#   