
    i'                         S SK r S SKrSSKJrJrJrJrJrJrJ	r	J
r
JrJrJr  S SKJr   " S S\5      r " S S\ R$                  5      r\S	:X  a  \ R*                  " 5         gg)
    N   )	MoveEventButtonEvent
WheelEventLEFTRIGHTMIDDLEXX2UPDOWNDOUBLE)mousec                   D    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
rg)FakeOsMouse   c                 >    S U l         SU l        S U l        S U l        g )Nr   r   c                      g N r       Y/home/kali/github-search/github-env/lib/python3.13/site-packages/keyboard/_mouse_tests.py<lambda>&FakeOsMouse.__init__.<locals>.<lambda>   s    Dr   )appendpositionqueueinitselfs    r   __init__FakeOsMouse.__init__	   s    
 	r   c                     SU l         Xl        g NT)	listeningr   )r!   r   s     r   listenFakeOsMouse.listen   s    
r   c                 2    U R                  [        U45        g r   )r   r   r!   buttons     r   pressFakeOsMouse.press   s    T6N#r   c                 2    U R                  [        U45        g r   )r   r   r*   s     r   releaseFakeOsMouse.release   s    RL!r   c                     U R                   $ r   r   r    s    r   get_positionFakeOsMouse.get_position   s    }}r   c                 <    U R                  SX445        X4U l        g )Nmove)r   r   r!   xys      r   move_toFakeOsMouse.move_to   s    VaV$%r   c                 *    U R                  SU45        g )Nwheel)r   r!   deltas     r   r=   FakeOsMouse.wheel    s    We$%r   c                 V    U R                   S   U-   U R                   S   U-   4U l         g )Nr   r   r2   r7   s      r   move_relativeFakeOsMouse.move_relative#   s*    q)A-t}}Q/?!/CDr   )r   r   r&   r   r   N)__name__
__module____qualname____firstlineno__r"   r'   r,   r/   r3   r:   r=   rB   __static_attributes__r   r   r   r   r      s+    !$"&Er   r   c                       \ rS rSr\S 5       rS rS rS rS r	\
4S jr\
4S jr\
4S	 jr\
4S
 jrSS jrSS jrS rS rS rS rS rS rS rS rS rS rSrg)	TestMouse&   c                      [        5       [        l        [        R                  R	                  5         [        R                  R
                  (       d   eg r   )r   r   	_os_mouse	_listenerstart_if_necessaryr&   r   r   r   
setUpClassTestMouse.setUpClass'   s.    $**,((((r   c                     / U l         [        R                  R                  5         U R                   R                  [        R
                  l        g r   )eventsr   _pressed_eventsclearr   rM   r    s    r   setUpTestMouse.setUp-   s1    ##%!%!3!3r   c                 N    [         R                  " 5         U R                  5         g r   )r   
unhook_allwait_for_events_queuer    s    r   tearDownTestMouse.tearDown2   s    ""$r   c                 T    [         R                  R                  R                  5         g r   )r   rN   r   joinr    s    r   rZ   TestMouse.wait_for_events_queue7   s    ""$r   c                 n    U R                  5         [        U R                  5      nU R                  S S 2	 U$ r   )rZ   listrS   r!   rS   s     r   flush_eventsTestMouse.flush_events:   s,    ""$dkk"KKNr   c                     [         R                  R                  R                  [	        [
        U[        R                  " 5       5      5        U R                  5         g r   )r   rM   r   putr   r   timerZ   r*   s     r   r,   TestMouse.pressA   s5    !!+dFDIIK"HI""$r   c                     [         R                  R                  R                  [	        [
        U[        R                  " 5       5      5        U R                  5         g r   )r   rM   r   rf   r   r   rg   rZ   r*   s     r   r/   TestMouse.releaseE   s5    !!+b&$))+"FG""$r   c                     [         R                  R                  R                  [	        [
        U[        R                  " 5       5      5        U R                  5         g r   )r   rM   r   rf   r   r   rg   rZ   r*   s     r   double_clickTestMouse.double_clickI   s5    !!+ffdiik"JK""$r   c                 H    U R                  U5        U R                  U5        g r   )r,   r/   r*   s     r   clickTestMouse.clickM   s    

6Vr   c                     [         R                  R                  R                  [	        U[
        R
                  " 5       5      5        U R                  5         g r   )r   rM   r   rf   r   rg   rZ   r>   s     r   r=   TestMouse.wheelQ   s3    !!*UDIIK"@A""$r   c                     [         R                  R                  R                  [	        X[
        R
                  " 5       5      5        U R                  5         g r   )r   rM   r   rf   r   rg   rZ   r7   s      r   r6   TestMouse.moveU   s3    !!)A$))+">?""$r   c                    / nU R                  5         [        R                  " UR                  5        U R                  5         [        R                  " UR                  5        U R                  5         U R                  [        U5      S5        g )Nr   )r,   r   hookr   unhookassertEquallenrb   s     r   	test_hookTestMouse.test_hookY   sV    



6==!

V]]#

Va(r   c                    U R                  [        R                  " 5       5        U R                  5         U R	                  [        R                  " 5       5        U R                  5         U R                  [        5        U R                  [        R                  " 5       5        U R	                  [        R                  " [        5      5        U R                  [        5        U R	                  [        R                  " [        5      5        U R                  [        5        U R                  [        5        U R                  [        R                  " [        5      5        g r   )assertFalser   
is_pressedr,   
assertTruer/   r   r    s    r   test_is_pressedTestMouse.test_is_pressedb   s    ))+,

((*+

2))+,((,-

2((,-RR))"-.r   c                    [         R                  " 5         U R                  U R                  5       [        [
        4/5        [         R                  " 5         U R                  U R                  5       [        [
        4/5        [         R                  " 5         U R                  U R                  5       [        [
        4[        [
        4/5        [         R                  " 5         U R                  U R                  5       [        [
        4[        [
        4[        [
        4[        [
        4/5        [         R                  " 5         U R                  U R                  5       [        [        4[        [        4/5        [         R                  " [        5        U R                  U R                  5       [        [        4[        [        4/5        [         R                  " [        5        U R                  U R                  5       [        [        4/5        g r   )r   r,   rx   rc   r   r   r/   r   ro   rl   right_clickr   r   r    s    r   test_buttonsTestMouse.test_buttonsq   sQ   **,d|n=**,Dzl;**,d|b$Z.HI**,d|b$Z$PTXZ\`Wa.bc**,e}r5k.JKE**,e}r5k.JKB**,bzl;r   c                     U R                  [        R                  " 5       [        R                  R                  5       5        g r   )rx   r   r3   rM   r    s    r   test_positionTestMouse.test_position   s(    ++-u/K/K/MNr   c                 p   [         R                  " SS5        U R                  [         R                  R	                  5       S5        [         R                  " SS5        U R                  [         R                  R	                  5       S5        [         R                  " SSS5        U R                  [         R                  R	                  5       S	5        [         R                  " SS5        [         R                  " SS
SSS9  U R                  [         R                  R	                  5       S5        [         R                  " SSSSS9  U R                  [         R                  R	                  5       S5        [         R                  " SSSSS9  U R                  [         R                  R	                  5       S5        g )Nr   r   d     )r   r   r      F)e   i    Tg{Gz?)duration)r   r   )   r   )r   r6   rx   rM   r3   r    s    r   	test_moveTestMouse.test_move   s    

1a557@

3557D

1a557D

1a

3TD1557D

3540557D

1a.557Dr   c                 z  ^  ST l         U 4S jnU" U40 UD6nU Ht  u  pgU[        :X  a  T R                  U5        M"  U[        :X  a  T R	                  U5        M?  U[
        :X  a  T R                  U5        M\  US:X  d  Md  T R                  5         Mv     [        R                  R                  U5        T R                   $ )NFc                     > ST l         g r%   )	triggeredr    s   r   callback$TestMouse.triggers.<locals>.callback   s
    !DNr   WHEEL)r   r   r,   r   r/   r   rl   r=   r   rN   remove_handler)r!   fnrS   kwargsr   handler
event_typeargs   `       r   triggersTestMouse.triggers   s    	"X((%OJT!

3r!S!v%!!#&w&

  & 	&&w/~~r   c           	      
   U R                  U R                  [        R                  [        [
        4/5      5        U R                  U R                  [        R                  [        [        4/5      5        U R                  U R                  [        R                  [        [        4/5      5        U R                  U R                  [        R                  S/5      5        U R                  U R                  [        R                  [        [        4/[        S95        U R                  U R                  [        R                  [        [        4/[        S95        U R                  U R                  [        R                  [        [        4/[        S95        U R                  U R                  [        R                  [        [        4/[        [        S95        U R                  U R                  [        R                  [        [        4/[        [        S95        U R                  U R                  [        R                  [        [        4/[        [
        /[        [        /S95        U R                  U R                  [        R                  [        [
        4/[        [
        /[        [        /S95        U R                  U R                  [        R                  [        [        4/[        [
        /[        [        /S95        g )N)r    )buttons)r   types)r   r   r   	on_buttonr   r   r   r
   r}   r	   r   r    s    r   test_on_buttonTestMouse.test_on_button   s   eoot~FGeoouGHeooq	{CDuHIu$VTUeoov7GQWXYeoov7GQWXYu$8HRX`bcdeooV~v]_`aeooV~PVX\~fhjneopqeoot~PVX\~fhjneopqu"a	FTX>bdfjaklmr   c                    U R                  U R                  [        R                  [        [
        4/5      5        U R                  U R                  [        R                  [        [        4/5      5        U R                  U R                  [        R                  [        [
        4/5      5        U R                  U R                  [        R                  [        [        4/5      5        U R                  U R                  [        R                  [        [
        4/5      5        U R                  U R                  [        R                  [        [        4/5      5        U R                  U R                  [        R                  [        [        4/5      5        U R                  U R                  [        R                  [        [        4/5      5        U R                  U R                  [        R                  [        [        4/5      5        g r   )r   r   r   on_clickr   r   r}   r   r   on_double_clickr   on_right_clickon_middle_clickr	   r    s    r   test_onsTestMouse.test_ons   sA   ennDzlCDu~~U}EFu~~t~FGu~~uGHe&;&;vtn=MNOu'<'<>OPQu'<'<e}oNOe&:&:b%[MJKe&;&;r6l^LMr   c                    ^ SSK JnJn  U" 5       mTR                  5         U4S jnU" US9R	                  5         U R                  5         TR                  5         g )Nr   ThreadLockc                  P   > [         R                  " 5         T R                  5         g r   )r   waitr/   )locks   r   tTestMouse.test_wait.<locals>.t   s    JJLLLNr   target)	threadingr   r   acquirestartr,   )r!   r   r   r   r   s       @r   	test_waitTestMouse.test_wait   s@    *v	 	a 

r   c                 
  ^ ^ SSK JnJn  U" 5       mTR                  5         UU 4S jnU" US9R	                  5         T R                  5         T R                  S5        T R                  SS5        T R                  [        5        TR                  5         T R                  [        T R                  5      S5        T R                  T R                  S   R                  S S9[        [        [         S 5      5        T R                  T R                  S	   R                  S S9[        ["        [         S 5      5        T R                  T R                  S
   R                  S S9[%        SS 5      5        T R                  T R                  S   R                  S S9['        SSS 5      5        T R                  T R                  S   R                  S S9[        [        [        S 5      5        [(        R*                  " T R                  SS9  T R-                  5       nT R                  [        U5      S5        T R                  US   [        [         45        T R                  US	   ["        [         45        T R                  US
   S5        T R                  US   S5        T R                  US   [        [        45        [(        R*                  " T R                  5        T R-                  5       nT R                  [        U5      S5        T R                  US   [        [         45        T R                  US	   ["        [         45        T R                  US
   S5        T R                  US   S5        T R                  US   [        [        45        [(        R*                  " T R                  SS9  T R-                  5       nT R                  [        U5      S
5        T R                  US   S5        T R                  US	   S5        [(        R*                  " T R                  SS9  T R-                  5       nT R                  [        U5      S5        T R                  US   [        [         45        T R                  US	   ["        [         45        T R                  US
   S5        T R                  US   [        [        45        [(        R*                  " T R                  SS9  T R-                  5       nT R                  [        U5      S5        T R                  US   [        [         45        T R                  US	   ["        [         45        T R                  US
   S5        T R                  US   [        [        45        g )Nr   r   c                  d   > [         R                  " [        5      Tl        T R	                  5         g r   )r   recordr   recordedr/   )r   r!   s   r   r   %TestMouse.test_record_play.<locals>.t   s    !LL/DMLLNr   r      r   2   )rg   r   r         )speed_factor)r=   r   )r6   )r   r   F)include_clicks)include_moves)include_wheel)r   r   r   r   r   ro   r=   r6   r,   r   rx   ry   r   _replacer   r   r   r   r   r   r   playrc   )r!   r   r   r   rS   r   s   `    @r   test_record_playTestMouse.test_record_play   s8   *v	 	a 



1		#r

5T]]+Q/q)222={4QUW[?\]q)222={2tUY?Z[q)222=z!T?RSq)222=ybRV?WXq)222={4QVX\?]^

4==q1""$Va(T4L1RJ/L1$78T5M2

4==!""$Va(T4L1RJ/L1$78T5M2

4==7""$Va(L1$78

4==6""$Va(T4L1RJ/L1T5M2

4==6""$Va(T4L1RJ/$78T5M2r   )rS   r   r   N)r   r   )rD   rE   rF   rG   staticmethodrP   rV   r[   rZ   rc   r   r,   r/   rl   ro   r=   r6   rz   r   r   r   r   r   r   r   r   r   rH   r   r   r   rJ   rJ   &   s    ) )
4
%
%   % " % #' %   %%)/< OE &n"N
;3r   rJ   __main__)unittestrg   _mouse_eventr   r   r   r   r   r	   r
   r   r   r   r   keyboardr   objectr   TestCaserJ   rD   mainr   r   r   <module>r      sU      j j j j E& E<f3!! f3P zMMO r   