diff --git a/man/wofi-keys.7 b/man/wofi-keys.7 new file mode 100644 index 0000000..7fb2cd3 --- /dev/null +++ b/man/wofi-keys.7 @@ -0,0 +1,4545 @@ +.TH wofi\-keys 7 +.SH NAME +wofi \- Key names for custom binds + +.SH DESCRIPTION +This is a list of the key names that can be used for custom binding, these are taken from gdk/gdkkeysyms.h + +.SH KEY NAMES +.B BackSpace +.br +.B Tab +.br +.B Linefeed +.br +.B Clear +.br +.B Return +.br +.B Pause +.br +.B Scroll_Lock +.br +.B Sys_Req +.br +.B Escape +.br +.B Delete +.br +.B Multi_key +.br +.B Codeinput +.br +.B SingleCandidate +.br +.B MultipleCandidate +.br +.B PreviousCandidate +.br +.B Kanji +.br +.B Muhenkan +.br +.B Henkan_Mode +.br +.B Henkan +.br +.B Romaji +.br +.B Hiragana +.br +.B Katakana +.br +.B Hiragana_Katakana +.br +.B Zenkaku +.br +.B Hankaku +.br +.B Zenkaku_Hankaku +.br +.B Touroku +.br +.B Massyo +.br +.B Kana_Lock +.br +.B Kana_Shift +.br +.B Eisu_Shift +.br +.B Eisu_toggle +.br +.B Kanji_Bangou +.br +.B Zen_Koho +.br +.B Mae_Koho +.br +.B Home +.br +.B Left +.br +.B Up +.br +.B Right +.br +.B Down +.br +.B Prior +.br +.B Page_Up +.br +.B Next +.br +.B Page_Down +.br +.B End +.br +.B Begin +.br +.B Select +.br +.B Print +.br +.B Execute +.br +.B Insert +.br +.B Undo +.br +.B Redo +.br +.B Menu +.br +.B Find +.br +.B Cancel +.br +.B Help +.br +.B Break +.br +.B Mode_switch +.br +.B script_switch +.br +.B Num_Lock +.br +.B KP_Space +.br +.B KP_Tab +.br +.B KP_Enter +.br +.B KP_F1 +.br +.B KP_F2 +.br +.B KP_F3 +.br +.B KP_F4 +.br +.B KP_Home +.br +.B KP_Left +.br +.B KP_Up +.br +.B KP_Right +.br +.B KP_Down +.br +.B KP_Prior +.br +.B KP_Page_Up +.br +.B KP_Next +.br +.B KP_Page_Down +.br +.B KP_End +.br +.B KP_Begin +.br +.B KP_Insert +.br +.B KP_Delete +.br +.B KP_Equal +.br +.B KP_Multiply +.br +.B KP_Add +.br +.B KP_Separator +.br +.B KP_Subtract +.br +.B KP_Decimal +.br +.B KP_Divide +.br +.B KP_0 +.br +.B KP_1 +.br +.B KP_2 +.br +.B KP_3 +.br +.B KP_4 +.br +.B KP_5 +.br +.B KP_6 +.br +.B KP_7 +.br +.B KP_8 +.br +.B KP_9 +.br +.B F1 +.br +.B F2 +.br +.B F3 +.br +.B F4 +.br +.B F5 +.br +.B F6 +.br +.B F7 +.br +.B F8 +.br +.B F9 +.br +.B F10 +.br +.B F11 +.br +.B L1 +.br +.B F12 +.br +.B L2 +.br +.B F13 +.br +.B L3 +.br +.B F14 +.br +.B L4 +.br +.B F15 +.br +.B L5 +.br +.B F16 +.br +.B L6 +.br +.B F17 +.br +.B L7 +.br +.B F18 +.br +.B L8 +.br +.B F19 +.br +.B L9 +.br +.B F20 +.br +.B L10 +.br +.B F21 +.br +.B R1 +.br +.B F22 +.br +.B R2 +.br +.B F23 +.br +.B R3 +.br +.B F24 +.br +.B R4 +.br +.B F25 +.br +.B R5 +.br +.B F26 +.br +.B R6 +.br +.B F27 +.br +.B R7 +.br +.B F28 +.br +.B R8 +.br +.B F29 +.br +.B R9 +.br +.B F30 +.br +.B R10 +.br +.B F31 +.br +.B R11 +.br +.B F32 +.br +.B R12 +.br +.B F33 +.br +.B R13 +.br +.B F34 +.br +.B R14 +.br +.B F35 +.br +.B R15 +.br +.B Shift_L +.br +.B Shift_R +.br +.B Control_L +.br +.B Control_R +.br +.B Caps_Lock +.br +.B Shift_Lock +.br +.B Meta_L +.br +.B Meta_R +.br +.B Alt_L +.br +.B Alt_R +.br +.B Super_L +.br +.B Super_R +.br +.B Hyper_L +.br +.B Hyper_R +.br +.B ISO_Lock +.br +.B ISO_Level2_Latch +.br +.B ISO_Level3_Shift +.br +.B ISO_Level3_Latch +.br +.B ISO_Level3_Lock +.br +.B ISO_Level5_Shift +.br +.B ISO_Level5_Latch +.br +.B ISO_Level5_Lock +.br +.B ISO_Group_Shift +.br +.B ISO_Group_Latch +.br +.B ISO_Group_Lock +.br +.B ISO_Next_Group +.br +.B ISO_Next_Group_Lock +.br +.B ISO_Prev_Group +.br +.B ISO_Prev_Group_Lock +.br +.B ISO_First_Group +.br +.B ISO_First_Group_Lock +.br +.B ISO_Last_Group +.br +.B ISO_Last_Group_Lock +.br +.B ISO_Left_Tab +.br +.B ISO_Move_Line_Up +.br +.B ISO_Move_Line_Down +.br +.B ISO_Partial_Line_Up +.br +.B ISO_Partial_Line_Down +.br +.B ISO_Partial_Space_Left +.br +.B ISO_Partial_Space_Right +.br +.B ISO_Set_Margin_Left +.br +.B ISO_Set_Margin_Right +.br +.B ISO_Release_Margin_Left +.br +.B ISO_Release_Margin_Right +.br +.B ISO_Release_Both_Margins +.br +.B ISO_Fast_Cursor_Left +.br +.B ISO_Fast_Cursor_Right +.br +.B ISO_Fast_Cursor_Up +.br +.B ISO_Fast_Cursor_Down +.br +.B ISO_Continuous_Underline +.br +.B ISO_Discontinuous_Underline +.br +.B ISO_Emphasize +.br +.B ISO_Center_Object +.br +.B ISO_Enter +.br +.B dead_grave +.br +.B dead_acute +.br +.B dead_circumflex +.br +.B dead_tilde +.br +.B dead_perispomeni +.br +.B dead_macron +.br +.B dead_breve +.br +.B dead_abovedot +.br +.B dead_diaeresis +.br +.B dead_abovering +.br +.B dead_doubleacute +.br +.B dead_caron +.br +.B dead_cedilla +.br +.B dead_ogonek +.br +.B dead_iota +.br +.B dead_voiced_sound +.br +.B dead_semivoiced_sound +.br +.B dead_belowdot +.br +.B dead_hook +.br +.B dead_horn +.br +.B dead_stroke +.br +.B dead_abovecomma +.br +.B dead_psili +.br +.B dead_abovereversedcomma +.br +.B dead_dasia +.br +.B dead_doublegrave +.br +.B dead_belowring +.br +.B dead_belowmacron +.br +.B dead_belowcircumflex +.br +.B dead_belowtilde +.br +.B dead_belowbreve +.br +.B dead_belowdiaeresis +.br +.B dead_invertedbreve +.br +.B dead_belowcomma +.br +.B dead_currency +.br +.B dead_a +.br +.B dead_A +.br +.B dead_e +.br +.B dead_E +.br +.B dead_i +.br +.B dead_I +.br +.B dead_o +.br +.B dead_O +.br +.B dead_u +.br +.B dead_U +.br +.B dead_small_schwa +.br +.B dead_capital_schwa +.br +.B dead_greek +.br +.B First_Virtual_Screen +.br +.B Prev_Virtual_Screen +.br +.B Next_Virtual_Screen +.br +.B Last_Virtual_Screen +.br +.B Terminate_Server +.br +.B AccessX_Enable +.br +.B AccessX_Feedback_Enable +.br +.B RepeatKeys_Enable +.br +.B SlowKeys_Enable +.br +.B BounceKeys_Enable +.br +.B StickyKeys_Enable +.br +.B MouseKeys_Enable +.br +.B MouseKeys_Accel_Enable +.br +.B Overlay1_Enable +.br +.B Overlay2_Enable +.br +.B AudibleBell_Enable +.br +.B Pointer_Left +.br +.B Pointer_Right +.br +.B Pointer_Up +.br +.B Pointer_Down +.br +.B Pointer_UpLeft +.br +.B Pointer_UpRight +.br +.B Pointer_DownLeft +.br +.B Pointer_DownRight +.br +.B Pointer_Button_Dflt +.br +.B Pointer_Button1 +.br +.B Pointer_Button2 +.br +.B Pointer_Button3 +.br +.B Pointer_Button4 +.br +.B Pointer_Button5 +.br +.B Pointer_DblClick_Dflt +.br +.B Pointer_DblClick1 +.br +.B Pointer_DblClick2 +.br +.B Pointer_DblClick3 +.br +.B Pointer_DblClick4 +.br +.B Pointer_DblClick5 +.br +.B Pointer_Drag_Dflt +.br +.B Pointer_Drag1 +.br +.B Pointer_Drag2 +.br +.B Pointer_Drag3 +.br +.B Pointer_Drag4 +.br +.B Pointer_Drag5 +.br +.B Pointer_EnableKeys +.br +.B Pointer_Accelerate +.br +.B Pointer_DfltBtnNext +.br +.B Pointer_DfltBtnPrev +.br +.B ch +.br +.B Ch +.br +.B CH +.br +.B c_h +.br +.B C_h +.br +.B C_H +.br +.B 3270_Duplicate +.br +.B 3270_FieldMark +.br +.B 3270_Right2 +.br +.B 3270_Left2 +.br +.B 3270_BackTab +.br +.B 3270_EraseEOF +.br +.B 3270_EraseInput +.br +.B 3270_Reset +.br +.B 3270_Quit +.br +.B 3270_PA1 +.br +.B 3270_PA2 +.br +.B 3270_PA3 +.br +.B 3270_Test +.br +.B 3270_Attn +.br +.B 3270_CursorBlink +.br +.B 3270_AltCursor +.br +.B 3270_KeyClick +.br +.B 3270_Jump +.br +.B 3270_Ident +.br +.B 3270_Rule +.br +.B 3270_Copy +.br +.B 3270_Play +.br +.B 3270_Setup +.br +.B 3270_Record +.br +.B 3270_ChangeScreen +.br +.B 3270_DeleteWord +.br +.B 3270_ExSelect +.br +.B 3270_CursorSelect +.br +.B 3270_PrintScreen +.br +.B 3270_Enter +.br +.B space +.br +.B exclam +.br +.B quotedbl +.br +.B numbersign +.br +.B dollar +.br +.B percent +.br +.B ampersand +.br +.B apostrophe +.br +.B quoteright +.br +.B parenleft +.br +.B parenright +.br +.B asterisk +.br +.B plus +.br +.B comma +.br +.B minus +.br +.B period +.br +.B slash +.br +.B 0 +.br +.B 1 +.br +.B 2 +.br +.B 3 +.br +.B 4 +.br +.B 5 +.br +.B 6 +.br +.B 7 +.br +.B 8 +.br +.B 9 +.br +.B colon +.br +.B semicolon +.br +.B less +.br +.B equal +.br +.B greater +.br +.B question +.br +.B at +.br +.B A +.br +.B B +.br +.B C +.br +.B D +.br +.B E +.br +.B F +.br +.B G +.br +.B H +.br +.B I +.br +.B J +.br +.B K +.br +.B L +.br +.B M +.br +.B N +.br +.B O +.br +.B P +.br +.B Q +.br +.B R +.br +.B S +.br +.B T +.br +.B U +.br +.B V +.br +.B W +.br +.B X +.br +.B Y +.br +.B Z +.br +.B bracketleft +.br +.B backslash +.br +.B bracketright +.br +.B asciicircum +.br +.B underscore +.br +.B grave +.br +.B quoteleft +.br +.B a +.br +.B b +.br +.B c +.br +.B d +.br +.B e +.br +.B f +.br +.B g +.br +.B h +.br +.B i +.br +.B j +.br +.B k +.br +.B l +.br +.B m +.br +.B n +.br +.B o +.br +.B p +.br +.B q +.br +.B r +.br +.B s +.br +.B t +.br +.B u +.br +.B v +.br +.B w +.br +.B x +.br +.B y +.br +.B z +.br +.B braceleft +.br +.B bar +.br +.B braceright +.br +.B asciitilde +.br +.B nobreakspace +.br +.B exclamdown +.br +.B cent +.br +.B sterling +.br +.B currency +.br +.B yen +.br +.B brokenbar +.br +.B section +.br +.B diaeresis +.br +.B copyright +.br +.B ordfeminine +.br +.B guillemotleft +.br +.B notsign +.br +.B hyphen +.br +.B registered +.br +.B macron +.br +.B degree +.br +.B plusminus +.br +.B twosuperior +.br +.B threesuperior +.br +.B acute +.br +.B mu +.br +.B paragraph +.br +.B periodcentered +.br +.B cedilla +.br +.B onesuperior +.br +.B masculine +.br +.B guillemotright +.br +.B onequarter +.br +.B onehalf +.br +.B threequarters +.br +.B questiondown +.br +.B Agrave +.br +.B Aacute +.br +.B Acircumflex +.br +.B Atilde +.br +.B Adiaeresis +.br +.B Aring +.br +.B AE +.br +.B Ccedilla +.br +.B Egrave +.br +.B Eacute +.br +.B Ecircumflex +.br +.B Ediaeresis +.br +.B Igrave +.br +.B Iacute +.br +.B Icircumflex +.br +.B Idiaeresis +.br +.B ETH +.br +.B Eth +.br +.B Ntilde +.br +.B Ograve +.br +.B Oacute +.br +.B Ocircumflex +.br +.B Otilde +.br +.B Odiaeresis +.br +.B multiply +.br +.B Oslash +.br +.B Ooblique +.br +.B Ugrave +.br +.B Uacute +.br +.B Ucircumflex +.br +.B Udiaeresis +.br +.B Yacute +.br +.B THORN +.br +.B Thorn +.br +.B ssharp +.br +.B agrave +.br +.B aacute +.br +.B acircumflex +.br +.B atilde +.br +.B adiaeresis +.br +.B aring +.br +.B ae +.br +.B ccedilla +.br +.B egrave +.br +.B eacute +.br +.B ecircumflex +.br +.B ediaeresis +.br +.B igrave +.br +.B iacute +.br +.B icircumflex +.br +.B idiaeresis +.br +.B eth +.br +.B ntilde +.br +.B ograve +.br +.B oacute +.br +.B ocircumflex +.br +.B otilde +.br +.B odiaeresis +.br +.B division +.br +.B oslash +.br +.B ooblique +.br +.B ugrave +.br +.B uacute +.br +.B ucircumflex +.br +.B udiaeresis +.br +.B yacute +.br +.B thorn +.br +.B ydiaeresis +.br +.B Aogonek +.br +.B breve +.br +.B Lstroke +.br +.B Lcaron +.br +.B Sacute +.br +.B Scaron +.br +.B Scedilla +.br +.B Tcaron +.br +.B Zacute +.br +.B Zcaron +.br +.B Zabovedot +.br +.B aogonek +.br +.B ogonek +.br +.B lstroke +.br +.B lcaron +.br +.B sacute +.br +.B caron +.br +.B scaron +.br +.B scedilla +.br +.B tcaron +.br +.B zacute +.br +.B doubleacute +.br +.B zcaron +.br +.B zabovedot +.br +.B Racute +.br +.B Abreve +.br +.B Lacute +.br +.B Cacute +.br +.B Ccaron +.br +.B Eogonek +.br +.B Ecaron +.br +.B Dcaron +.br +.B Dstroke +.br +.B Nacute +.br +.B Ncaron +.br +.B Odoubleacute +.br +.B Rcaron +.br +.B Uring +.br +.B Udoubleacute +.br +.B Tcedilla +.br +.B racute +.br +.B abreve +.br +.B lacute +.br +.B cacute +.br +.B ccaron +.br +.B eogonek +.br +.B ecaron +.br +.B dcaron +.br +.B dstroke +.br +.B nacute +.br +.B ncaron +.br +.B odoubleacute +.br +.B rcaron +.br +.B uring +.br +.B udoubleacute +.br +.B tcedilla +.br +.B abovedot +.br +.B Hstroke +.br +.B Hcircumflex +.br +.B Iabovedot +.br +.B Gbreve +.br +.B Jcircumflex +.br +.B hstroke +.br +.B hcircumflex +.br +.B idotless +.br +.B gbreve +.br +.B jcircumflex +.br +.B Cabovedot +.br +.B Ccircumflex +.br +.B Gabovedot +.br +.B Gcircumflex +.br +.B Ubreve +.br +.B Scircumflex +.br +.B cabovedot +.br +.B ccircumflex +.br +.B gabovedot +.br +.B gcircumflex +.br +.B ubreve +.br +.B scircumflex +.br +.B kra +.br +.B kappa +.br +.B Rcedilla +.br +.B Itilde +.br +.B Lcedilla +.br +.B Emacron +.br +.B Gcedilla +.br +.B Tslash +.br +.B rcedilla +.br +.B itilde +.br +.B lcedilla +.br +.B emacron +.br +.B gcedilla +.br +.B tslash +.br +.B ENG +.br +.B eng +.br +.B Amacron +.br +.B Iogonek +.br +.B Eabovedot +.br +.B Imacron +.br +.B Ncedilla +.br +.B Omacron +.br +.B Kcedilla +.br +.B Uogonek +.br +.B Utilde +.br +.B Umacron +.br +.B amacron +.br +.B iogonek +.br +.B eabovedot +.br +.B imacron +.br +.B ncedilla +.br +.B omacron +.br +.B kcedilla +.br +.B uogonek +.br +.B utilde +.br +.B umacron +.br +.B Wcircumflex +.br +.B wcircumflex +.br +.B Ycircumflex +.br +.B ycircumflex +.br +.B Babovedot +.br +.B babovedot +.br +.B Dabovedot +.br +.B dabovedot +.br +.B Fabovedot +.br +.B fabovedot +.br +.B Mabovedot +.br +.B mabovedot +.br +.B Pabovedot +.br +.B pabovedot +.br +.B Sabovedot +.br +.B sabovedot +.br +.B Tabovedot +.br +.B tabovedot +.br +.B Wgrave +.br +.B wgrave +.br +.B Wacute +.br +.B wacute +.br +.B Wdiaeresis +.br +.B wdiaeresis +.br +.B Ygrave +.br +.B ygrave +.br +.B OE +.br +.B oe +.br +.B Ydiaeresis +.br +.B overline +.br +.B kana_fullstop +.br +.B kana_openingbracket +.br +.B kana_closingbracket +.br +.B kana_comma +.br +.B kana_conjunctive +.br +.B kana_middledot +.br +.B kana_WO +.br +.B kana_a +.br +.B kana_i +.br +.B kana_u +.br +.B kana_e +.br +.B kana_o +.br +.B kana_ya +.br +.B kana_yu +.br +.B kana_yo +.br +.B kana_tsu +.br +.B kana_tu +.br +.B prolongedsound +.br +.B kana_A +.br +.B kana_I +.br +.B kana_U +.br +.B kana_E +.br +.B kana_O +.br +.B kana_KA +.br +.B kana_KI +.br +.B kana_KU +.br +.B kana_KE +.br +.B kana_KO +.br +.B kana_SA +.br +.B kana_SHI +.br +.B kana_SU +.br +.B kana_SE +.br +.B kana_SO +.br +.B kana_TA +.br +.B kana_CHI +.br +.B kana_TI +.br +.B kana_TSU +.br +.B kana_TU +.br +.B kana_TE +.br +.B kana_TO +.br +.B kana_NA +.br +.B kana_NI +.br +.B kana_NU +.br +.B kana_NE +.br +.B kana_NO +.br +.B kana_HA +.br +.B kana_HI +.br +.B kana_FU +.br +.B kana_HU +.br +.B kana_HE +.br +.B kana_HO +.br +.B kana_MA +.br +.B kana_MI +.br +.B kana_MU +.br +.B kana_ME +.br +.B kana_MO +.br +.B kana_YA +.br +.B kana_YU +.br +.B kana_YO +.br +.B kana_RA +.br +.B kana_RI +.br +.B kana_RU +.br +.B kana_RE +.br +.B kana_RO +.br +.B kana_WA +.br +.B kana_N +.br +.B voicedsound +.br +.B semivoicedsound +.br +.B kana_switch +.br +.B Farsi_0 +.br +.B Farsi_1 +.br +.B Farsi_2 +.br +.B Farsi_3 +.br +.B Farsi_4 +.br +.B Farsi_5 +.br +.B Farsi_6 +.br +.B Farsi_7 +.br +.B Farsi_8 +.br +.B Farsi_9 +.br +.B Arabic_percent +.br +.B Arabic_superscript_alef +.br +.B Arabic_tteh +.br +.B Arabic_peh +.br +.B Arabic_tcheh +.br +.B Arabic_ddal +.br +.B Arabic_rreh +.br +.B Arabic_comma +.br +.B Arabic_fullstop +.br +.B Arabic_0 +.br +.B Arabic_1 +.br +.B Arabic_2 +.br +.B Arabic_3 +.br +.B Arabic_4 +.br +.B Arabic_5 +.br +.B Arabic_6 +.br +.B Arabic_7 +.br +.B Arabic_8 +.br +.B Arabic_9 +.br +.B Arabic_semicolon +.br +.B Arabic_question_mark +.br +.B Arabic_hamza +.br +.B Arabic_maddaonalef +.br +.B Arabic_hamzaonalef +.br +.B Arabic_hamzaonwaw +.br +.B Arabic_hamzaunderalef +.br +.B Arabic_hamzaonyeh +.br +.B Arabic_alef +.br +.B Arabic_beh +.br +.B Arabic_tehmarbuta +.br +.B Arabic_teh +.br +.B Arabic_theh +.br +.B Arabic_jeem +.br +.B Arabic_hah +.br +.B Arabic_khah +.br +.B Arabic_dal +.br +.B Arabic_thal +.br +.B Arabic_ra +.br +.B Arabic_zain +.br +.B Arabic_seen +.br +.B Arabic_sheen +.br +.B Arabic_sad +.br +.B Arabic_dad +.br +.B Arabic_tah +.br +.B Arabic_zah +.br +.B Arabic_ain +.br +.B Arabic_ghain +.br +.B Arabic_tatweel +.br +.B Arabic_feh +.br +.B Arabic_qaf +.br +.B Arabic_kaf +.br +.B Arabic_lam +.br +.B Arabic_meem +.br +.B Arabic_noon +.br +.B Arabic_ha +.br +.B Arabic_heh +.br +.B Arabic_waw +.br +.B Arabic_alefmaksura +.br +.B Arabic_yeh +.br +.B Arabic_fathatan +.br +.B Arabic_dammatan +.br +.B Arabic_kasratan +.br +.B Arabic_fatha +.br +.B Arabic_damma +.br +.B Arabic_kasra +.br +.B Arabic_shadda +.br +.B Arabic_sukun +.br +.B Arabic_madda_above +.br +.B Arabic_hamza_above +.br +.B Arabic_hamza_below +.br +.B Arabic_jeh +.br +.B Arabic_veh +.br +.B Arabic_keheh +.br +.B Arabic_gaf +.br +.B Arabic_noon_ghunna +.br +.B Arabic_heh_doachashmee +.br +.B Farsi_yeh +.br +.B Arabic_farsi_yeh +.br +.B Arabic_yeh_baree +.br +.B Arabic_heh_goal +.br +.B Arabic_switch +.br +.B Cyrillic_GHE_bar +.br +.B Cyrillic_ghe_bar +.br +.B Cyrillic_ZHE_descender +.br +.B Cyrillic_zhe_descender +.br +.B Cyrillic_KA_descender +.br +.B Cyrillic_ka_descender +.br +.B Cyrillic_KA_vertstroke +.br +.B Cyrillic_ka_vertstroke +.br +.B Cyrillic_EN_descender +.br +.B Cyrillic_en_descender +.br +.B Cyrillic_U_straight +.br +.B Cyrillic_u_straight +.br +.B Cyrillic_U_straight_bar +.br +.B Cyrillic_u_straight_bar +.br +.B Cyrillic_HA_descender +.br +.B Cyrillic_ha_descender +.br +.B Cyrillic_CHE_descender +.br +.B Cyrillic_che_descender +.br +.B Cyrillic_CHE_vertstroke +.br +.B Cyrillic_che_vertstroke +.br +.B Cyrillic_SHHA +.br +.B Cyrillic_shha +.br +.B Cyrillic_SCHWA +.br +.B Cyrillic_schwa +.br +.B Cyrillic_I_macron +.br +.B Cyrillic_i_macron +.br +.B Cyrillic_O_bar +.br +.B Cyrillic_o_bar +.br +.B Cyrillic_U_macron +.br +.B Cyrillic_u_macron +.br +.B Serbian_dje +.br +.B Macedonia_gje +.br +.B Cyrillic_io +.br +.B Ukrainian_ie +.br +.B Ukranian_je +.br +.B Macedonia_dse +.br +.B Ukrainian_i +.br +.B Ukranian_i +.br +.B Ukrainian_yi +.br +.B Ukranian_yi +.br +.B Cyrillic_je +.br +.B Serbian_je +.br +.B Cyrillic_lje +.br +.B Serbian_lje +.br +.B Cyrillic_nje +.br +.B Serbian_nje +.br +.B Serbian_tshe +.br +.B Macedonia_kje +.br +.B Ukrainian_ghe_with_upturn +.br +.B Byelorussian_shortu +.br +.B Cyrillic_dzhe +.br +.B Serbian_dze +.br +.B numerosign +.br +.B Serbian_DJE +.br +.B Macedonia_GJE +.br +.B Cyrillic_IO +.br +.B Ukrainian_IE +.br +.B Ukranian_JE +.br +.B Macedonia_DSE +.br +.B Ukrainian_I +.br +.B Ukranian_I +.br +.B Ukrainian_YI +.br +.B Ukranian_YI +.br +.B Cyrillic_JE +.br +.B Serbian_JE +.br +.B Cyrillic_LJE +.br +.B Serbian_LJE +.br +.B Cyrillic_NJE +.br +.B Serbian_NJE +.br +.B Serbian_TSHE +.br +.B Macedonia_KJE +.br +.B Ukrainian_GHE_WITH_UPTURN +.br +.B Byelorussian_SHORTU +.br +.B Cyrillic_DZHE +.br +.B Serbian_DZE +.br +.B Cyrillic_yu +.br +.B Cyrillic_a +.br +.B Cyrillic_be +.br +.B Cyrillic_tse +.br +.B Cyrillic_de +.br +.B Cyrillic_ie +.br +.B Cyrillic_ef +.br +.B Cyrillic_ghe +.br +.B Cyrillic_ha +.br +.B Cyrillic_i +.br +.B Cyrillic_shorti +.br +.B Cyrillic_ka +.br +.B Cyrillic_el +.br +.B Cyrillic_em +.br +.B Cyrillic_en +.br +.B Cyrillic_o +.br +.B Cyrillic_pe +.br +.B Cyrillic_ya +.br +.B Cyrillic_er +.br +.B Cyrillic_es +.br +.B Cyrillic_te +.br +.B Cyrillic_u +.br +.B Cyrillic_zhe +.br +.B Cyrillic_ve +.br +.B Cyrillic_softsign +.br +.B Cyrillic_yeru +.br +.B Cyrillic_ze +.br +.B Cyrillic_sha +.br +.B Cyrillic_e +.br +.B Cyrillic_shcha +.br +.B Cyrillic_che +.br +.B Cyrillic_hardsign +.br +.B Cyrillic_YU +.br +.B Cyrillic_A +.br +.B Cyrillic_BE +.br +.B Cyrillic_TSE +.br +.B Cyrillic_DE +.br +.B Cyrillic_IE +.br +.B Cyrillic_EF +.br +.B Cyrillic_GHE +.br +.B Cyrillic_HA +.br +.B Cyrillic_I +.br +.B Cyrillic_SHORTI +.br +.B Cyrillic_KA +.br +.B Cyrillic_EL +.br +.B Cyrillic_EM +.br +.B Cyrillic_EN +.br +.B Cyrillic_O +.br +.B Cyrillic_PE +.br +.B Cyrillic_YA +.br +.B Cyrillic_ER +.br +.B Cyrillic_ES +.br +.B Cyrillic_TE +.br +.B Cyrillic_U +.br +.B Cyrillic_ZHE +.br +.B Cyrillic_VE +.br +.B Cyrillic_SOFTSIGN +.br +.B Cyrillic_YERU +.br +.B Cyrillic_ZE +.br +.B Cyrillic_SHA +.br +.B Cyrillic_E +.br +.B Cyrillic_SHCHA +.br +.B Cyrillic_CHE +.br +.B Cyrillic_HARDSIGN +.br +.B Greek_ALPHAaccent +.br +.B Greek_EPSILONaccent +.br +.B Greek_ETAaccent +.br +.B Greek_IOTAaccent +.br +.B Greek_IOTAdieresis +.br +.B Greek_IOTAdiaeresis +.br +.B Greek_OMICRONaccent +.br +.B Greek_UPSILONaccent +.br +.B Greek_UPSILONdieresis +.br +.B Greek_OMEGAaccent +.br +.B Greek_accentdieresis +.br +.B Greek_horizbar +.br +.B Greek_alphaaccent +.br +.B Greek_epsilonaccent +.br +.B Greek_etaaccent +.br +.B Greek_iotaaccent +.br +.B Greek_iotadieresis +.br +.B Greek_iotaaccentdieresis +.br +.B Greek_omicronaccent +.br +.B Greek_upsilonaccent +.br +.B Greek_upsilondieresis +.br +.B Greek_upsilonaccentdieresis +.br +.B Greek_omegaaccent +.br +.B Greek_ALPHA +.br +.B Greek_BETA +.br +.B Greek_GAMMA +.br +.B Greek_DELTA +.br +.B Greek_EPSILON +.br +.B Greek_ZETA +.br +.B Greek_ETA +.br +.B Greek_THETA +.br +.B Greek_IOTA +.br +.B Greek_KAPPA +.br +.B Greek_LAMDA +.br +.B Greek_LAMBDA +.br +.B Greek_MU +.br +.B Greek_NU +.br +.B Greek_XI +.br +.B Greek_OMICRON +.br +.B Greek_PI +.br +.B Greek_RHO +.br +.B Greek_SIGMA +.br +.B Greek_TAU +.br +.B Greek_UPSILON +.br +.B Greek_PHI +.br +.B Greek_CHI +.br +.B Greek_PSI +.br +.B Greek_OMEGA +.br +.B Greek_alpha +.br +.B Greek_beta +.br +.B Greek_gamma +.br +.B Greek_delta +.br +.B Greek_epsilon +.br +.B Greek_zeta +.br +.B Greek_eta +.br +.B Greek_theta +.br +.B Greek_iota +.br +.B Greek_kappa +.br +.B Greek_lamda +.br +.B Greek_lambda +.br +.B Greek_mu +.br +.B Greek_nu +.br +.B Greek_xi +.br +.B Greek_omicron +.br +.B Greek_pi +.br +.B Greek_rho +.br +.B Greek_sigma +.br +.B Greek_finalsmallsigma +.br +.B Greek_tau +.br +.B Greek_upsilon +.br +.B Greek_phi +.br +.B Greek_chi +.br +.B Greek_psi +.br +.B Greek_omega +.br +.B Greek_switch +.br +.B leftradical +.br +.B topleftradical +.br +.B horizconnector +.br +.B topintegral +.br +.B botintegral +.br +.B vertconnector +.br +.B topleftsqbracket +.br +.B botleftsqbracket +.br +.B toprightsqbracket +.br +.B botrightsqbracket +.br +.B topleftparens +.br +.B botleftparens +.br +.B toprightparens +.br +.B botrightparens +.br +.B leftmiddlecurlybrace +.br +.B rightmiddlecurlybrace +.br +.B topleftsummation +.br +.B botleftsummation +.br +.B topvertsummationconnector +.br +.B botvertsummationconnector +.br +.B toprightsummation +.br +.B botrightsummation +.br +.B rightmiddlesummation +.br +.B lessthanequal +.br +.B notequal +.br +.B greaterthanequal +.br +.B integral +.br +.B therefore +.br +.B variation +.br +.B infinity +.br +.B nabla +.br +.B approximate +.br +.B similarequal +.br +.B ifonlyif +.br +.B implies +.br +.B identical +.br +.B radical +.br +.B includedin +.br +.B includes +.br +.B intersection +.br +.B union +.br +.B logicaland +.br +.B logicalor +.br +.B partialderivative +.br +.B function +.br +.B leftarrow +.br +.B uparrow +.br +.B rightarrow +.br +.B downarrow +.br +.B blank +.br +.B soliddiamond +.br +.B checkerboard +.br +.B ht +.br +.B ff +.br +.B cr +.br +.B lf +.br +.B nl +.br +.B vt +.br +.B lowrightcorner +.br +.B uprightcorner +.br +.B upleftcorner +.br +.B lowleftcorner +.br +.B crossinglines +.br +.B horizlinescan1 +.br +.B horizlinescan3 +.br +.B horizlinescan5 +.br +.B horizlinescan7 +.br +.B horizlinescan9 +.br +.B leftt +.br +.B rightt +.br +.B bott +.br +.B topt +.br +.B vertbar +.br +.B emspace +.br +.B enspace +.br +.B em3space +.br +.B em4space +.br +.B digitspace +.br +.B punctspace +.br +.B thinspace +.br +.B hairspace +.br +.B emdash +.br +.B endash +.br +.B signifblank +.br +.B ellipsis +.br +.B doubbaselinedot +.br +.B onethird +.br +.B twothirds +.br +.B onefifth +.br +.B twofifths +.br +.B threefifths +.br +.B fourfifths +.br +.B onesixth +.br +.B fivesixths +.br +.B careof +.br +.B figdash +.br +.B leftanglebracket +.br +.B decimalpoint +.br +.B rightanglebracket +.br +.B marker +.br +.B oneeighth +.br +.B threeeighths +.br +.B fiveeighths +.br +.B seveneighths +.br +.B trademark +.br +.B signaturemark +.br +.B trademarkincircle +.br +.B leftopentriangle +.br +.B rightopentriangle +.br +.B emopencircle +.br +.B emopenrectangle +.br +.B leftsinglequotemark +.br +.B rightsinglequotemark +.br +.B leftdoublequotemark +.br +.B rightdoublequotemark +.br +.B prescription +.br +.B permille +.br +.B minutes +.br +.B seconds +.br +.B latincross +.br +.B hexagram +.br +.B filledrectbullet +.br +.B filledlefttribullet +.br +.B filledrighttribullet +.br +.B emfilledcircle +.br +.B emfilledrect +.br +.B enopencircbullet +.br +.B enopensquarebullet +.br +.B openrectbullet +.br +.B opentribulletup +.br +.B opentribulletdown +.br +.B openstar +.br +.B enfilledcircbullet +.br +.B enfilledsqbullet +.br +.B filledtribulletup +.br +.B filledtribulletdown +.br +.B leftpointer +.br +.B rightpointer +.br +.B club +.br +.B diamond +.br +.B heart +.br +.B maltesecross +.br +.B dagger +.br +.B doubledagger +.br +.B checkmark +.br +.B ballotcross +.br +.B musicalsharp +.br +.B musicalflat +.br +.B malesymbol +.br +.B femalesymbol +.br +.B telephone +.br +.B telephonerecorder +.br +.B phonographcopyright +.br +.B caret +.br +.B singlelowquotemark +.br +.B doublelowquotemark +.br +.B cursor +.br +.B leftcaret +.br +.B rightcaret +.br +.B downcaret +.br +.B upcaret +.br +.B overbar +.br +.B downtack +.br +.B upshoe +.br +.B downstile +.br +.B underbar +.br +.B jot +.br +.B quad +.br +.B uptack +.br +.B circle +.br +.B upstile +.br +.B downshoe +.br +.B rightshoe +.br +.B leftshoe +.br +.B lefttack +.br +.B righttack +.br +.B hebrew_doublelowline +.br +.B hebrew_aleph +.br +.B hebrew_bet +.br +.B hebrew_beth +.br +.B hebrew_gimel +.br +.B hebrew_gimmel +.br +.B hebrew_dalet +.br +.B hebrew_daleth +.br +.B hebrew_he +.br +.B hebrew_waw +.br +.B hebrew_zain +.br +.B hebrew_zayin +.br +.B hebrew_chet +.br +.B hebrew_het +.br +.B hebrew_tet +.br +.B hebrew_teth +.br +.B hebrew_yod +.br +.B hebrew_finalkaph +.br +.B hebrew_kaph +.br +.B hebrew_lamed +.br +.B hebrew_finalmem +.br +.B hebrew_mem +.br +.B hebrew_finalnun +.br +.B hebrew_nun +.br +.B hebrew_samech +.br +.B hebrew_samekh +.br +.B hebrew_ayin +.br +.B hebrew_finalpe +.br +.B hebrew_pe +.br +.B hebrew_finalzade +.br +.B hebrew_finalzadi +.br +.B hebrew_zade +.br +.B hebrew_zadi +.br +.B hebrew_qoph +.br +.B hebrew_kuf +.br +.B hebrew_resh +.br +.B hebrew_shin +.br +.B hebrew_taw +.br +.B hebrew_taf +.br +.B Hebrew_switch +.br +.B Thai_kokai +.br +.B Thai_khokhai +.br +.B Thai_khokhuat +.br +.B Thai_khokhwai +.br +.B Thai_khokhon +.br +.B Thai_khorakhang +.br +.B Thai_ngongu +.br +.B Thai_chochan +.br +.B Thai_choching +.br +.B Thai_chochang +.br +.B Thai_soso +.br +.B Thai_chochoe +.br +.B Thai_yoying +.br +.B Thai_dochada +.br +.B Thai_topatak +.br +.B Thai_thothan +.br +.B Thai_thonangmontho +.br +.B Thai_thophuthao +.br +.B Thai_nonen +.br +.B Thai_dodek +.br +.B Thai_totao +.br +.B Thai_thothung +.br +.B Thai_thothahan +.br +.B Thai_thothong +.br +.B Thai_nonu +.br +.B Thai_bobaimai +.br +.B Thai_popla +.br +.B Thai_phophung +.br +.B Thai_fofa +.br +.B Thai_phophan +.br +.B Thai_fofan +.br +.B Thai_phosamphao +.br +.B Thai_moma +.br +.B Thai_yoyak +.br +.B Thai_rorua +.br +.B Thai_ru +.br +.B Thai_loling +.br +.B Thai_lu +.br +.B Thai_wowaen +.br +.B Thai_sosala +.br +.B Thai_sorusi +.br +.B Thai_sosua +.br +.B Thai_hohip +.br +.B Thai_lochula +.br +.B Thai_oang +.br +.B Thai_honokhuk +.br +.B Thai_paiyannoi +.br +.B Thai_saraa +.br +.B Thai_maihanakat +.br +.B Thai_saraaa +.br +.B Thai_saraam +.br +.B Thai_sarai +.br +.B Thai_saraii +.br +.B Thai_saraue +.br +.B Thai_sarauee +.br +.B Thai_sarau +.br +.B Thai_sarauu +.br +.B Thai_phinthu +.br +.B Thai_maihanakat_maitho +.br +.B Thai_baht +.br +.B Thai_sarae +.br +.B Thai_saraae +.br +.B Thai_sarao +.br +.B Thai_saraaimaimuan +.br +.B Thai_saraaimaimalai +.br +.B Thai_lakkhangyao +.br +.B Thai_maiyamok +.br +.B Thai_maitaikhu +.br +.B Thai_maiek +.br +.B Thai_maitho +.br +.B Thai_maitri +.br +.B Thai_maichattawa +.br +.B Thai_thanthakhat +.br +.B Thai_nikhahit +.br +.B Thai_leksun +.br +.B Thai_leknung +.br +.B Thai_leksong +.br +.B Thai_leksam +.br +.B Thai_leksi +.br +.B Thai_lekha +.br +.B Thai_lekhok +.br +.B Thai_lekchet +.br +.B Thai_lekpaet +.br +.B Thai_lekkao +.br +.B Hangul +.br +.B Hangul_Start +.br +.B Hangul_End +.br +.B Hangul_Hanja +.br +.B Hangul_Jamo +.br +.B Hangul_Romaja +.br +.B Hangul_Codeinput +.br +.B Hangul_Jeonja +.br +.B Hangul_Banja +.br +.B Hangul_PreHanja +.br +.B Hangul_PostHanja +.br +.B Hangul_SingleCandidate +.br +.B Hangul_MultipleCandidate +.br +.B Hangul_PreviousCandidate +.br +.B Hangul_Special +.br +.B Hangul_switch +.br +.B Hangul_Kiyeog +.br +.B Hangul_SsangKiyeog +.br +.B Hangul_KiyeogSios +.br +.B Hangul_Nieun +.br +.B Hangul_NieunJieuj +.br +.B Hangul_NieunHieuh +.br +.B Hangul_Dikeud +.br +.B Hangul_SsangDikeud +.br +.B Hangul_Rieul +.br +.B Hangul_RieulKiyeog +.br +.B Hangul_RieulMieum +.br +.B Hangul_RieulPieub +.br +.B Hangul_RieulSios +.br +.B Hangul_RieulTieut +.br +.B Hangul_RieulPhieuf +.br +.B Hangul_RieulHieuh +.br +.B Hangul_Mieum +.br +.B Hangul_Pieub +.br +.B Hangul_SsangPieub +.br +.B Hangul_PieubSios +.br +.B Hangul_Sios +.br +.B Hangul_SsangSios +.br +.B Hangul_Ieung +.br +.B Hangul_Jieuj +.br +.B Hangul_SsangJieuj +.br +.B Hangul_Cieuc +.br +.B Hangul_Khieuq +.br +.B Hangul_Tieut +.br +.B Hangul_Phieuf +.br +.B Hangul_Hieuh +.br +.B Hangul_A +.br +.B Hangul_AE +.br +.B Hangul_YA +.br +.B Hangul_YAE +.br +.B Hangul_EO +.br +.B Hangul_E +.br +.B Hangul_YEO +.br +.B Hangul_YE +.br +.B Hangul_O +.br +.B Hangul_WA +.br +.B Hangul_WAE +.br +.B Hangul_OE +.br +.B Hangul_YO +.br +.B Hangul_U +.br +.B Hangul_WEO +.br +.B Hangul_WE +.br +.B Hangul_WI +.br +.B Hangul_YU +.br +.B Hangul_EU +.br +.B Hangul_YI +.br +.B Hangul_I +.br +.B Hangul_J_Kiyeog +.br +.B Hangul_J_SsangKiyeog +.br +.B Hangul_J_KiyeogSios +.br +.B Hangul_J_Nieun +.br +.B Hangul_J_NieunJieuj +.br +.B Hangul_J_NieunHieuh +.br +.B Hangul_J_Dikeud +.br +.B Hangul_J_Rieul +.br +.B Hangul_J_RieulKiyeog +.br +.B Hangul_J_RieulMieum +.br +.B Hangul_J_RieulPieub +.br +.B Hangul_J_RieulSios +.br +.B Hangul_J_RieulTieut +.br +.B Hangul_J_RieulPhieuf +.br +.B Hangul_J_RieulHieuh +.br +.B Hangul_J_Mieum +.br +.B Hangul_J_Pieub +.br +.B Hangul_J_PieubSios +.br +.B Hangul_J_Sios +.br +.B Hangul_J_SsangSios +.br +.B Hangul_J_Ieung +.br +.B Hangul_J_Jieuj +.br +.B Hangul_J_Cieuc +.br +.B Hangul_J_Khieuq +.br +.B Hangul_J_Tieut +.br +.B Hangul_J_Phieuf +.br +.B Hangul_J_Hieuh +.br +.B Hangul_RieulYeorinHieuh +.br +.B Hangul_SunkyeongeumMieum +.br +.B Hangul_SunkyeongeumPieub +.br +.B Hangul_PanSios +.br +.B Hangul_KkogjiDalrinIeung +.br +.B Hangul_SunkyeongeumPhieuf +.br +.B Hangul_YeorinHieuh +.br +.B Hangul_AraeA +.br +.B Hangul_AraeAE +.br +.B Hangul_J_PanSios +.br +.B Hangul_J_KkogjiDalrinIeung +.br +.B Hangul_J_YeorinHieuh +.br +.B Korean_Won +.br +.B Armenian_ligature_ew +.br +.B Armenian_full_stop +.br +.B Armenian_verjaket +.br +.B Armenian_separation_mark +.br +.B Armenian_but +.br +.B Armenian_hyphen +.br +.B Armenian_yentamna +.br +.B Armenian_exclam +.br +.B Armenian_amanak +.br +.B Armenian_accent +.br +.B Armenian_shesht +.br +.B Armenian_question +.br +.B Armenian_paruyk +.br +.B Armenian_AYB +.br +.B Armenian_ayb +.br +.B Armenian_BEN +.br +.B Armenian_ben +.br +.B Armenian_GIM +.br +.B Armenian_gim +.br +.B Armenian_DA +.br +.B Armenian_da +.br +.B Armenian_YECH +.br +.B Armenian_yech +.br +.B Armenian_ZA +.br +.B Armenian_za +.br +.B Armenian_E +.br +.B Armenian_e +.br +.B Armenian_AT +.br +.B Armenian_at +.br +.B Armenian_TO +.br +.B Armenian_to +.br +.B Armenian_ZHE +.br +.B Armenian_zhe +.br +.B Armenian_INI +.br +.B Armenian_ini +.br +.B Armenian_LYUN +.br +.B Armenian_lyun +.br +.B Armenian_KHE +.br +.B Armenian_khe +.br +.B Armenian_TSA +.br +.B Armenian_tsa +.br +.B Armenian_KEN +.br +.B Armenian_ken +.br +.B Armenian_HO +.br +.B Armenian_ho +.br +.B Armenian_DZA +.br +.B Armenian_dza +.br +.B Armenian_GHAT +.br +.B Armenian_ghat +.br +.B Armenian_TCHE +.br +.B Armenian_tche +.br +.B Armenian_MEN +.br +.B Armenian_men +.br +.B Armenian_HI +.br +.B Armenian_hi +.br +.B Armenian_NU +.br +.B Armenian_nu +.br +.B Armenian_SHA +.br +.B Armenian_sha +.br +.B Armenian_VO +.br +.B Armenian_vo +.br +.B Armenian_CHA +.br +.B Armenian_cha +.br +.B Armenian_PE +.br +.B Armenian_pe +.br +.B Armenian_JE +.br +.B Armenian_je +.br +.B Armenian_RA +.br +.B Armenian_ra +.br +.B Armenian_SE +.br +.B Armenian_se +.br +.B Armenian_VEV +.br +.B Armenian_vev +.br +.B Armenian_TYUN +.br +.B Armenian_tyun +.br +.B Armenian_RE +.br +.B Armenian_re +.br +.B Armenian_TSO +.br +.B Armenian_tso +.br +.B Armenian_VYUN +.br +.B Armenian_vyun +.br +.B Armenian_PYUR +.br +.B Armenian_pyur +.br +.B Armenian_KE +.br +.B Armenian_ke +.br +.B Armenian_O +.br +.B Armenian_o +.br +.B Armenian_FE +.br +.B Armenian_fe +.br +.B Armenian_apostrophe +.br +.B Georgian_an +.br +.B Georgian_ban +.br +.B Georgian_gan +.br +.B Georgian_don +.br +.B Georgian_en +.br +.B Georgian_vin +.br +.B Georgian_zen +.br +.B Georgian_tan +.br +.B Georgian_in +.br +.B Georgian_kan +.br +.B Georgian_las +.br +.B Georgian_man +.br +.B Georgian_nar +.br +.B Georgian_on +.br +.B Georgian_par +.br +.B Georgian_zhar +.br +.B Georgian_rae +.br +.B Georgian_san +.br +.B Georgian_tar +.br +.B Georgian_un +.br +.B Georgian_phar +.br +.B Georgian_khar +.br +.B Georgian_ghan +.br +.B Georgian_qar +.br +.B Georgian_shin +.br +.B Georgian_chin +.br +.B Georgian_can +.br +.B Georgian_jil +.br +.B Georgian_cil +.br +.B Georgian_char +.br +.B Georgian_xan +.br +.B Georgian_jhan +.br +.B Georgian_hae +.br +.B Georgian_he +.br +.B Georgian_hie +.br +.B Georgian_we +.br +.B Georgian_har +.br +.B Georgian_hoe +.br +.B Georgian_fi +.br +.B Xabovedot +.br +.B Ibreve +.br +.B Zstroke +.br +.B Gcaron +.br +.B Ocaron +.br +.B Obarred +.br +.B xabovedot +.br +.B ibreve +.br +.B zstroke +.br +.B gcaron +.br +.B ocaron +.br +.B obarred +.br +.B SCHWA +.br +.B schwa +.br +.B EZH +.br +.B ezh +.br +.B Lbelowdot +.br +.B lbelowdot +.br +.B Abelowdot +.br +.B abelowdot +.br +.B Ahook +.br +.B ahook +.br +.B Acircumflexacute +.br +.B acircumflexacute +.br +.B Acircumflexgrave +.br +.B acircumflexgrave +.br +.B Acircumflexhook +.br +.B acircumflexhook +.br +.B Acircumflextilde +.br +.B acircumflextilde +.br +.B Acircumflexbelowdot +.br +.B acircumflexbelowdot +.br +.B Abreveacute +.br +.B abreveacute +.br +.B Abrevegrave +.br +.B abrevegrave +.br +.B Abrevehook +.br +.B abrevehook +.br +.B Abrevetilde +.br +.B abrevetilde +.br +.B Abrevebelowdot +.br +.B abrevebelowdot +.br +.B Ebelowdot +.br +.B ebelowdot +.br +.B Ehook +.br +.B ehook +.br +.B Etilde +.br +.B etilde +.br +.B Ecircumflexacute +.br +.B ecircumflexacute +.br +.B Ecircumflexgrave +.br +.B ecircumflexgrave +.br +.B Ecircumflexhook +.br +.B ecircumflexhook +.br +.B Ecircumflextilde +.br +.B ecircumflextilde +.br +.B Ecircumflexbelowdot +.br +.B ecircumflexbelowdot +.br +.B Ihook +.br +.B ihook +.br +.B Ibelowdot +.br +.B ibelowdot +.br +.B Obelowdot +.br +.B obelowdot +.br +.B Ohook +.br +.B ohook +.br +.B Ocircumflexacute +.br +.B ocircumflexacute +.br +.B Ocircumflexgrave +.br +.B ocircumflexgrave +.br +.B Ocircumflexhook +.br +.B ocircumflexhook +.br +.B Ocircumflextilde +.br +.B ocircumflextilde +.br +.B Ocircumflexbelowdot +.br +.B ocircumflexbelowdot +.br +.B Ohornacute +.br +.B ohornacute +.br +.B Ohorngrave +.br +.B ohorngrave +.br +.B Ohornhook +.br +.B ohornhook +.br +.B Ohorntilde +.br +.B ohorntilde +.br +.B Ohornbelowdot +.br +.B ohornbelowdot +.br +.B Ubelowdot +.br +.B ubelowdot +.br +.B Uhook +.br +.B uhook +.br +.B Uhornacute +.br +.B uhornacute +.br +.B Uhorngrave +.br +.B uhorngrave +.br +.B Uhornhook +.br +.B uhornhook +.br +.B Uhorntilde +.br +.B uhorntilde +.br +.B Uhornbelowdot +.br +.B uhornbelowdot +.br +.B Ybelowdot +.br +.B ybelowdot +.br +.B Yhook +.br +.B yhook +.br +.B Ytilde +.br +.B ytilde +.br +.B Ohorn +.br +.B ohorn +.br +.B Uhorn +.br +.B uhorn +.br +.B EcuSign +.br +.B ColonSign +.br +.B CruzeiroSign +.br +.B FFrancSign +.br +.B LiraSign +.br +.B MillSign +.br +.B NairaSign +.br +.B PesetaSign +.br +.B RupeeSign +.br +.B WonSign +.br +.B NewSheqelSign +.br +.B DongSign +.br +.B EuroSign +.br +.B zerosuperior +.br +.B foursuperior +.br +.B fivesuperior +.br +.B sixsuperior +.br +.B sevensuperior +.br +.B eightsuperior +.br +.B ninesuperior +.br +.B zerosubscript +.br +.B onesubscript +.br +.B twosubscript +.br +.B threesubscript +.br +.B foursubscript +.br +.B fivesubscript +.br +.B sixsubscript +.br +.B sevensubscript +.br +.B eightsubscript +.br +.B ninesubscript +.br +.B partdifferential +.br +.B emptyset +.br +.B elementof +.br +.B notelementof +.br +.B containsas +.br +.B squareroot +.br +.B cuberoot +.br +.B fourthroot +.br +.B dintegral +.br +.B tintegral +.br +.B because +.br +.B approxeq +.br +.B notapproxeq +.br +.B notidentical +.br +.B stricteq +.br +.B braille_dot_1 +.br +.B braille_dot_2 +.br +.B braille_dot_3 +.br +.B braille_dot_4 +.br +.B braille_dot_5 +.br +.B braille_dot_6 +.br +.B braille_dot_7 +.br +.B braille_dot_8 +.br +.B braille_dot_9 +.br +.B braille_dot_10 +.br +.B braille_blank +.br +.B braille_dots_1 +.br +.B braille_dots_2 +.br +.B braille_dots_12 +.br +.B braille_dots_3 +.br +.B braille_dots_13 +.br +.B braille_dots_23 +.br +.B braille_dots_123 +.br +.B braille_dots_4 +.br +.B braille_dots_14 +.br +.B braille_dots_24 +.br +.B braille_dots_124 +.br +.B braille_dots_34 +.br +.B braille_dots_134 +.br +.B braille_dots_234 +.br +.B braille_dots_1234 +.br +.B braille_dots_5 +.br +.B braille_dots_15 +.br +.B braille_dots_25 +.br +.B braille_dots_125 +.br +.B braille_dots_35 +.br +.B braille_dots_135 +.br +.B braille_dots_235 +.br +.B braille_dots_1235 +.br +.B braille_dots_45 +.br +.B braille_dots_145 +.br +.B braille_dots_245 +.br +.B braille_dots_1245 +.br +.B braille_dots_345 +.br +.B braille_dots_1345 +.br +.B braille_dots_2345 +.br +.B braille_dots_12345 +.br +.B braille_dots_6 +.br +.B braille_dots_16 +.br +.B braille_dots_26 +.br +.B braille_dots_126 +.br +.B braille_dots_36 +.br +.B braille_dots_136 +.br +.B braille_dots_236 +.br +.B braille_dots_1236 +.br +.B braille_dots_46 +.br +.B braille_dots_146 +.br +.B braille_dots_246 +.br +.B braille_dots_1246 +.br +.B braille_dots_346 +.br +.B braille_dots_1346 +.br +.B braille_dots_2346 +.br +.B braille_dots_12346 +.br +.B braille_dots_56 +.br +.B braille_dots_156 +.br +.B braille_dots_256 +.br +.B braille_dots_1256 +.br +.B braille_dots_356 +.br +.B braille_dots_1356 +.br +.B braille_dots_2356 +.br +.B braille_dots_12356 +.br +.B braille_dots_456 +.br +.B braille_dots_1456 +.br +.B braille_dots_2456 +.br +.B braille_dots_12456 +.br +.B braille_dots_3456 +.br +.B braille_dots_13456 +.br +.B braille_dots_23456 +.br +.B braille_dots_123456 +.br +.B braille_dots_7 +.br +.B braille_dots_17 +.br +.B braille_dots_27 +.br +.B braille_dots_127 +.br +.B braille_dots_37 +.br +.B braille_dots_137 +.br +.B braille_dots_237 +.br +.B braille_dots_1237 +.br +.B braille_dots_47 +.br +.B braille_dots_147 +.br +.B braille_dots_247 +.br +.B braille_dots_1247 +.br +.B braille_dots_347 +.br +.B braille_dots_1347 +.br +.B braille_dots_2347 +.br +.B braille_dots_12347 +.br +.B braille_dots_57 +.br +.B braille_dots_157 +.br +.B braille_dots_257 +.br +.B braille_dots_1257 +.br +.B braille_dots_357 +.br +.B braille_dots_1357 +.br +.B braille_dots_2357 +.br +.B braille_dots_12357 +.br +.B braille_dots_457 +.br +.B braille_dots_1457 +.br +.B braille_dots_2457 +.br +.B braille_dots_12457 +.br +.B braille_dots_3457 +.br +.B braille_dots_13457 +.br +.B braille_dots_23457 +.br +.B braille_dots_123457 +.br +.B braille_dots_67 +.br +.B braille_dots_167 +.br +.B braille_dots_267 +.br +.B braille_dots_1267 +.br +.B braille_dots_367 +.br +.B braille_dots_1367 +.br +.B braille_dots_2367 +.br +.B braille_dots_12367 +.br +.B braille_dots_467 +.br +.B braille_dots_1467 +.br +.B braille_dots_2467 +.br +.B braille_dots_12467 +.br +.B braille_dots_3467 +.br +.B braille_dots_13467 +.br +.B braille_dots_23467 +.br +.B braille_dots_123467 +.br +.B braille_dots_567 +.br +.B braille_dots_1567 +.br +.B braille_dots_2567 +.br +.B braille_dots_12567 +.br +.B braille_dots_3567 +.br +.B braille_dots_13567 +.br +.B braille_dots_23567 +.br +.B braille_dots_123567 +.br +.B braille_dots_4567 +.br +.B braille_dots_14567 +.br +.B braille_dots_24567 +.br +.B braille_dots_124567 +.br +.B braille_dots_34567 +.br +.B braille_dots_134567 +.br +.B braille_dots_234567 +.br +.B braille_dots_1234567 +.br +.B braille_dots_8 +.br +.B braille_dots_18 +.br +.B braille_dots_28 +.br +.B braille_dots_128 +.br +.B braille_dots_38 +.br +.B braille_dots_138 +.br +.B braille_dots_238 +.br +.B braille_dots_1238 +.br +.B braille_dots_48 +.br +.B braille_dots_148 +.br +.B braille_dots_248 +.br +.B braille_dots_1248 +.br +.B braille_dots_348 +.br +.B braille_dots_1348 +.br +.B braille_dots_2348 +.br +.B braille_dots_12348 +.br +.B braille_dots_58 +.br +.B braille_dots_158 +.br +.B braille_dots_258 +.br +.B braille_dots_1258 +.br +.B braille_dots_358 +.br +.B braille_dots_1358 +.br +.B braille_dots_2358 +.br +.B braille_dots_12358 +.br +.B braille_dots_458 +.br +.B braille_dots_1458 +.br +.B braille_dots_2458 +.br +.B braille_dots_12458 +.br +.B braille_dots_3458 +.br +.B braille_dots_13458 +.br +.B braille_dots_23458 +.br +.B braille_dots_123458 +.br +.B braille_dots_68 +.br +.B braille_dots_168 +.br +.B braille_dots_268 +.br +.B braille_dots_1268 +.br +.B braille_dots_368 +.br +.B braille_dots_1368 +.br +.B braille_dots_2368 +.br +.B braille_dots_12368 +.br +.B braille_dots_468 +.br +.B braille_dots_1468 +.br +.B braille_dots_2468 +.br +.B braille_dots_12468 +.br +.B braille_dots_3468 +.br +.B braille_dots_13468 +.br +.B braille_dots_23468 +.br +.B braille_dots_123468 +.br +.B braille_dots_568 +.br +.B braille_dots_1568 +.br +.B braille_dots_2568 +.br +.B braille_dots_12568 +.br +.B braille_dots_3568 +.br +.B braille_dots_13568 +.br +.B braille_dots_23568 +.br +.B braille_dots_123568 +.br +.B braille_dots_4568 +.br +.B braille_dots_14568 +.br +.B braille_dots_24568 +.br +.B braille_dots_124568 +.br +.B braille_dots_34568 +.br +.B braille_dots_134568 +.br +.B braille_dots_234568 +.br +.B braille_dots_1234568 +.br +.B braille_dots_78 +.br +.B braille_dots_178 +.br +.B braille_dots_278 +.br +.B braille_dots_1278 +.br +.B braille_dots_378 +.br +.B braille_dots_1378 +.br +.B braille_dots_2378 +.br +.B braille_dots_12378 +.br +.B braille_dots_478 +.br +.B braille_dots_1478 +.br +.B braille_dots_2478 +.br +.B braille_dots_12478 +.br +.B braille_dots_3478 +.br +.B braille_dots_13478 +.br +.B braille_dots_23478 +.br +.B braille_dots_123478 +.br +.B braille_dots_578 +.br +.B braille_dots_1578 +.br +.B braille_dots_2578 +.br +.B braille_dots_12578 +.br +.B braille_dots_3578 +.br +.B braille_dots_13578 +.br +.B braille_dots_23578 +.br +.B braille_dots_123578 +.br +.B braille_dots_4578 +.br +.B braille_dots_14578 +.br +.B braille_dots_24578 +.br +.B braille_dots_124578 +.br +.B braille_dots_34578 +.br +.B braille_dots_134578 +.br +.B braille_dots_234578 +.br +.B braille_dots_1234578 +.br +.B braille_dots_678 +.br +.B braille_dots_1678 +.br +.B braille_dots_2678 +.br +.B braille_dots_12678 +.br +.B braille_dots_3678 +.br +.B braille_dots_13678 +.br +.B braille_dots_23678 +.br +.B braille_dots_123678 +.br +.B braille_dots_4678 +.br +.B braille_dots_14678 +.br +.B braille_dots_24678 +.br +.B braille_dots_124678 +.br +.B braille_dots_34678 +.br +.B braille_dots_134678 +.br +.B braille_dots_234678 +.br +.B braille_dots_1234678 +.br +.B braille_dots_5678 +.br +.B braille_dots_15678 +.br +.B braille_dots_25678 +.br +.B braille_dots_125678 +.br +.B braille_dots_35678 +.br +.B braille_dots_135678 +.br +.B braille_dots_235678 +.br +.B braille_dots_1235678 +.br +.B braille_dots_45678 +.br +.B braille_dots_145678 +.br +.B braille_dots_245678 +.br +.B braille_dots_1245678 +.br +.B braille_dots_345678 +.br +.B braille_dots_1345678 +.br +.B braille_dots_2345678 +.br +.B braille_dots_12345678 +.br +.B Sinh_ng +.br +.B Sinh_h2 +.br +.B Sinh_a +.br +.B Sinh_aa +.br +.B Sinh_ae +.br +.B Sinh_aee +.br +.B Sinh_i +.br +.B Sinh_ii +.br +.B Sinh_u +.br +.B Sinh_uu +.br +.B Sinh_ri +.br +.B Sinh_rii +.br +.B Sinh_lu +.br +.B Sinh_luu +.br +.B Sinh_e +.br +.B Sinh_ee +.br +.B Sinh_ai +.br +.B Sinh_o +.br +.B Sinh_oo +.br +.B Sinh_au +.br +.B Sinh_ka +.br +.B Sinh_kha +.br +.B Sinh_ga +.br +.B Sinh_gha +.br +.B Sinh_ng2 +.br +.B Sinh_nga +.br +.B Sinh_ca +.br +.B Sinh_cha +.br +.B Sinh_ja +.br +.B Sinh_jha +.br +.B Sinh_nya +.br +.B Sinh_jnya +.br +.B Sinh_nja +.br +.B Sinh_tta +.br +.B Sinh_ttha +.br +.B Sinh_dda +.br +.B Sinh_ddha +.br +.B Sinh_nna +.br +.B Sinh_ndda +.br +.B Sinh_tha +.br +.B Sinh_thha +.br +.B Sinh_dha +.br +.B Sinh_dhha +.br +.B Sinh_na +.br +.B Sinh_ndha +.br +.B Sinh_pa +.br +.B Sinh_pha +.br +.B Sinh_ba +.br +.B Sinh_bha +.br +.B Sinh_ma +.br +.B Sinh_mba +.br +.B Sinh_ya +.br +.B Sinh_ra +.br +.B Sinh_la +.br +.B Sinh_va +.br +.B Sinh_sha +.br +.B Sinh_ssha +.br +.B Sinh_sa +.br +.B Sinh_ha +.br +.B Sinh_lla +.br +.B Sinh_fa +.br +.B Sinh_al +.br +.B Sinh_aa2 +.br +.B Sinh_ae2 +.br +.B Sinh_aee2 +.br +.B Sinh_i2 +.br +.B Sinh_ii2 +.br +.B Sinh_u2 +.br +.B Sinh_uu2 +.br +.B Sinh_ru2 +.br +.B Sinh_e2 +.br +.B Sinh_ee2 +.br +.B Sinh_ai2 +.br +.B Sinh_o2 +.br +.B Sinh_oo2 +.br +.B Sinh_au2 +.br +.B Sinh_lu2 +.br +.B Sinh_ruu2 +.br +.B Sinh_luu2 +.br +.B Sinh_kunddaliya +.br +.B ModeLock +.br +.B MonBrightnessUp +.br +.B MonBrightnessDown +.br +.B KbdLightOnOff +.br +.B KbdBrightnessUp +.br +.B KbdBrightnessDown +.br +.B Standby +.br +.B AudioLowerVolume +.br +.B AudioMute +.br +.B AudioRaiseVolume +.br +.B AudioPlay +.br +.B AudioStop +.br +.B AudioPrev +.br +.B AudioNext +.br +.B HomePage +.br +.B Mail +.br +.B Start +.br +.B Search +.br +.B AudioRecord +.br +.B Calculator +.br +.B Memo +.br +.B ToDoList +.br +.B Calendar +.br +.B PowerDown +.br +.B ContrastAdjust +.br +.B RockerUp +.br +.B RockerDown +.br +.B RockerEnter +.br +.B Back +.br +.B Forward +.br +.B Stop +.br +.B Refresh +.br +.B PowerOff +.br +.B WakeUp +.br +.B Eject +.br +.B ScreenSaver +.br +.B WWW +.br +.B Sleep +.br +.B Favorites +.br +.B AudioPause +.br +.B AudioMedia +.br +.B MyComputer +.br +.B VendorHome +.br +.B LightBulb +.br +.B Shop +.br +.B History +.br +.B OpenURL +.br +.B AddFavorite +.br +.B HotLinks +.br +.B BrightnessAdjust +.br +.B Finance +.br +.B Community +.br +.B AudioRewind +.br +.B BackForward +.br +.B Launch0 +.br +.B Launch1 +.br +.B Launch2 +.br +.B Launch3 +.br +.B Launch4 +.br +.B Launch5 +.br +.B Launch6 +.br +.B Launch7 +.br +.B Launch8 +.br +.B Launch9 +.br +.B LaunchA +.br +.B LaunchB +.br +.B LaunchC +.br +.B LaunchD +.br +.B LaunchE +.br +.B LaunchF +.br +.B ApplicationLeft +.br +.B ApplicationRight +.br +.B Book +.br +.B CD +.br +.B WindowClear +.br +.B Close +.br +.B Copy +.br +.B Cut +.br +.B Display +.br +.B DOS +.br +.B Documents +.br +.B Excel +.br +.B Explorer +.br +.B Game +.br +.B Go +.br +.B iTouch +.br +.B LogOff +.br +.B Market +.br +.B Meeting +.br +.B MenuKB +.br +.B MenuPB +.br +.B MySites +.br +.B New +.br +.B News +.br +.B OfficeHome +.br +.B Open +.br +.B Option +.br +.B Paste +.br +.B Phone +.br +.B Reply +.br +.B Reload +.br +.B RotateWindows +.br +.B RotationPB +.br +.B RotationKB +.br +.B Save +.br +.B ScrollUp +.br +.B ScrollDown +.br +.B ScrollClick +.br +.B Send +.br +.B Spell +.br +.B SplitScreen +.br +.B Support +.br +.B TaskPane +.br +.B Terminal +.br +.B Tools +.br +.B Travel +.br +.B UserPB +.br +.B User1KB +.br +.B User2KB +.br +.B Video +.br +.B WheelButton +.br +.B Word +.br +.B Xfer +.br +.B ZoomIn +.br +.B ZoomOut +.br +.B Away +.br +.B Messenger +.br +.B WebCam +.br +.B MailForward +.br +.B Pictures +.br +.B Music +.br +.B Battery +.br +.B Bluetooth +.br +.B WLAN +.br +.B UWB +.br +.B AudioForward +.br +.B AudioRepeat +.br +.B AudioRandomPlay +.br +.B Subtitle +.br +.B AudioCycleTrack +.br +.B CycleAngle +.br +.B FrameBack +.br +.B FrameForward +.br +.B Time +.br +.B SelectButton +.br +.B View +.br +.B TopMenu +.br +.B Red +.br +.B Green +.br +.B Yellow +.br +.B Blue +.br +.B Suspend +.br +.B Hibernate +.br +.B TouchpadToggle +.br +.B TouchpadOn +.br +.B TouchpadOff +.br +.B AudioMicMute +.br +.B Switch_VT_1 +.br +.B Switch_VT_2 +.br +.B Switch_VT_3 +.br +.B Switch_VT_4 +.br +.B Switch_VT_5 +.br +.B Switch_VT_6 +.br +.B Switch_VT_7 +.br +.B Switch_VT_8 +.br +.B Switch_VT_9 +.br +.B Switch_VT_10 +.br +.B Switch_VT_11 +.br +.B Switch_VT_12 +.br +.B Ungrab +.br +.B ClearGrab +.br +.B Next_VMode +.br +.B Prev_VMode +.br +.B LogWindowTree +.br +.B LogGrabInfo diff --git a/man/wofi.5 b/man/wofi.5 index 8666eee..ed5688d 100644 --- a/man/wofi.5 +++ b/man/wofi.5 @@ -117,6 +117,30 @@ Specifies the rate at which search results are updated in milliseconds, default .TP .B image_size=\fISIZE\fR Specifies the size of images in pixels when images are enabled, default is 32. +.TP +.B key_up=\fIKEY\fR +Specifies the key to use in order to move up. Default is Up(Up arrow). See \fBwofi\-keys\fR(7) for the key codes. +.TP +.B key_down=\fIKEY\fR +Sepcifies the key to use in order to move down. Default is Down(Down arrow). See \fBwofi\-keys\fR(7) for the key codes. +.TP +.B key_left=\fIKEY\fR +Specifies the key to use in order to move left. Default is Left(Left arrow). See \fBwofi\-keys\fR(7) for the key codes. +.TP +.B key_right=\fIKEY\fR +Specifies the key to use in order to move right. Default is Right(Right arrow). See \fBwofi\-keys\fR(7) for the key codes. +.TP +.B key_forward=\fIKEY\fR +Specifies the key to use in order to move forward. Default is Tab. See \fBwofi\-keys\fR(7) for the key codes. +.TP +.B key_backward=\fIKEY\fR +Specifies the key to use in order to move backward. Default is ISO_Left_Tab(Shift+Tab). See \fBwofi\-keys\fR(7) for the key codes. +.TP +.B key_submit=\fIKEY\fR +Specifies the key to use in order to submit an action. Default is Return. See \fBwofi\-keys\fR(7) for the key codes. +.TP +.B key_exit=\fIKEY\fR +Specifies the key to use in order to exit wofi. Default is Escape. See \fBwofi\-keys\fR(7) for the key codes. .SH CSS SELECTORS Any GTK widget can be selected by using the name of its CSS node, these however might change with updates and are not guarenteed to stay constant. Wofi also provides certain widgets with names and classes which can be referenced from CSS to give access to the most important widgets easily. \fBwofi\fR(7) contains the current widget layout used by wofi so if you want to get into CSS directly using GTK widget names look there for info. diff --git a/src/wofi.c b/src/wofi.c index 580b790..ccbab70 100644 --- a/src/wofi.c +++ b/src/wofi.c @@ -70,6 +70,7 @@ static uint16_t widget_count = 0; static enum sort_order sort_order; static int64_t min_height = INT64_MAX; static uint64_t lines; +static char* key_up, *key_down, *key_left, *key_right, *key_forward, *key_backward, *key_submit, *key_exit; static struct wl_display* wl = NULL; static struct wl_surface* wl_surface; @@ -881,14 +882,58 @@ static gint do_sort(GtkFlowBoxChild* child1, GtkFlowBoxChild* child2, gpointer d } } +static void select_first(void) { + GtkFlowBoxChild* child = gtk_flow_box_get_child_at_index(GTK_FLOW_BOX(inner_box), 0); + gtk_widget_grab_focus(GTK_WIDGET(child)); + gtk_flow_box_select_child(GTK_FLOW_BOX(inner_box), GTK_FLOW_BOX_CHILD(child)); +} + static gboolean key_press(GtkWidget* widget, GdkEvent* event, gpointer data) { (void) widget; (void) data; - switch(event->key.keyval) { - case GDK_KEY_Escape: - exit(1); - break; - case GDK_KEY_Return: + gchar* name = gdk_keyval_name(event->key.keyval); + bool printable = strlen(name) == 1 && isprint(name[0]); + bool use_first = gtk_widget_has_focus(entry) || gtk_widget_has_focus(scroll); + + if(gtk_widget_has_focus(entry) && printable) { + return FALSE; + } + + if(event->key.keyval == gdk_keyval_from_name(key_up)) { + user_moved = true; + gtk_widget_child_focus(window, GTK_DIR_UP); + } else if(event->key.keyval == gdk_keyval_from_name(key_down)) { + user_moved = true; + if(outer_orientation == GTK_ORIENTATION_VERTICAL) { + if(use_first) { + select_first(); + return TRUE; + } + } + gtk_widget_child_focus(window, GTK_DIR_DOWN); + } else if(event->key.keyval == gdk_keyval_from_name(key_left)) { + user_moved = true; + gtk_widget_child_focus(window, GTK_DIR_LEFT); + } else if(event->key.keyval == gdk_keyval_from_name(key_right)) { + user_moved = true; + if(outer_orientation == GTK_ORIENTATION_HORIZONTAL) { + if(use_first) { + select_first(); + return TRUE; + } + } + gtk_widget_child_focus(window, GTK_DIR_RIGHT); + } else if(event->key.keyval == gdk_keyval_from_name(key_forward)) { + user_moved = true; + if(use_first) { + select_first(); + return TRUE; + } + gtk_widget_child_focus(window, GTK_DIR_TAB_FORWARD); + } else if(event->key.keyval == gdk_keyval_from_name(key_backward)) { + user_moved = true; + gtk_widget_child_focus(window, GTK_DIR_TAB_BACKWARD); + } else if(event->key.keyval == gdk_keyval_from_name(key_submit)) { mod_shift = (event->key.state & GDK_SHIFT_MASK) == GDK_SHIFT_MASK; mod_ctrl = (event->key.state & GDK_CONTROL_MASK) == GDK_CONTROL_MASK; if(mod_shift) { @@ -900,38 +945,26 @@ static gboolean key_press(GtkWidget* widget, GdkEvent* event, gpointer data) { if(gtk_widget_has_focus(scroll)) { gtk_entry_grab_focus_without_selecting(GTK_ENTRY(entry)); } - break; - case GDK_KEY_Tab: - case GDK_KEY_Down: - case GDK_KEY_Right: - if(event->key.keyval == GDK_KEY_Down && outer_orientation == GTK_ORIENTATION_HORIZONTAL) { - return FALSE; - } else if(event->key.keyval == GDK_KEY_Right && outer_orientation == GTK_ORIENTATION_VERTICAL) { - return FALSE; + GList* children = gtk_flow_box_get_selected_children(GTK_FLOW_BOX(inner_box)); + if(gtk_widget_has_focus(entry)) { + g_signal_emit_by_name(entry, "activate", entry, NULL); + } else if(gtk_widget_has_focus(inner_box) || (children->data != NULL && gtk_widget_has_focus(children->data))) { + if(children->data != NULL) { + g_signal_emit_by_name(children->data, "activate", children->data, NULL); + } } - user_moved = true; - if(gtk_widget_has_focus(entry) || gtk_widget_has_focus(scroll)) { - GtkFlowBoxChild* child = gtk_flow_box_get_child_at_index(GTK_FLOW_BOX(inner_box), 0); - gtk_widget_grab_focus(GTK_WIDGET(child)); - gtk_flow_box_select_child(GTK_FLOW_BOX(inner_box), GTK_FLOW_BOX_CHILD(child)); - return TRUE; - } - break; - case GDK_KEY_Up: - case GDK_KEY_Left: - case GDK_KEY_Shift_L: - case GDK_KEY_Shift_R: - case GDK_KEY_Control_L: - case GDK_KEY_Control_R: - case GDK_KEY_ISO_Left_Tab: - break; - default: + g_list_free(children); + } else if(event->key.keyval == gdk_keyval_from_name(key_exit)) { + exit(1); + } else if(event->key.keyval == GDK_KEY_Shift_L || event->key.keyval == GDK_KEY_Control_L) { + } else if(event->key.keyval == GDK_KEY_Shift_R || event->key.keyval == GDK_KEY_Control_R) { + } else { if(!gtk_widget_has_focus(entry)) { gtk_entry_grab_focus_without_selecting(GTK_ENTRY(entry)); } - break; + return FALSE; } - return FALSE; + return TRUE; } static gboolean focus(GtkWidget* widget, GdkEvent* event, gpointer data) { @@ -1089,6 +1122,14 @@ void wofi_init(struct map* _config) { lines = strtol(config_get(config, "lines", "0"), NULL, 10); columns = strtol(config_get(config, "columns", "1"), NULL, 10); sort_order = config_get_mnemonic(config, "sort_order", "default", 2, "default", "alphabetical"); + key_up = config_get(config, "key_up", "Up"); + key_down = config_get(config, "key_down", "Down"); + key_left = config_get(config, "key_left", "Left"); + key_right = config_get(config, "key_right", "Right"); + key_forward = config_get(config, "key_forward", "Tab"); + key_backward = config_get(config, "key_backward", "ISO_Left_Tab"); + key_submit = config_get(config, "key_submit", "Return"); + key_exit = config_get(config, "key_exit", "Escape"); modes = map_init_void(); if(lines > 0) {