o
    'ht=                     @   s  d dl Z d dlZzd dlZW n   J dd dlZd dlZd dlmZmZmZ ejdkr1e	d	 e
dd ejD Zei d	d d
dddddddddddddddddddddd d!d"d#d$d%d&d'd(d)i d*d+d,d+d-d.d/d.d0d1d2d1d3d4d5d4d6d7d8d7d9d:d;d:d<d=d>d=d?d@dAd@dBdCi dDdCdEdFdGdFdHdIdJdIdKdLdMdLdNdOdPdOdQdRdSdTdUdVdWdVdXdYdZd[d\d]d^d_i d`dadbdadcdddedfdgdfdhdidjdidkdldmdldndodpdodqdrdsdtdudvdwdvdxdydzdyi d{d|d}d|d~dddddddddddddddddddddddddddddi ddddddddddddddddddddddddddddddddddi ddddddddddddddddddēddƓddȓddʓdd̓ddΓddГddГddӓddddddddddddddd 	 dD ]Zee ee < qi dd dddddddddddddddddddddddddd!dd#dd%dd'd)d+d.d1d4d7d:dZdd Zdd Zdd Zdd Zdd Zdd  ZdddZ	 dddZdddZdd Zd	d
 Zdd Zdadd ZdddZdd Z dd Z!dd Z"dS (      NFzfYou must first install pyobjc-core and pyobjc: https://pyautogui.readthedocs.io/en/latest/install.html)LEFTMIDDLERIGHTdarwinzAThe pyautogui_osx module should only be loaded on an OS X system.c                 C   s   g | ]}|d fqS N ).0keyr   r   o/Users/merlin/projects/employee-monitoring-system/venv/lib/python3.10/site-packages/pyautogui/_pyautogui_osx.py
<listcomp>   s    r   as   d   f   h   g   z   x   c   v	   b   q   w   e   r   y   t   1   !2   @3   #4   $6   ^5   %=   +9   (7   &-   _8   *0   )]   }o   u    [!   {i"   p#   l%   j&   ''   "k(   ;)   :\*   |,+   </,   ?n-   m.   ./   >`2   ~ 1   space$   
Zenterreturn	0   tabZ	backspace3   esc5   escapecommand7   shift8   Z	shiftleftZcapslock9   option:   Z
optionleftZaltZaltleftZctrl;   ZctrlleftZ
shiftright<   Zoptionright=   Z	ctrlright>   fn?   Zf17@   ZvolumeupH   Z
volumedownI   Z
volumemuteJ   Zf18O   Zf19P   Zf20Z   Zf5`   Zf6a   Zf7b   Zf3c   Zf8d   Zf9e   Zf11g   Zf13i   Zf16j   Zf14k   Zf10m   Zf12o   Zf15q   helpr   homes   Zpageupt   Zpgupdelu   v   w   x   y   z   {   |   }   ~   ]   f   h   )deleteZf4endf2ZpagedownZpgdnf1leftrightdownupyenZeisuZkanaabcdefghijklmnopqrstuvwxyzZKEYTYPE_SOUND_UPZKEYTYPE_SOUND_DOWNZKEYTYPE_BRIGHTNESS_UPZKEYTYPE_BRIGHTNESS_DOWNZKEYTYPE_CAPS_LOCKZKEYTYPE_HELPZ	POWER_KEYZKEYTYPE_MUTEZUP_ARROW_KEYZDOWN_ARROW_KEYZKEYTYPE_NUM_LOCK
   ZKEYTYPE_CONTRAST_UPZKEYTYPE_CONTRAST_DOWNZKEYTYPE_LAUNCH_PANELZKEYTYPE_EJECTZKEYTYPE_VIDMIRRORZKEYTYPE_PLAY)ZKEYTYPE_NEXTZKEYTYPE_PREVIOUSZKEYTYPE_FASTZKEYTYPE_REWINDZKEYTYPE_ILLUMINATION_UPZKEYTYPE_ILLUMINATION_DOWNZKEYTYPE_ILLUMINATION_TOGGLEc                 C   <   | t vs
t |  d u rd S | tv rt| d d S t| d d S )Nr   keyboardMappingspecial_key_translate_table_specialKeyEvent_normalKeyEventr	   r   r   r
   _keyDown   
   r   c                 C   r   )Nr   r   r   r   r   r
   _keyUp   r   r   c                 C   s   |dv sJ dzAt | r-t|   }td td |dk}ttj| t	t j
 nt|  }td ||dk}ttj| t	t j
 W d S  tyV   td|  w )Nr   r   &upDown argument must be 'up' or 'down'r   r   zKey %s not implemented.)	pyautoguiZisShiftCharacterr   lowerQuartzZCGEventCreateKeyboardEventCGEventPostkCGHIDEventTaptimesleepDARWIN_CATCH_UP_TIMEKeyErrorRuntimeError)r	   upDownkey_codeeventr   r   r
   r      s    
r   c                 C   sn   |dv sJ dt |  }tjtjd|dkrdnddddd|d	> |dkr&d
ndd> B d	}td|  dS )z} Helper method for special keys.

    Source: http://stackoverflow.com/questions/11045814/emulate-media-key-press-on-mac
    r   r   )r   r   r   i 
  i   r   r   r*   r   r    N)r   AppKitNSEventZ]otherEventWithType_location_modifierFlags_timestamp_windowNumber_context_subtype_data1_data2_r   ZNSSystemDefinedr   ZCGEvent)r	   r   r   evr   r   r
   r     s   r   c                  C   s(   t j } t| jttd| j fS Nr   )r   r   ZmouseLocationintr   r   CGDisplayPixelsHighr)   )locr   r   r
   	_position'  s   
r   c                   C   s   t t  t t  fS r   )r   ZCGDisplayPixelsWideZCGMainDisplayIDr   r   r   r   r
   _size,  s   r   c                 C   s   t | || d S r   )_vscroll)clicksr   r)   r   r   r
   _scroll1  s   r   c                 C   s   t || t| } tt| d D ]}td tjd| dkrdnd}ttj| qtd tjd| dkr8| d nd|  d  }ttj| d S )Nr   r   r   r   	_moveTor   rangeabsr   ZCGEventCreateScrollWheelEventZkCGScrollEventUnitLiner   r   r   r   r)   rJ   ZscrollWheelEventr   r   r
   r   ;  s"   
r   c              	   C   s   t || t| } tt| d D ]}td tjdd| dkr dnd}ttj| qtd tjdd| dkr:| d nd|  d }ttj| d S )Nr   r   r   r   r   r   r   r   r   r
   _hscrollN  s&   
r   c                 C   b   |t krttj| |tj d S |tkrttj| |tj d S |tkr-ttj	| |tj
 d S J dNFz2button argument not in ('left', 'middle', 'right'))r   _sendMouseEventr   kCGEventLeftMouseDownkCGMouseButtonLeftr   kCGEventOtherMouseDownkCGMouseButtonCenterr   kCGEventRightMouseDownkCGMouseButtonRightr   r)   buttonr   r   r
   
_mouseDownc     r  c                 C   r   r   )r   r   r   kCGEventLeftMouseUpr   r   kCGEventOtherMouseUpr   r   kCGEventRightMouseUpr  r  r   r   r
   _mouseUpn  r  r	  c                 C   s   |t krttj| |tj ttj| |tj d S |tkr0ttj| |tj ttj	| |tj d S |t
krHttj| |tj ttj| |tj d S J dr   )r   r   r   r   r   r  r   r   r   r  r   r   r  r  r  r   r   r
   _clicky  s   r
  c                   C   s   t d u rda t S )NF)_mouse_is_swapped_settingr   r   r   r
   _mouse_is_swapped  s   r          c           	      C   s   d }d }d }|t krtj}tj}tj}n |tkr"tj}tj}tj}n|t	kr0tj
}tj}tj}nJ dt|D ]}t| || t| q8d S r   )r   r   r   r   r  r   r   r   r  r   r  r   r  r   r
  r   r   )	r   r)   r  numintervalZbtnr   r   r[   r   r   r
   _multiClick  s(   r  c                 C   s&   t d | ||f|}t t j| d S r   )r   ZCGEventCreateMouseEventr   r   )r   r   r)   r  Z
mouseEventr   r   r
   r     s   r   c                 C   sl   |t krttj| |tj n |tkrttj| |tj n|tkr*ttj	| |tj
 nJ dttj d S r   )r   r   r   ZkCGEventLeftMouseDraggedr   r   ZkCGEventOtherMouseDraggedr   r   ZkCGEventRightMouseDraggedr  r   r   r   r   r  r   r   r
   _dragTo  s   r  c                 C   s    t tj| |d ttj d S r   )r   r   ZkCGEventMouseMovedr   r   r   r   )r   r)   r   r   r
   r     s   r   )NN)r  )#r   sysr   r   r   r   r   r   platform	ExceptiondictZ	KEY_NAMESr   updater   upperr   r   r   r   r   r   r   r   r   r   r  r	  r
  r  r  r  r   r  r   r   r   r   r
   <module>   s   
	
 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwx 
 	
	


