
    ie1                     4   d Z ddlZddlZddlZddlZddlmZ ddlmc mZ	 ddl
mZ ddlmZmZmZmZmZmZmZmZmZ ddlmZ  G d d	ej0                        Z G d
 dej2                        Z G d dej6                        Z G d deej8                        Zy)z,
The keyboard implementation for *Windows*.
    N)wintypes)AbstractListener)	INPUTINPUT_union
KEYBDINPUTKeyTranslatorListenerMixinMapVirtualKey	SendInput
SystemHook	VkKeyScan   )_basec                   .    e Zd ZdZdZdZd Zed        Zy)KeyCode)_flags_scanNc                    | j                   r7| j                   }| j                  xs t        |t        j                        }d}nt	        | j
                        dkD  rt        t        | j
                        }|dz	  dz  dk(  r0|dz  }| j                  xs t        |t        j                        }d}n'd}t	        | j
                        }t        j                  }|st        j                  nd}t        | j                  xs d|z  |z  ||      S )a_  The parameters to pass to ``SendInput`` to generate this key.

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

        :return: all arguments to pass to ``SendInput`` for this key

        :rtype: dict

        :raise ValueError: if this key is a unicode character that cannot be
        represented by a single UTF-16 value
        r   i        )dwFlagswVkwScan)vkr   r
   MAPVK_VK_TO_VSCordchar
ValueErrorr   r   UNICODEKEYUPdictr   )selfis_pressr   scanflagsresstate_flagss          `/home/obispo/Crisostomo_bridge/mision_env/lib/python3.12/site-packages/pynput/keyboard/_win32.py_parameterszKeyCode._parameters?   s     77B:: D ]%B%BC E^f$DII&CqD A%4Zzz H$R)F)FG 499~"**/7z''Q[[%A.< 	    c                 H     | j                   |fdt        j                  i|S )zCreates an extended key code.

        :param vk: The virtual key code.

        :param kwargs: Any other parameters to pass.

        :return: a key code
        r   )from_vkr   EXTENDEDKEY)clsr   kwargss      r(   	_from_extzKeyCode._from_extc   s%     s{{2Gj&<&<GGGr*   )	__name__
__module____qualname___PLATFORM_EXTENSIONSr   r   r)   classmethodr0    r*   r(   r   r   2   s2     FE"H 	H 	Hr*   r   c                      e Zd Zej	                  ej                        Zej	                  ej                        Z	ej                  ej                        Zej	                  ej                        Zej	                  ej                        Zej	                  ej                         Zej	                  ej$                        Zej	                  ej$                        Zej	                  ej*                        Zej	                  ej.                        Zej	                  ej2                        Zej                  ej6                        Zej                  ej:                        Zej                  ej>                        Z ej                  ejB                        Z"ej	                  ejF                        Z$ej	                  ejJ                        Z&ej	                  ejN                        Z(ej	                  ejR                        Z*ej	                  ejV                        Z,ej	                  ejZ                        Z.ej	                  ej^                        Z0ej	                  ejb                        Z2ej	                  ejf                        Z4ej	                  ejj                        Z6ej	                  ejn                        Z8ej	                  ejr                        Z:ej	                  ejv                        Z<ej	                  ejz                        Z>ej	                  ej~                        Z@ej	                  ej                        ZBej	                  ej                        ZDej	                  ej                        ZFej	                  ej                        ZHej	                  ej                        ZJej	                  ej                        ZLej	                  ej                        ZNej	                  ej                        ZPej	                  ej                        ZRej	                  ej                        ZTej	                  ej                        ZVej                  ej                        ZXej                  ej                        ZZej                  ej                        Z\ej                  ej                        Z^ej                  ej                        Z`ej	                  ej                        Zbej	                  ej                        Zcej	                  ej                        Zeej	                  ej                  d      Zgej	                  ej                        Ziej                  ej                        Zkej                  ej                        Zmej                  ej                        Zoej                  ej                        Zqej                  ej                        Zsej                  ej                        Zuej                  ej                        Zwej                  ej                        Zyej                  ej                        Z{ej	                  ej                        Z}ej                  ej                        Zej	                  ej                         Zej                  ej                        Zej	                  ej                        Zy)Key )r   N)r1   r2   r3   r   r,   VKMENUaltLMENUalt_lr0   RMENUalt_ralt_grBACK	backspaceCAPITAL	caps_lockLWINcmdcmd_lRWINcmd_rCONTROLctrlLCONTROLctrl_lRCONTROLctrl_rDELETEdeleteDOWNdownENDendRETURNenterESCAPEescF1f1F2f2F3f3F4f4F5f5F6f6F7f7F8f8F9f9F10f10F11f11F12f12F13f13F14f14F15f15F16f16F17f17F18f18F19f19F20f20F21f21F22f22F23f23F24f24HOMEhomeLEFTleftNEXT	page_downPRIORpage_upRIGHTrightLSHIFTshiftshift_lRSHIFTshift_rSPACEspaceTABtabUPupMEDIA_PLAY_PAUSEmedia_play_pause
MEDIA_STOP
media_stopVOLUME_MUTEmedia_volume_muteVOLUME_DOWNmedia_volume_down	VOLUME_UPmedia_volume_upMEDIA_PREV_TRACKmedia_previousMEDIA_NEXT_TRACK
media_nextINSERTinsertAPPSmenuNUMLOCKnum_lockPAUSEpauseSNAPSHOTprint_screenSCROLLscroll_lockr6   r*   r(   r8   r8   q   s   
//"''
"COOBHH%Ebhh'E__RXX&F(I

+I
//"''
"COOBGG$EOOBGG$E??2::&D__R[[)Fr{{+Fryy)FRWW%D


BFF
#COOBII&E
//"))
$C		B		B		B		B		B		B		B		B		B
//"&&
!C
//"&&
!C
//"&&
!C
//"&&
!C
//"&&
!C
//"&&
!C
//"&&
!C
//"&&
!C
//"&&
!C
//"&&
!C
//"&&
!C
//"&&
!C
//"&&
!C
//"&&
!C
//"&&
!CRWW%DRWW%D!!"''*I)Gbhh'EOOBII&Eoobii(Goobii(GOOBHH3O/E
//"&&
!C			255	!B(()<)<=""2==1J))"..9))"..9''5O&&r':':;N""2#6#67Jryy)F??277#D  ,HOOBHH%E$$R[[1L//")),Kr*   r8   c                   ,     e Zd ZeZeZ fdZd Z xZ	S )
Controllerc                 ,    t        t        | 
  |i | y N)superr   __init__r"   argsr/   	__class__s      r(   r   zController.__init__   s    j$($9&9r*   c                    	 t        dt        j                  t        t        j                  t        t        d	i |j                  |                        t        j                  t                     y # t        $ r t        |j                  j                  d            }t        dt        |      d      D cg c]  }||   ||dz      dz  z   nc c}w }}t        j                  |st        j                   ndz  t        t        |      t        t        |      z  fd|D         t        j                  t                     Y y w xY w)
Nr   ki)typevaluezutf-16ler      r   c           
   3   |   K   | ]3  }t        t         j                  t        t        |                    5 yw))r   r   r   N)r   KEYBOARDr   r   ).0r$   r'   s     r(   	<genexpr>z%Controller._handle.<locals>.<genexpr>   s=      ,,  #)(3&* ,-.,,s   9<r6   )r   ctypesbyrefr   r   r   r   r)   sizeofr   	bytearrayr   encoderangelenr   r    )r"   keyr#   	byte_datai
surrogatesr'   s         @r(   _handlezController._handle   s*   	&U%%B(ABDE F e$&  	& "#((//*"=>I q#i.!46 !	!a% 0A 566 6J 6 %,,+3:##<K JZ( ,, !+,, - e$
&	&s    A2A6 6AE;CA5E
E)
r1   r2   r3   r   _KeyCoder8   _Keyr   r   __classcell__)r   s   @r(   r   r      s    HD:&r*   r   c                      e Zd ZdZdZdZdZdZdZdZ	dZ
d	ZeefZeefZefZeD  ci c]  }|j                   j"                  | c}} Zej(                  fZ G d
 dej.                        Z ej2                  e      ZfdZd Zej<                  d        Ze jB                  d        Z"d Z#d Z$d Z%fdZ&xZ'S c c}} w )Listener   Q      i  i  i  i   i       c                       e Zd ZdZdZdZdej                  fdej                  fdej                  fdej                  fdej                  fgZ
y	)
Listener._KBDLLHOOKSTRUCTzContains information about a mouse event passed to a
        ``WH_KEYBOARD_LL`` hook procedure, ``LowLevelKeyboardProc``.
           r   vkCodescanCoder%   timedwExtraInfoN)r1   r2   r3   __doc__LLKHF_INJECTEDLLKHF_LOWER_IL_INJECTEDr   DWORDr   c_void_p_fields_r6   r*   r(   _KBDLLHOOKSTRUCTr     sW    	 $",x~~&(hnn%X^^$FOO,.r*   r   c                     t        t        | 
  |i | t               | _        | j
                  j                  dd       | _        y )Nevent_filterc                      y)NTr6   )msgdatas     r(   <lambda>z#Listener.__init__.<locals>.<lambda>  s    r*   )r   r   r   r   _translator_optionsget_event_filterr   s      r(   r   zListener.__init__  s>    h&77(?!]].."$r*   c                    |t         j                  k7  ry t        j                  || j                        j
                  }|j                  | j                  k(  }|j                  d| j                  j                  z  | j                  j                  z  z  dk7  }||r| j                  ndz  |r| j                  ndz  }| j                  ||      du ry |r||j                  fS ||j                  fS )Nr   F)r   	HC_ACTIONr   cast_LPKBDLLHOOKSTRUCTcontentsr   
_VK_PACKETr%   r   r   r   _UTF16_FLAG_INJECTED_FLAGr   r   )r"   coder   lpdatar   	is_packetinjectedmessages           r(   _convertzListener._convert  s    :'''{{64#:#:;DDKK4??2	JJ!##22#3##;;#< =ABC #,t!5&.t""A7
 c4(E1T]]++T[[))r*   c                    |}|}|| j                   z  }t        || j                  z        }|| j                   | j                  z   z  }|r+|}t        j	                  t        j                  |            }	n	 | j                  ||      }	|| j                  v r| j                  |	|       y || j                  v r| j                  |	|       y y # t        $ r d }	Y Pw xY wr   )r   boolr  r   	from_charsixunichr_event_to_keyOSError_PRESS_MESSAGESon_press_RELEASE_MESSAGES
on_release)
r"   wparamlparamr   r   is_utf16r  r  r$   r   s
             r(   _processzListener._process4  s    
 )))d1112$**T-@-@@AAD##CJJt$45C((b1 d***MM#x(...OOC* /  s   7C CCc              #      K   d yw)zJAn empty context manager; we do not need to fake keyboard events.
        Nr6   )r"   s    r(   _receivezListener._receiveO  s      	s   c                 X    || j                   k(  r| j                  j                          yy)zGReceives ``WM_INPUTLANGCHANGE`` and updates the cached layout.
        N)_WM_INPUTLANGCHANGEr   update_layout)r"   r  r  r  s       r(   _on_notificationzListener._on_notificationV  s)     4+++**, ,r*   c           	          || j                   v r| j                   |   S t        di | j                  ||| j                  v       S )a#  Converts an :class:`_KBDLLHOOKSTRUCT` to a :class:`KeyCode`.

        :param msg: The message received.

        :param vk: The virtual key code to convert.

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

        :raises OSError: if the message and data could not be converted
        r6   )_SPECIAL_KEYSr   
_translater  )r"   r   r   s      r(   r  zListener._event_to_key\  sQ     ###%%b)) .T__t+++- . .r*   c                 &    | j                  ||      S )a?  Translates a virtual key code to a parameter list passable to
        :class:`pynput.keyboard.KeyCode`.

        :param int vk: The virtual key code.

        :param bool is_press: Whether this is a press event.

        :return: a parameter list to the :class:`pynput.keyboard.KeyCode`
            constructor
        )r   )r"   r   r#   s      r(   r  zListener._translateo  s     H--r*   c                     t        |dd       }|2| j                  j                  |      }|t        j	                  |      S t
        t        |   |      S )Nr   )getattrr   char_from_scanr   r
  r   r   	canonical)r"   r   r$   r   r   s       r(   r$  zListener.canonical|  sX     sGT*##2248D((..Xt.s33r*   )(r1   r2   r3   _EVENTSr  _WM_KEYDOWN	_WM_KEYUP_WM_SYSKEYDOWN_WM_SYSKEYUPr   r  r   r  r  _WM_NOTIFICATIONSr8   r   r   r  r   SuppressException_HANDLED_EXCEPTIONSr   	Structurer   POINTERr   r   r  r   _emitterr  
contextlibcontextmanagerr  r  r  r  r$  r   )r   r   r   s   00@r(   r   r      s   G KINL K N J #N3O #L1 	  			cM
 	$$'.6++ . ((89$** + +4  -.&.	4 	4ws   B<r   )r   r0  r   enumr  r   pynput._util.win32_vks_util	win32_vksr:   pynput._utilr   pynput._util.win32r   r   r   r   r	   r
   r   r   r    r   r   Enumr8   r   r   r6   r*   r(   <module>r:     s   "    
  # # )	 	 	 ;Hemm ;H~C-$)) C-N&&!! &&Rd4}enn d4r*   