Ë FA².(¼ãód—dZddlmZmZmZmZddlmZmZm Z m Z m Z m Z ddlm Z ddlmZddlZddlZdZeej(ej*z«Zed«Zd Zd Zd ZeezezezezezZd „ZGd „de«ZGd„de«Zedk(r ddl m!Z!e!ddd¬«ddl"m#Z#e#e«yy)z6 Dialog for building Tkinter accelerator key bindings é)ÚToplevelÚListboxÚ StringVarÚTclError)ÚFrameÚButtonÚ CheckbuttonÚEntryÚLabelÚ Scrollbar)Ú messagebox)Ú _setup_dialogN) ÚF1ÚF2ÚF3ÚF4ÚF5ÚF6ÚF7ÚF8ÚF9ÚF10ÚF11ÚF12z~!@#%^&*()_-+={}[]|;:,.<>/?)ÚTabÚSpaceÚReturn)Ú BackSpaceÚDeleteÚInsert)ÚHomeÚEndúPage Upú Page Downú Left Arrowú Right ArrowúUp Arrowú Down ArrowcóX—idd“dd“dd“dd“d d “d d “d d“dd“dd“dd“dd“dd“dd“dd“dd“dd “d!d"“id#d$“d%d&“d'd(“d)d*“d+d,“d-d.“d/d0“d1d2“d3d4“d5d6“d7d8“d9d:“d;d<“d=d>“d?d@“dAdB“dCdD“¥dEdEi¥}|j||«}dF|vr"|tjvr|j«}dG|›�S)Hz3Translate from keycap symbol to the Tkinter keysym.rÚspaceÚ~Ú asciitildeÚ!ÚexclamÚ@ÚatÚ#Ú numbersignÚ%ÚpercentÚ^Ú asciicircumÚ&Ú ampersandÚ*ÚasteriskÚ(Ú parenleftÚ)Ú parenrightÚ_Ú underscoreÚ-ÚminusÚ+ÚplusÚ=ÚequalÚ{Ú braceleftÚ}Ú bracerightÚ[Ú bracketleftÚ]Ú bracketrightÚ|ÚbarÚ;Ú semicolonÚ:ÚcolonÚ,ÚcommaÚ.ÚperiodÚ<ÚlessÚ>ÚgreaterÚ/ÚslashÚ?Úquestionr#ÚPriorr$ÚNextr%ÚLeftr&ÚRightr'ÚUpr(ÚDownrÚShiftzKey-)ÚgetÚstringÚascii_lowercaseÚupper)ÚkeyÚ modifiersÚmappings ú)/usr/lib/python3.12/idlelib/config_key.pyÚ translate_keyrpsþ€ð @ˆw�wð @Ø � ð @Ø! (ð @Ø,/°ð @Ø69¸,ð @à � ð @à˜}ð @à.1°+ð @ð � ð @ð   ð @ð.1°ð @ð � ð @ð" 'ð @ð,/¨vð @ð8;¸7ð @ð � ð @ð ! ñ @ð � ð @ð # >ð @ð 47°uð @ð � ð @ð! ð @ð+.¨gð @ð8;¸8ð @ð �ð @ð˜Ið @ð(+¨7ð @ð58¸ ð @ð �gð @ð +¨6ð @ð ˜ð @ð"/¨wð @ð �tð @ð*¨6ñ @ð49¸ñ @€Gð �+‰+�c˜3Ó €CØ�)Ñ ¤v×'=Ñ'=Ñ =Ø�i‰i‹kˆØ �#�ˆ<Ðócóf‡—eZdZdZˆfd„Zd„Zd„Zd„Zd„Zdd„Z d„Z d „Z d „Z d „Z d „Zd „ZˆxZS)Ú GetKeysFramezKey Sequence Errorc󲕗t‰|�|«d|d<d|d<||_||_||_d|_t |«|_|jjd«|j«g|_ |jD]9}t |«}|jd«|jj|«Œ;d|_ |j«y)a parent - parent of this dialog action - the name of the virtual event these keys will be mapped to current_key_sequences - a list of all key sequence lists currently mapped to virtual events, for overlap checking éÚ borderwidthÚsunkenÚreliefÚFN)ÚsuperÚ__init__ÚparentÚactionÚcurrent_key_sequencesÚresultrÚ key_stringÚsetÚset_modifiers_for_platformÚ modifier_varsrmÚappendÚadvancedÚcreate_widgets)Úselfr|r}r~ÚmodifierÚvariableÚ __class__s €ror{zGetKeysFrame.__init__1s¿ø€ô ‰Ñ˜Ô ؈ˆ]ÑØ!ˆˆX‰ØˆŒ ؈Œ Ø%:ˆÔ"؈Œ Ü# D›/ˆŒØ �‰×јBÔà ×'Ñ'Ô)ØˆÔØŸœˆHÜ  “ˆHØ �L‰L˜Ô Ø × Ñ × %Ñ % hÕ /ð'ðˆŒ Ø ×ÑÕrqcó.—tj|i|¤Žy©N)r Ú showerror)r‡ÚargsÚkwargss ror�zGetKeysFrame.showerrorLs€ä×јdÐ- fÓ-rqc óD—t|d¬«|_|jjddddd¬«t|jd|j›d�¬ «}|j d ¬ «t|jd |j d d¬«}|j ddd¬«t|«|_|jjdddd¬«i|_d}t|j|j«D]o\}}|jj||«}t|j|j|||d¬«}|jd|dd ¬«||j|<|dz }Œqt|jd d¬«}|jddddd ¬«t!|jddd¬«|_|j"j$dgt&¢­Ž|j"j)d |j*«|j"jdddd!¬"«t-|jd#|j"j.¬$«} |j"j1| j2¬%«| jdddd!¬"«t5|jd&|j6¬'«|_|j8jddd¬(«t|d)¬«|_|j:jddddd¬«t|j:d d*|j›d+�d,z¬«} | j d ¬ «t=|j:|j ¬-«|_|j>j d¬.«t|«|_ |j@jdddd¬«t|j@d d/¬«} | jddd¬0«t5||jBd1¬2«|_"|jDjddd3dd¬4«|jC«y)5NÚ keyseq_basic)ÚnamerÚnsewé)ÚrowÚcolumnÚstickyÚpadxÚpadyzNew keys for 'z' :©ÚtextÚw)ÚanchorÚleftÚgrooveru)ÚjustifyÚ textvariablerxrvÚx)ÚipadxÚipadyÚfillé)r•r–r—r˜ry)Úcommandr›r‰ÚonvalueÚoffvalue)r•r–r˜r—z¸Select the desired modifier keys above, and the final key from the list on the right. Use upper case Symbols when using the Shift modifier. (Letters will be converted automatically.))r r›é)r•r–Ú columnspanr˜r—éé Úsingle)ÚwidthÚheightÚ selectmodeÚendzÚns)r•r–Úrowspanr—Úvertical)Úorientr§)Úyscrollcommandz Clear Keys)r›r§)r•r–r«Úkeyseq_advancedzEnter new binding(s) for 'z' : z2(These bindings will not be checked for validity!))r¡)r¥aÁKey bindings are specified using Tkinter keysyms as in these samples: , , , , , . Upper case is used when the Shift modifier is present! 'Emacs style' multi-keystroke bindings are specified as follows: , where the first key is the 'do-nothing' keybinding. Multiple separate bindings for one action should be separated by a space, eg., .)r•r–r—ú<< Basic Key Binding Entry)r§r›Úew)r•r–Ústickr˜r™)#rÚframe_keyseq_basicÚgridr r}Úpackr€Úframe_controls_basicÚmodifier_checkbuttonsÚziprmrƒÚmodifier_labelrhr Úbuild_key_stringrÚlist_keys_finalÚinsertÚAVAILABLE_KEYSÚbindÚfinal_key_selectedr ÚyviewÚconfigr�rÚ clear_key_seqÚ button_clearÚframe_keyseq_advancedr Ú advanced_keysÚframe_help_advancedÚ toggle_levelÚ button_level) r‡Ú basic_titleÚ basic_keysr–rˆr‰ÚlabelÚcheckÚ help_basicÚscroll_keys_finalÚadvanced_titleÚ help_advanceds ror†zGetKeysFrame.create_widgetsPsö€ä"'¨°>Ô"BˆÔØ ×Ñ×$Ñ$¨°1¸VØ+,°1ð %ô 6ä˜D×3Ñ3Ø#1°$·+±+°¸cÐ!BôDˆ à×Ñ ÐÔ$ä˜4×2Ñ2¸FØ(,¯©ÀØ'(ô*ˆ ð �‰˜a q¨sˆÔ3ô%*¨$£KˆÔ!Ø ×!Ñ!×&Ñ&¨1°Q¸vÈAÐ&ÔNð&(ˆÔ"؈Ü"% d§n¡n°d×6HÑ6HÖ"IÑ ˆH�hØ×'Ñ'×+Ñ+¨H°hÓ?ˆEÜ × 9Ñ 9Ø(,×(=Ñ(=ÀEØ)1¸8ÈbôRˆEð �J‰J˜1 V°!¸CˆJÔ @Ø38ˆD× &Ñ & xÑ 0Ø �a‰K‰Fð#Jô˜4×4Ñ4¸fð!<ô=ˆ ð �‰˜A a°A¸AÀcˆÔJô ' t×'@Ñ'@ÈØ.0¸Xô GˆÔà#ˆ×Ñ×#Ñ# EÐ;¬NÓ;Ø ×Ñ×!Ñ!Ð"5°t×7NÑ7NÔOØ ×Ñ×!Ñ! a°¸1ÀTÐ!ÔJÜ% d×&?Ñ&?Ø-7Ø.2×.BÑ.B×.HÑ.HôJÐð ×Ñ×#Ñ#Ð3D×3HÑ3HÐ#ÔIØ×Ñ 1¨Q¸À$ÐÔGÜ" 4×#<Ñ#<Ø(4Ø+/×+=Ñ+=ô?ˆÔð ×Ñ×Ñ 1¨Q¸1ÐÔ=ô&+¨4Ð6GÔ%HˆÔ"Ø ×"Ñ"×'Ñ'¨A°aÀØ./°að (ô 9ä˜t×9Ñ9À6Ø&@ÀÇÁÀ ÈUÐ$SØ%Yñ%Zô[ˆð ×Ñ 3ÐÔ'Ü" 4×#=Ñ#=Ø04·±ôAˆÔà ×Ñ×Ñ SÐÔ)ô$)¨£;ˆÔ Ø × Ñ ×%Ñ%¨!°A¸fÈ1Ð%ÔMܘd×6Ñ6Àð@ô Bˆ ð ×јq¨°6ÐÔ:ô# 4°×1BÑ1BØ'CôEˆÔà ×Ñ×Ñ 1¨Q°dÀÈÐÔKØ ×ÑÕrqcób—tjdk(r gd¢|_n gd¢|_ddi|_y)aVDetermine list of names of key modifiers for this platform. The names are used to build Tk bindings -- it doesn't matter if the keyboard has these keys; it matters if Tk understands them. The order is also important: key binding equality depends on it, so config-keys.def must use the same ordering. Údarwin)rgÚControlÚOptionÚCommand)rÜÚAltrgrÜÚCtrlN)ÚsysÚplatformrmr©r‡s ror‚z'GetKeysFrame.set_modifiers_for_platform©s+€ô �<‰<˜8Ò #ÚFˆD�Nâ8ˆDŒNØ(¨&Ð1ˆÕrqcó*—|jjd«jd«r‚|j«|jj d¬«|j j «|jj «|jj«d|_ y|j«|jj d¬«|jj «|jj «d|_ y) z'Toggle between basic and advanced keys.r›ÚAdvancedr¹ršTzAdvanced Key Binding Entry >>FN) rÑÚcgetÚ startswithrËrÊrÍÚliftrÏrÎÚ focus_setr…r¼r¿rãs rorÐzGetKeysFrame.toggle_level·sÑ€à × Ñ × "Ñ " 6Ó *× 5Ñ 5°jÔ AØ × Ñ Ô Ø × Ñ × $Ñ $Ð*FÐ $Ô GØ × &Ñ &× +Ñ +Ô -Ø × $Ñ $× )Ñ )Ô +Ø × Ñ × (Ñ (Ô *Ø ˆD�Mà × Ñ Ô Ø × Ñ × $Ñ $Ð*IÐ $Ô JØ × #Ñ #× (Ñ (Ô *Ø × %Ñ %× *Ñ *Ô ,Ø!ˆD�Mrqcó$—|j«y)z3Handler for clicking on key in basic settings list.N)rér‡Úevents rorÈzGetKeysFrame.final_key_selectedÇs€à ×ÑÕrqcóø—|j«x}}|jjd«}|rt||«}|j |«|j j ddj|«›d�«y)z2Create formatted string of modifiers plus the key.r�rYrAr[N)Ú get_modifiersrÄrhrpr„r€r�Újoin)r‡ÚkeylistrmÚ final_keys rorÃzGetKeysFrame.build_key_stringËsk€à"×0Ñ0Ó2Ð2ˆ�)Ø×(Ñ(×,Ñ,¨XÓ6ˆ Ù Ü% i°Ó;ˆIØ �N‰N˜9Ô %Ø �‰×јa §¡¨Ó 1Ð2°!Ð4Õ5rqcóŠ—|jD�cgc]}|j«‘Œ}}|D�cgc]}|sŒ|‘Œ c}Scc}wcc}w)z9Return ordered list of modifiers that have been selected.)rƒrh)r‡r‰Úmod_listÚmods rorîzGetKeysFrame.get_modifiersÔsD€à37×3EÒ3EÓFÑ3E x�H—L‘L•NÐ3EˆÐFÙ'Ó/™x˜ª3’˜xÑ/Ð/ùòGùÚ/s�;¬A´Acóî—|jjdd«|jjdd«|jD]}|j d«Œ|j j d«y)z#Clear modifiers and keys selection.rr²Úmovetoz0.0ryN)rÄÚ select_clearrÉrƒr�r€)r‡r‰s rorËzGetKeysFrame.clear_key_seqÙs\€à ×Ñ×)Ñ)¨!¨UÔ3Ø ×Ñ×"Ñ" 8¨UÔ3Ø×*Ô*ˆHØ �L‰L˜Õ ð+à �‰×јBÕrqcó—d|_|jj«j«}|s|j |j |d¬«y|j s|j|«r|j|«r||_y)NryzNo key specified.©Útitler|Úmessage) rr€rhÚstripr�Úkeyerror_titler…Úkeys_okÚbind_ok)r‡Úkeyss roÚokzGetKeysFrame.okáso€ØˆŒ Ø�‰×"Ñ"Ó$×*Ñ*Ó,ˆÙØ �N‰N ×!4Ñ!4¸TØ#6ð ô 8à Ø �MŠM˜TŸ\™\¨$Ô/°T·\±\À$Ô5G؈DŒKØrqcóî—|jjd«}|j«}|j}|jD��cgc] }|D]}|‘ŒŒ }}}|j d«s|j ||d¬«y |s$|ttzvr|j ||d¬«y |dgk(r)|ttzdzvrd }|j |||¬«y ||vrd }|j |||¬«y y cc}}w) z¨Validity check on user's 'basic' keybinding selection. Doesn't check the string produced by the advanced dialog because 'modifiers' isn't set. r�r[zMissing the final Key)r|rûzNo modifier key(s) specified.rùrg)rrzBThe shift modifier by itself may not be used with this key symbol.z'This key combination is already in use.TF) rÄrhrîrýr~Úendswithr�Ú FUNCTION_KEYSÚ MOVE_KEYS) r‡rrñrmrúrðrlÚ key_sequencesÚmsgs rorþzGetKeysFrame.keys_okìs-€ð ×(Ñ(×,Ñ,¨XÓ6ˆ Ø×&Ñ&Ó(ˆ Ø×#Ñ#ˆØ,0×,FÒ,Fô1Ñ,F Û(/ òØ(/ðÐ,Fˆ ñ1à�}‰}˜SÔ!Ø �N‰N˜5¨Ø#:ð ô <ð"ñؤ=´9Ñ#<Ñ<Ø �N‰N ¨tØ#Bð ô Dðð˜G˜9Ò$ØÜ#¤iÑ/Ð2BÑBñCð&ˆCà �N‰N ¨t¸SˆNÔ Að ð �]Ñ "Ø;ˆCØ �N‰N ¨t¸SˆNÔ Aððùó'1sÁC1có¾— |j|d„«}|j||«y#t$r+}|j|j|d|›�¬«Yd}~yd}~wwxYw)z:Return True if Tcl accepts the new keys else show message.có—yrŒ©r rqroÚz&GetKeysFrame.bind_ok..s€¨drqTz2The entered key sequence is not accepted. Error: rùNF)rÇÚunbindrr�rý)r‡rÚbindingÚerrs rorÿzGetKeysFrame.bind_ok sl€ð Ø—i‘i ¡lÓ3ˆGð �K‰K˜˜gÔ &Øøôò Ø �N‰NØ×-Ñ-°dð 'Ø'* eð-ð ô /ôûð  ús‚(¨ A±!AÁArŒ)Ú__name__Ú __module__Ú __qualname__rýr{r�r†r‚rÐrÈrÃrîrËrrþrÿÚ __classcell__©rŠs@rorsrs,sHø„ð*€Nôò6.òWòr 2ò"ó  ò6ò0ò  ò òö> rqrscój‡—eZdZdddœˆfd„ Zed„«Zej d„«Zdd„Zdd„ZˆxZ S) Ú GetKeysWindowF)Ú_htestÚ_utestcó"•—t‰ |�|«|j«d|d<|jdd¬«|j «|j «|j «dz|j«dzz z}|j«|s'|j«dz|j«dzz ndz}|jd|›d|›�«|j|«t|||«x|_} |jd|j «t#|«} t%| d d |j&¬ «|_t%| d d |j ¬ «|_|j(j-d d dd¬«|j*j-d ddd¬«| j/ddd¬«| j/dd¬«|j1|«t3|«|j5«|s!|j7«|j9«yy)aÛ parent - parent of this dialog title - string which is the title of the popup dialog action - string, the name of the virtual event these keys will be mapped to current_key_sequences - list, a list of all key sequence lists currently mapped to virtual events, for overlap checking _htest - bool, change box location when running htest _utest - bool, do not wait when running unittest r”rvF)r°r¯rué–rCÚWM_DELETE_WINDOWÚOKé)r›r¯r§ÚCancelr)r•r–r˜r™r¦ÚtopTÚboth)ÚsideÚexpandr¥Úbottomr¢)r r¥N)rzr{ÚwithdrawÚ resizableÚupdate_idletasksÚ winfo_rootxÚ winfo_widthÚwinfo_reqwidthÚ winfo_rootyÚ winfo_heightÚwinfo_reqheightÚgeometryrúrsÚframeÚprotocolÚcancelrrrÚ button_okÚ button_cancelr½r¾Ú transientrÚgrab_setÚ deiconifyÚ wait_window) r‡r|rúr}r~rrr¢Úyr-Ú frame_buttonsrŠs €ror{zGetKeysWindow.__init__sÜø€ô ‰Ñ˜Ô Ø � ‰ ŒØˆˆ]ÑØ �‰˜e¨5ˆÔ1à ×ÑÔà × Ñ Ó !Ø× Ñ Ó" AÑ%¨×(;Ñ(;Ó(=¸qÑ(@Ñ@ñBˆà × Ñ Ó !áð×"Ñ"Ó$ aÑ'¨$×*>Ñ*>Ó*@À!Ñ*CÒCØ!$ñ&ˆð � ‰ ˜˜!˜˜A˜a˜S�kÔ"à � ‰ �5ÔÜ)¨$°Ð8MÓNÐNˆŒ �UØ � ‰ Ð(¨$¯+©+Ô6ܘd› ˆ Ü  °DØ&'°·±ô:ˆŒä# M¸Ø)*°D·K±KôAˆÔà �‰×Ñ ¨!°!¸!ÐÔ<Ø ×Ñ×Ñ A¨a°a¸aÐÔ@Ø � ‰ ˜ d°ˆ Ô8Ø×Ñ ¨sÐÔ3à �‰�vÔÜ�dÔØ � ‰ ŒÙØ �N‰NÔ Ø × Ñ Õ ðrqcó.—|jjSrŒ©r-rrãs rorzGetKeysWindow.resultJs€à�z‰z× Ñ Ð rqcó&—||j_yrŒr9)r‡Úvalues rorzGetKeysWindow.resultNs€à!ˆ� ‰ Õrqcóx—|jj«|j«|j«yrŒ)r-rÚ grab_releaseÚdestroyrës rorzGetKeysWindow.okRs$€Ø � ‰ � ‰ ŒØ ×ÑÔØ � ‰ �rqcóR—d|_|j«|j«y)Nry)rr=r>rës ror/zGetKeysWindow.cancelWs€ØˆŒ Ø ×ÑÔØ � ‰ �rqrŒ) rrrr{ÚpropertyrÚsetterrr/rrs@rorrsFø„ð!¨ö,ð\ñ!óð!ð ‡]�]ñ"óð"ó÷ rqrÚ__main__)Úmainz!idlelib.idle_test.test_config_keyruF)Ú verbosityÚexit)Úrun)$Ú__doc__ÚtkinterrrrrÚ tkinter.ttkrrr r r r r Útkinter.simpledialogrrirárÚtuplerjÚdigitsÚ ALPHANUM_KEYSÚPUNCTUATION_KEYSÚWHITESPACE_KEYSÚ EDIT_KEYSrrÆrprsrrÚunittestrCÚidlelib.idle_test.htestrFr rqroÚrSsÖðñ÷;Ó:ßK×KÝÝ.Û Û ð8€ á�f×,Ñ,¨v¯}©}Ñ<Ó=€ ÙÐ6Ó7ÐØ,€Ø -€ ð 6€ àÐ"2Ñ2°]ÑBØ!ñ"Ø$-ñ.Ø09ñ:€òô(k�5ôkô\@�Hô@ðF ˆzÒÝÙÐ ,¸ÀÕFå+Ùˆ Õð rq