The compose key is an interesting feature modeled somewhat after the compose key used in the X Window System. Essentially, how that system works is you press a key, followed by a code, and then it outputs a character. You can do that with our system here, but you can also do a lot more.

Features:
• You can create your own compose key codes.
• You can create your own compose key schemes (that is, your own set of codes), and you can switch between them.
• You can be using up to four schemes at once. Each of the following keys has its own scheme: left win (Super_L), right win (Super_R), Menu and Insert.
• A compose key code can output more than a single character. You could output a whole novel if you wanted.
• A compose key code can cause the execution of a function or method.
• You can delete codes.
• You can delete schemes (except the four default schemes, although you may clear them or edit the codes).
• When the compose dialog is open, F5 will allow you to enter arguments to the output method. (Separate arguments by commas; do not use parentheses; feel free to use keywords.)
• When the compose dialog is open, F6 will allow you to the number of times the output should be repeated.
• When the compose dialog is open, F7 will allow you to enter a delimeter to go between repetitions of the output.

Shortcuts:

(I am using the word compose to represent whichever compose key is applicable: i.e. ‘Left Win’, ‘Right Win’, ‘Menu’ or ‘Insert’. You do not need to type ‘+’.)

• Compose: This opens a means to enter codes. When you enter a correct code, the pop-up window will disappear and the output will be inserted where your insert is. Each compose key may have its own scheme.
• Control+compose: This allows you to create a new code, or delete an existing one for the current scheme of whichever compose key you pressed.
• Shift+compose: This allows you to delete a chosen scheme. If you delete the current one for the compose key you pressed, it will revert to the default one for that key.
• Alt+compose: This allows you to make a new compose scheme or to switch to another currently existing one.
• Control+shift+compose: This lists all the codes in your current scheme for whichever compose key you pressed.
• Shift+alt+compose: This lists all of your schemes. This will do the same thing no matter which compose key you press.
• Compose key shortcuts for the default menu scheme are sometimes mentioned in menu item text (in parentheses): e.g. Sort ascending (asc)

How to:
• To make a method or function the output of a compose key code, type ‘&’ before your method/function. For instance, ‘&self.backup_favorites()’ would initiate the dialog to backup your favorites.
    ‣ To find a good list of usable methods, look at the handlers for the menu items in the source code. Many of the methods outside of those are not safe to use in this context without knowing more about them.
Known issues:
• Alt+Insert may be a Linux shortcut to insert another workspace (such as on Xubuntu).

Here's a list of the default compose key codes for the Menu compose key that existed in the year 2026, on May sixteenth, but I still need to explain what most of them do (Shule's menus actually explain what most of them do); however, below, the ones that are explained have the explanation in brackets (that is, `[explanation here]`) after the function (you can check the functions in the source code of shule.py to find out exactly what they do, if you want):
• " \n":"&self.add_spaces(None, self.before_compose)"
• "!!":"&self.add_html_exclamation(None, self.before_compose)"
• "''":"&self.add_squotes(None, self.before_compose)"
• "()":"&self.add_parentheses(None, self.before_compose)"
• "**":"&self.add_asterisks(None, self.before_compose)"
• "--":"&self.add_emdashes(None, self.before_compose)"
• "//":"&self.add_double_slashes(None, self.before_compose)"
• "/\n":"&self.add_slashes(None, self.before_compose)"
• "<>":"&self.add_grle(None, self.before_compose)"
• "??":"&self.add_html_question(None, self.before_compose)"
• "[]":"&self.add_brackets(None, self.before_compose)"
• "\"\"":"&self.add_dquotes(None, self.before_compose)"
• "_\n":"&self.add_underscores(None, self.before_compose)"
• "__":"&self.add_double_underscores(None, self.before_compose)"
• "abc":"&self.set_all_backgrounds()"
• "afc":"&self.set_all_foregrounds()"
• "asc":"&self.sort_ascending()"
• "atbc":"&self.set_atbg()"
• "atfc":"&self.set_atfg()"
• "ca":"&self.calc_age()"
• "cc2d":"&self.convert_counting_system_to_dec()"
• "cc2n":"&self.convert_counting_system_to_num()"
• "cf":"&self.copy_filepath_to_clipboard()"
• "ckr":"&self.compose_key_reference()"
• "clh":"&self.clipboard_history()"
• "cma":"&self.clear_margins()"
• "csd":"&self.counting_system2text()"
• "cse":"&self.text2counting_system()"
• "d2p":"&self.dectext2pwcounting_system()"
• "daf":"&self.dearmor_file()"
• "das":"&self.dearmor_selection()"
• "dcf":"&self.decrypt_file()"
• "del":"&self.delete_file()"
• "des":"&self.sort_descending()"
• "dfe":"&self.set_dir_file_ext()"
• "dfo":"&self.open_dir_file()"
• "dow":"&self.dl()"
• "ds":"&self.decrypt_selection()"
• "ead":"&self.enarmor_folder()"
• "eal":"&self.enarmor_file()"
• "eas":"&self.enarmor_selection()"
• "eas":"&self.encrypt_asymmetric_file()"
• "efa":"&self.encrypt_folder_asymmetric()"
• "efs":"&self.encrypt_folder_symmetric()"
• "ere":"&self.edit_re_functions()"
• "esa":"&self.selection_asymmetric()"
• "esf":"&self.encrypt_symmetric_file()"
• "ess":"&self.selection_symmetric()"
• "fap":"&self.format_all_plain_text_handler()"
• "fem":"&self.insert_random_female_name(None, self.before_compose)"
• "fful":"&self.insert_random_female_both(None, self.before_compose)"
• "ful":"&self.insert_random_real_name_both(None, self.before_compose)"
• "giv":"&self.insert_random_real_name(None, self.before_compose)"
• "glo":"&self.list_index_keys(local=False)"
• "glp":"&self.glob_path()"
• "grs":"&self.gpg_recipient_settings()"
• "h1":"&self.add_html_h1(None, self.before_compose)"
• "h2":"&self.add_html_h2(None, self.before_compose)"
• "h3":"&self.add_html_h3(None, self.before_compose)"
• "h4":"&self.add_html_h4(None, self.before_compose)"
• "h5":"&self.add_html_h5(None, self.before_compose)"
• "h6":"&self.add_html_h6(None, self.before_compose)"
• "h7":"&self.add_html_h7(None, self.before_compose)"
• "h8":"&self.add_html_h8(None, self.before_compose)"
• "ha":"&self.add_html_anchor(None, self.before_compose)"
• "hb":"&self.add_html_bold(None, self.before_compose)"
• "hce":"&self.add_html_center(None, self.before_compose)"
• "hco":"&self.add_html_comment(None, self.before_compose)"
• "hdi":"&self.add_html_div(None, self.before_compose)"
• "hh":"&self.add_html_html(None, self.before_compose)"
• "hi":"&self.add_html_italic(None, self.before_compose)"
• "hl":"&self.add_html_link(None, self.before_compose)"
• "ho":"&self.add_html_overstrike(None, self.before_compose)"
• "hpa":"&self.add_html_paragraph(None, self.before_compose)"
• "hpr":"&self.add_html_pre(None, self.before_compose)"
• "hsp":"&self.add_html_span(None, self.before_compose)"
• "hss":"&self.set_hbg()"
• "hst":"&self.set_ht()"
• "hta":"&self.add_html_table(None, self.before_compose)"
• "htd":"&self.add_html_td(None, self.before_compose)"
• "htr":"&self.add_html_tr(None, self.before_compose)"
• "hu":"&self.add_html_underline(None, self.before_compose)"
• "idp":"&self.insert_folderpath()"
• "ife":"&self.insert_random_etext(format=True)"
• "ifp":"&self.insert_filepath()"
• "ige":"&self.insert_random_etext(format=False)"
• "irn":"&self.insert_random_names(None, self.before_compose)"
• "irr":"&self.insert_random_real_names(None, self.before_compose)"
• "itp":"&self.insert_path()"
• "lct":"&self.load_color_theme()"
• "loc":"&self.list_index_keys(local=True)"
• "mal":"&self.insert_random_male_name(None, self.before_compose)"
• "mbc":"&self.set_mbg()"
• "mfc":"&self.set_mfg()"
• "mful":"&self.insert_random_male_both(None, self.before_compose)"
• "oma":"&self.open_maximized()"
• "pas":"&self.paste_no_query()" [Paste with URL queries removed]
• "pre":"&self.reverse_order(gr=False)"
• "psa":"&self.sort_ascending(gr=False)"
• "psd":"&self.sort_descending(gr=False)"
• "psh":"&self.shuffle(gr=False)"
• "qp":"&self.quote_path()"
• "ran":"&self.insert_random_name(None, self.before_compose)"
• "rch":"&self.restore_compose_scheme()"
• "rco":"&self.reset_compose_gui()"
• "rcs":"&self.reset_compose_gui()"
• "rd":"&self.random_dice()"
• "ren":"&self.rename()"
• "ret":"&self.reverse_text()"
• "rev":"&self.reverse_order()"
• "rft":"&self.refresh_tab()"
• "rn":"&self.random_number()"
• "rqu":"&self.remove_queries()" [Remove URL queries from a string.]
• "rrd":"&self.random_dice(repeat=True)"
• "rrn":"&self.random_number(repeat=True)"
• "rud":"&self.reset_user_data()"
• "sbbc":"&self.set_sbbg()"
• "sbfc":"&self.set_sbfg()"
• "sbg":"&self.set_bg()"
• "scr":"&self.scripture_ref(use_network=True)"
• "scs":"&self.set_counting_system()"
• "sct":"&self.save_color_theme()"
• "send":"&self.email()"
• "setd":"&self.set_database()"
• "sete":"&self.set_email()"
• "sfg":"&self.set_bg()"
• "shu":"&self.shuffle()"
• "sma":"&self.set_margins()"
• "smi":"&self.set_margin_increment()"
• "sog":"&self.set_owner_group()"
• "spw":"&self.spellcheck_word()"
• "stl":"&self.set_tab_length()"
• "stn":"&self.ds_ncs_bn()"
• "sts":"&self.ds_cs_bn()"
• "sur":"&self.insert_random_surname(None, self.before_compose)"
• "sws":"&self.start_webserver()"
• "tabc":"&self.set_tc()"
• "tas":"&self.toggle_asymmetric()"
• "tbc":"&self.set_tbg()"
• "tdo":"&self.toggle_decrypt_on_open()"
• "tfc":"&self.set_tfg()"
• "thi":"&self.toggle_clipboard_history()"
• "tic":"&self.set_insert_color()"
• "tim":"&self.timestamp()"
• "tis":"&self.set_insert()"
• "tm":"&self.toggle_margins()"
• "trc":"&self.toggle_re_cs_default()"
• "tss":"&self.toggle_save_search()"
• "ttr":"&self.toggle_transient_search()"
• "uco":"&self.update_compose_gui()"
• "uqp":"&self.unquote_path()"
• "ush":"&self.toggle_unique_shuffle()"
• "uso":"&self.toggle_unique_sort()"
• "vss":"&self.set_vbg()"
• "vst":"&self.set_vt()"
• "wde":"&self.ww_data_entry()"
• "whe":"&self.ww_html_export()"
• "{}":"&self.add_braces(None, self.before_compose)"