a
    V$cG+                    @   sX  d dl mZmZmZmZm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 d dlZejdejdejdejdejdejdejd	ejd
ejdejdejdejdej dej!dej"dej#dej$dej%dej&dej'dej(dej)dej*dej+dej,dej-dej.dej/dej0dej1d ej2d!ej3d"ej4d#ej5d$ej6d"ej7d%ej8d&ej9d'ej:d(ej;d)ej<d*ej=d+ej>d,ej?d-ej@d.ejAd/ejBd0ejCd1ejDd2ejEd3ejFd4ejGd5ejHd6ejId7ejJd8ejKd9ejLd:ejMd;ejNd<ejOd=ejPd>ejQd?ejRd@ejSdAejTdBejUdCejVdDejWdEejXdFejYdGejZdej[dej\dej]dej^dej_dej`dejadejbdejcdejddejedejfdejgdejhdejidejjdejkdejldejmdejndejodejpdejqdejrdejsdejtdejudejvdejwdejxdejydejzdej{dej|dej}dej~dejdejdejd ejd!ejdejdejdejdejd"ejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdiZ i Zee  D ]2\ZZereevreee< qdHdI ZdJdK ZdLdM ZdS )N    )divisionabsolute_importwith_statementprint_functionunicode_literals)PY2
basestringbchrbordchropenpystrrangeroundstrtobytesunicodeN 
	 !"#%$&'()*+,-./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zc                 C   s\  | d}d}|r|d dkr4|tjO }|d q|d dkrV|tjO }|d q|d dkrx|tjO }|d q|d dkr|tjO }|d qqqd|}|tv rt	|dkr|}nd }t| }n|
 tv r|}t|
  }|tjO }nZttd| d }|d u r(td	|| j| jt|d
}|s@d }nt	|dk rRd }|||fS )Nr;   r   shiftctrlaltmeta    K_z$Could not find keysym {!r} at {}:{}.r   )splitpygame_sdl2KMOD_LSHIFTpop
KMOD_LCTRL	KMOD_LALT
KMOD_LMETAjoinunicode_to_codeordlowergetattr	Exceptionformatfilename
linenumbercode_to_unicodeget)nodekeysymr?   modskeyrQ   code rt   renpy/test\testkey.pyget_keycode  sF    







rv   c                 C   s   t | |\}}}tjjrZtjtjjtjd|||ddd tjtjjtj|dd n$tjtjjtj||||ddd d S )Nr   FT)r   rr   scancodemodrepeattest)textrz   )	rv   r^   rr   
text_inputeventpostEventKEYDOWN	TEXTINPUT)ro   rp   rs   rQ   rq   rt   rt   ru   downG  s2    	
r   c              
   C   s6   t | |\}}}tjtjjtj|||ddd d S )NFT)rr   rw   rx   ry   rz   )rv   r^   r}   r~   r   KEYUP)ro   rp   rs   r;   rq   rt   rt   ru   upe  s    r   (	  
__future__r   r   r   r   r   renpy.compatr   r   r	   r
   r   r   r   r   r   r   r   r   r^   	K_UNKNOWNK_RETURNK_ESCAPEK_BACKSPACEK_TABK_SPACE	K_EXCLAIM
K_QUOTEDBLK_HASH	K_PERCENTK_DOLLARK_AMPERSANDK_QUOTEK_LEFTPARENK_RIGHTPAREN
K_ASTERISKK_PLUSK_COMMAK_MINUSK_PERIODK_SLASHK_0K_1K_2K_3K_4K_5K_6K_7K_8K_9K_COLONK_SEMICOLONK_LESSK_EQUALS	K_GREATER
K_QUESTIONK_ATK_LEFTBRACKETK_BACKSLASHK_RIGHTBRACKETK_CARETK_UNDERSCOREK_BACKQUOTEK_aK_bK_cK_dK_eK_fK_gK_hK_iK_jK_kK_lK_mK_nK_oK_pK_qK_rK_sK_tK_uK_vK_wK_xK_yK_z
K_CAPSLOCKK_F1K_F2K_F3K_F4K_F5K_F6K_F7K_F8K_F9K_F10K_F11K_F12K_PRINTSCREENK_SCROLLLOCKK_PAUSEK_INSERTK_HOMEK_PAGEUPK_DELETEK_END
K_PAGEDOWNK_RIGHTK_LEFTK_DOWNK_UPK_NUMLOCKCLEARK_KP_DIVIDEK_KP_MULTIPLY
K_KP_MINUS	K_KP_PLUS
K_KP_ENTERK_KP_1K_KP_2K_KP_3K_KP_4K_KP_5K_KP_6K_KP_7K_KP_8K_KP_9K_KP_0K_KP_PERIODK_APPLICATIONK_POWERK_KP_EQUALSK_F13K_F14K_F15K_F16K_F17K_F18K_F19K_F20K_F21K_F22K_F23K_F24	K_EXECUTEK_HELPK_MENUK_SELECTK_STOPK_AGAINK_UNDOK_CUTK_COPYK_PASTEK_FINDK_MUTE
K_VOLUMEUPK_VOLUMEDOWN
K_KP_COMMAK_KP_EQUALSAS400
K_ALTERASEK_SYSREQK_CANCELK_CLEARK_PRIOR	K_RETURN2K_SEPARATORK_OUTK_OPERK_CLEARAGAINK_CRSELK_EXSELK_KP_00K_KP_000K_THOUSANDSSEPARATORK_DECIMALSEPARATORK_CURRENCYUNITK_CURRENCYSUBUNITK_KP_LEFTPARENK_KP_RIGHTPARENK_KP_LEFTBRACEK_KP_RIGHTBRACEK_KP_TABK_KP_BACKSPACEK_KP_AK_KP_BK_KP_CK_KP_DK_KP_EK_KP_FK_KP_XOR
K_KP_POWERK_KP_PERCENT	K_KP_LESSK_KP_GREATERK_KP_AMPERSANDK_KP_DBLAMPERSANDK_KP_VERTICALBARK_KP_DBLVERTICALBAR
K_KP_COLON	K_KP_HASH
K_KP_SPACEK_KP_ATK_KP_EXCLAMK_KP_MEMSTOREK_KP_MEMRECALLK_KP_MEMCLEARK_KP_MEMADDK_KP_MEMSUBTRACTK_KP_MEMMULTIPLYK_KP_MEMDIVIDEK_KP_PLUSMINUS
K_KP_CLEARK_KP_CLEARENTRYK_KP_BINARY
K_KP_OCTALK_KP_DECIMALK_KP_HEXADECIMALK_LCTRLK_LSHIFTK_LALTK_LGUIK_RCTRLK_RSHIFTK_RALTK_RGUIK_MODEK_AUDIONEXTK_AUDIOPREVK_AUDIOSTOPK_AUDIOPLAYK_AUDIOMUTEK_MEDIASELECTK_WWWK_MAILK_CALCULATOR
K_COMPUTERK_AC_SEARCH	K_AC_HOME	K_AC_BACKK_AC_FORWARD	K_AC_STOPK_AC_REFRESHK_AC_BOOKMARKSK_BRIGHTNESSDOWNK_BRIGHTNESSUPK_DISPLAYSWITCHK_KBDILLUMTOGGLEK_KBDILLUMDOWNK_KBDILLUMUPK_EJECTK_SLEEPrm   re   sorteditemsrG   rR   rv   r   r   rt   rt   rt   ru   <module>   s  8  p
5
