
    i-                     p   d Z ddlZddlmZmZmZmZmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZmZmZ ddlmZmZ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& e'ed      Z( G d dejR                        Z) G d dejT                        Z+ G d dejX                        Z, G d deejZ                        Z-y)z*
The keyboard implementation for *macOS*.
    N)CGEventCreateKeyboardEventCGEventGetFlagsCGEventGetIntegerValueFieldCGEventGetTypeCGEventKeyboardGetUnicodeStringCGEventKeyboardSetUnicodeStringCGEventMaskBitCGEventPostCGEventSetFlagskCGEventFlagMaskAlternatekCGEventFlagMaskCommandkCGEventFlagMaskControlkCGEventFlagMaskShiftkCGEventFlagsChangedkCGEventKeyDownkCGEventKeyUpkCGHIDEventTapkCGKeyboardEventKeycodeNSEventNSSystemDefined)get_unicode_to_keycode_mapkeycode_contextListenerMixin)SYMBOLS   )_base                  ]otherEventWithType_location_modifierFlags_timestamp_windowNumber_context_subtype_data1_data2_c                   *    e Zd ZdZdZed        Zd Zy)KeyCode)	_is_mediaNc                 ,     | j                   |fddi|S )zpCreates a media key from a key code.

        :param int vk: The key code.

        :return: a key code
        r&   T)from_vk)clsvkkwargss      a/home/obispo/Crisostomo_bridge/mision_env/lib/python3.12/site-packages/pynput/keyboard/_darwin.py_from_mediazKeyCode._from_media`   s     s{{28888    c                 t   | j                   xs |j                  | j                        }| j                  rAt	        t
        d|rdnddddd| j                   dz  |rdnddz  z  d		      j                         }nt        d
|dn||      }t        |dt        j                  |v rt        ndz  t        j                  |v rt        ndz  t        j                  |v rt        ndz  t        j                   |v rt"        ndz         |6| j                  *t%        |t'        | j                        | j                         |S )a  This key as a *Quartz* event.

        :param set modifiers: The currently active modifiers.

        :param mapping: The current keyboard mapping.

        :param bool is_press: Whether to generate a press event.

        :return: a *Quartz* event
        )r   r   i 
  i   r   r"   r   
      N)r*   getcharr&   otherEventWithTyper   CGEventr   r   Keyaltr   cmdr   ctrlr   shiftr   r   len)self	modifiersmapping
is_pressedr*   results         r,   _eventzKeyCode._eventj   s6    WW.DII.>>'#B:C31#DE	 GI  02:a2z;F 	''Y& ),-/
 ''Y& ',-/ ((i' '-.0 ))y( %./1	2 :$))/+DII		3 r.   )__name__
__module____qualname___PLATFORM_EXTENSIONSr&   classmethodr-   rB    r.   r,   r%   r%   W   s(     I9 9.r.   r%   c                   ^   e Zd Zej	                  d      Zej	                  d      Zej	                  d      Zej	                  d      Zej	                  d      Z	ej	                  d      Z
ej	                  d      Zej	                  d      Zej	                  d      Zej	                  d      Zej	                  d      Zej	                  d      Zej	                  d	      Zej	                  d
      Zej	                  d      Zej	                  d      Zej	                  d      Zej	                  d      Zej	                  d      Zej	                  d      Zej	                  d      Zej	                  d      Zej	                  d      Zej	                  d      Zej	                  d      Zej	                  d      Zej	                  d      Zej	                  d      Z ej	                  d      Z!ej	                  d      Z"ej	                  d      Z#ej	                  d      Z$ej	                  d      Z%ej	                  d      Z&ej	                  d      Z'ej	                  d       Z(ej	                  d!      Z)ej	                  d"      Z*ej	                  d#      Z+ej	                  d$      Z,ej	                  d%      Z-ej	                  d&      Z.ej	                  d'      Z/ej	                  d'      Z0ej	                  d(      Z1ej	                  d)d*+      Z2ej	                  d,      Z3ej	                  d-      Z4ejk                  e6      Z7ejk                  e8      Z9ejk                  e:      Z;ejk                  e<      Z=ejk                  e>      Z?ejk                  e@      ZAejk                  eB      ZCy.)/r7   :   =   3   9   7   6   ;   >   u   }   w   $   5   z   x   c   v   `   a   b   d   e   m   g   o   i   k   q   j   @   O   P   Z   s   {   y   t   |   8   <   1    )r4   0   ~   N)DrC   rD   rE   r%   r(   r8   alt_lalt_ralt_gr	backspace	caps_lockr9   cmd_lcmd_rr:   ctrl_lctrl_rdeletedownendenterescf1f2f3f4f5f6f7f8f9f10f11f12f13f14f15f16f17f18f19f20homeleft	page_downpage_uprightr;   shift_lshift_rspacetabupr-   NX_KEYTYPE_PLAYmedia_play_pauseNX_KEYTYPE_MUTEmedia_volume_muteNX_KEYTYPE_SOUND_DOWNmedia_volume_downNX_KEYTYPE_SOUND_UPmedia_volume_upNX_KEYTYPE_PREVIOUSmedia_previousNX_KEYTYPE_NEXT
media_nextNX_KEYTYPE_EJECTmedia_ejectrH   r.   r,   r7   r7      s   
//$
COOD!EOOD!E__T"F%I%I
//$
COOD!EOOD!E??4 D__T"F__T"F__T"F??4 D
//$
COOD!E
//$
C		B		B		B		B		B		B		B		B		B
//$
C
//$
C
//$
C
//$
C
//$
C
//$
C
//$
C
//$
C
//$
C
//$
C
//$
C??4 D??4 D%Iood#GOOD!EOOD!Eood#Good#GOODsO+E
//$
C		B**?;++O<++,AB))*=>O(()<=N$$_5J%%&67Kr.   r7   c                   ,     e Zd ZeZeZ fdZd Z xZ	S )
Controllerc                 H    t         t        |           t               | _        y N)superr   __init__r   _mapping)r=   	__class__s    r,   r   zController.__init__   s    j$(*24r.   c           	          | j                   5 }t        t        |d t        D        vr|n|j                  j                  || j                  |             d d d        y # 1 sw Y   y xY w)Nc              3       K   | ]  }|  y wr   rH   ).0ks     r,   	<genexpr>z%Controller._handle.<locals>.<genexpr>   s     #3!A#3s   )r>   r
   r   r7   valuerB   r   )r=   keyis_pressr>   s       r,   _handlezController._handle   sW    ^^ 	9y#3s#33JJt}}h89	9 	9 	9s   AAA&)
rC   rD   rE   r%   _KeyCoder7   _Keyr   r   __classcell__)r   s   @r,   r   r      s    HD59r.   r   c                   $   e Zd Z ee       ee      z   ee      z   ee      z  Ze	D  ci c]/  }|j                  j                  |j                  j                  f|1 c}} Ze	j                  ee	j                   ee	j"                  ee	j$                  ee	j(                  ee	j*                  ee	j,                  ee	j0                  ee	j2                  ee	j4                  ee	j8                  ee	j:                  eiZfdZfdZ d Z!d Z"xZ#S c c}} w )Listenerc                     t        t        | 
  |i | d| _        d | _        | j
                  j                  dd       | _        y )Nr   	intercept)r   r   r   _flags_context_optionsr3   
_intercept)r=   argsr+   r   s      r,   r   zListener.__init__  sA    h&77--++r.   c                     t               5 }|| _        	 t        t        |           d | _        	 d d d        y # d | _        w xY w# 1 sw Y   y xY wr   )r   r   r   r   _run)r=   contextr   s     r,   r   zListener._run  sP     	%'#DM%h*, $	% 	%
 !%	% 	%s   A8A	AAAc                    	 | j                  |      }	 |t        k(  r| j                  ||       n`|t        k(  r| j                  ||       nC|t        j                  k(  r&| j                  ||       | j                  ||       n
|t        k(  rt        j                  |      }|j                         t        k(  r|j                         dz  dz	  df}|| j                  v r|j                         dz  }|dz  dz	  dk(  }	|	r| j                  | j                  |          np| j                  | j                  |          nQt        |      }|| j                   j#                  |d      z  }	|	r| j                  ||       n| j                  ||       t        |      | _        y # t        $ r d }Y w xY w# t        |      | _        w xY w)	Nl      r   Ti  i   r"   r0   r   )_event_to_key
IndexErrorr   on_pressr   
on_releaser7   rz   r   r   eventWithCGEvent_subtype#kSystemDefinedEventMediaKeysSubtypedata1_SPECIAL_KEYSr   _MODIFIER_FLAGSr3   r   )
r=   _proxy
event_typeevent_refconinjectedr   	sys_eventflagsr   s
             r,   _handle_messagezListener._handle_message  s   	$$U+C+	1_,c8,},X.% c8,X..#55e<	$$&*MM &OO-
:rA4HCd000 ) 1J >%*V^$9d#B# MM$*<*<S*AB OOD,>,>s,CD (. 4#7#7#;#;C#CCMM#x0OOC2
 *%0DK]  	C	\ *%0DKs   F" E=F4 "F10F14Gc                    t        |t              }t        |      }|t        k(  rdnd}||f}|| j                  v r| j                  |   S t        |ddd      \  }}	 |j                         }|s8|t        v r0t        |      t        z  rt        j                  t        |   |      S |dkD  rt        j                  ||      S t        j                  |      S # t        $ r |j                         }Y w xY w)zConverts a *Quartz* event to a :class:`KeyCode`.

        :param event: The event to convert.

        :return: a :class:`pynput.keyboard.KeyCode`

        :raises IndexError: if the key code is invalid
        TNr^   )r*   r   )r   r   r   r   r   r   isprintableAttributeErrorisalnumr   r   r   r%   	from_charr(   )	r=   r   r*   r   is_mediar   lengthchars	printables	            r,   r   zListener._event_to_keyM  s    )*,#E*
%84d 8n$$$$%%c** 83d$	())+I R7]#E*)*$$WR[R$88aZ$$Ur$22 r""  	(I	(s   C C32C3)$rC   rD   rE   r	   r   r   r   r   _EVENTSr7   r   r*   r&   r   r8   r   rv   rw   r9   r   r{   r|   r:   r   r}   r~   r;   r   r   r   r   r   r   r   r   r   )r   r   r   s   00@r,   r   r      s    	'}%	&+,	- 	'	(   
syy**+S0M 	*		,		,(		*		*)

+

+		(**,O%31j"#ss   4Dr   ).__doc__enumQuartzr   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   pynput._util.darwinr   r   r   pynput._util.darwin_vksr    r   r   r   r   r   r   r   r   r   getattrr5   r%   Enumr7   r   r   rH   r.   r,   <module>r      s   "      ,  ,       '( # 	
 Aemm AJ98$)) 98z9!! 9 F#}enn F#r.   