mirror of
https://github.com/fish-shell/fish-shell
synced 2024-12-27 05:13:10 +00:00
Add keys to our curses Term structure
This will support rewriting the input machinery in Rust. Note that while there are a lot of keys here, in practice this is very fast - taking on the order of microseconds to populate.
This commit is contained in:
parent
b895cf49ca
commit
55054a4bae
1 changed files with 218 additions and 0 deletions
|
@ -144,6 +144,115 @@ pub struct Term {
|
|||
// Flag/boolean capabilities
|
||||
pub eat_newline_glitch: bool,
|
||||
pub auto_right_margin: bool,
|
||||
|
||||
// Keys.
|
||||
pub key_a1: Option<CString>,
|
||||
pub key_a3: Option<CString>,
|
||||
pub key_b2: Option<CString>,
|
||||
pub key_backspace: Option<CString>,
|
||||
pub key_beg: Option<CString>,
|
||||
pub key_btab: Option<CString>,
|
||||
pub key_c1: Option<CString>,
|
||||
pub key_c3: Option<CString>,
|
||||
pub key_cancel: Option<CString>,
|
||||
pub key_catab: Option<CString>,
|
||||
pub key_clear: Option<CString>,
|
||||
pub key_close: Option<CString>,
|
||||
pub key_command: Option<CString>,
|
||||
pub key_copy: Option<CString>,
|
||||
pub key_create: Option<CString>,
|
||||
pub key_ctab: Option<CString>,
|
||||
pub key_dc: Option<CString>,
|
||||
pub key_dl: Option<CString>,
|
||||
pub key_down: Option<CString>,
|
||||
pub key_eic: Option<CString>,
|
||||
pub key_end: Option<CString>,
|
||||
pub key_enter: Option<CString>,
|
||||
pub key_eol: Option<CString>,
|
||||
pub key_eos: Option<CString>,
|
||||
pub key_exit: Option<CString>,
|
||||
pub key_f0: Option<CString>,
|
||||
pub key_f1: Option<CString>,
|
||||
pub key_f2: Option<CString>,
|
||||
pub key_f3: Option<CString>,
|
||||
pub key_f4: Option<CString>,
|
||||
pub key_f5: Option<CString>,
|
||||
pub key_f6: Option<CString>,
|
||||
pub key_f7: Option<CString>,
|
||||
pub key_f8: Option<CString>,
|
||||
pub key_f9: Option<CString>,
|
||||
pub key_f10: Option<CString>,
|
||||
pub key_f11: Option<CString>,
|
||||
pub key_f12: Option<CString>,
|
||||
pub key_f13: Option<CString>,
|
||||
pub key_f14: Option<CString>,
|
||||
pub key_f15: Option<CString>,
|
||||
pub key_f16: Option<CString>,
|
||||
pub key_f17: Option<CString>,
|
||||
pub key_f18: Option<CString>,
|
||||
pub key_f19: Option<CString>,
|
||||
pub key_f20: Option<CString>,
|
||||
// Note key_f21 through key_f63 are available but no actual keyboard supports them.
|
||||
pub key_find: Option<CString>,
|
||||
pub key_help: Option<CString>,
|
||||
pub key_home: Option<CString>,
|
||||
pub key_ic: Option<CString>,
|
||||
pub key_il: Option<CString>,
|
||||
pub key_left: Option<CString>,
|
||||
pub key_ll: Option<CString>,
|
||||
pub key_mark: Option<CString>,
|
||||
pub key_message: Option<CString>,
|
||||
pub key_move: Option<CString>,
|
||||
pub key_next: Option<CString>,
|
||||
pub key_npage: Option<CString>,
|
||||
pub key_open: Option<CString>,
|
||||
pub key_options: Option<CString>,
|
||||
pub key_ppage: Option<CString>,
|
||||
pub key_previous: Option<CString>,
|
||||
pub key_print: Option<CString>,
|
||||
pub key_redo: Option<CString>,
|
||||
pub key_reference: Option<CString>,
|
||||
pub key_refresh: Option<CString>,
|
||||
pub key_replace: Option<CString>,
|
||||
pub key_restart: Option<CString>,
|
||||
pub key_resume: Option<CString>,
|
||||
pub key_right: Option<CString>,
|
||||
pub key_save: Option<CString>,
|
||||
pub key_sbeg: Option<CString>,
|
||||
pub key_scancel: Option<CString>,
|
||||
pub key_scommand: Option<CString>,
|
||||
pub key_scopy: Option<CString>,
|
||||
pub key_screate: Option<CString>,
|
||||
pub key_sdc: Option<CString>,
|
||||
pub key_sdl: Option<CString>,
|
||||
pub key_select: Option<CString>,
|
||||
pub key_send: Option<CString>,
|
||||
pub key_seol: Option<CString>,
|
||||
pub key_sexit: Option<CString>,
|
||||
pub key_sf: Option<CString>,
|
||||
pub key_sfind: Option<CString>,
|
||||
pub key_shelp: Option<CString>,
|
||||
pub key_shome: Option<CString>,
|
||||
pub key_sic: Option<CString>,
|
||||
pub key_sleft: Option<CString>,
|
||||
pub key_smessage: Option<CString>,
|
||||
pub key_smove: Option<CString>,
|
||||
pub key_snext: Option<CString>,
|
||||
pub key_soptions: Option<CString>,
|
||||
pub key_sprevious: Option<CString>,
|
||||
pub key_sprint: Option<CString>,
|
||||
pub key_sr: Option<CString>,
|
||||
pub key_sredo: Option<CString>,
|
||||
pub key_sreplace: Option<CString>,
|
||||
pub key_sright: Option<CString>,
|
||||
pub key_srsume: Option<CString>,
|
||||
pub key_ssave: Option<CString>,
|
||||
pub key_ssuspend: Option<CString>,
|
||||
pub key_stab: Option<CString>,
|
||||
pub key_sundo: Option<CString>,
|
||||
pub key_suspend: Option<CString>,
|
||||
pub key_undo: Option<CString>,
|
||||
pub key_up: Option<CString>,
|
||||
}
|
||||
|
||||
impl Term {
|
||||
|
@ -191,6 +300,115 @@ impl Term {
|
|||
// Flag/boolean capabilities
|
||||
eat_newline_glitch: get_flag_cap("xn"),
|
||||
auto_right_margin: get_flag_cap("am"),
|
||||
|
||||
// Keys. See `man terminfo` for these strings.
|
||||
key_a1: get_str_cap("K1"),
|
||||
key_a3: get_str_cap("K3"),
|
||||
key_b2: get_str_cap("K2"),
|
||||
key_backspace: get_str_cap("kb"),
|
||||
key_beg: get_str_cap("@1"),
|
||||
key_btab: get_str_cap("kB"),
|
||||
key_c1: get_str_cap("K4"),
|
||||
key_c3: get_str_cap("K5"),
|
||||
key_cancel: get_str_cap("@2"),
|
||||
key_catab: get_str_cap("ka"),
|
||||
key_clear: get_str_cap("kC"),
|
||||
key_close: get_str_cap("@3"),
|
||||
key_command: get_str_cap("@4"),
|
||||
key_copy: get_str_cap("@5"),
|
||||
key_create: get_str_cap("@6"),
|
||||
key_ctab: get_str_cap("kt"),
|
||||
key_dc: get_str_cap("kD"),
|
||||
key_dl: get_str_cap("kL"),
|
||||
key_down: get_str_cap("kd"),
|
||||
key_eic: get_str_cap("kM"),
|
||||
key_end: get_str_cap("@7"),
|
||||
key_enter: get_str_cap("@8"),
|
||||
key_eol: get_str_cap("kE"),
|
||||
key_eos: get_str_cap("kS"),
|
||||
key_exit: get_str_cap("@9"),
|
||||
key_f0: get_str_cap("k0"),
|
||||
key_f1: get_str_cap("k1"),
|
||||
key_f10: get_str_cap("k;"),
|
||||
key_f11: get_str_cap("F1"),
|
||||
key_f12: get_str_cap("F2"),
|
||||
key_f13: get_str_cap("F3"),
|
||||
key_f14: get_str_cap("F4"),
|
||||
key_f15: get_str_cap("F5"),
|
||||
key_f16: get_str_cap("F6"),
|
||||
key_f17: get_str_cap("F7"),
|
||||
key_f18: get_str_cap("F8"),
|
||||
key_f19: get_str_cap("F9"),
|
||||
key_f2: get_str_cap("k2"),
|
||||
key_f20: get_str_cap("FA"),
|
||||
// Note key_f21 through key_f63 are available but no actual keyboard supports them.
|
||||
key_f3: get_str_cap("k3"),
|
||||
key_f4: get_str_cap("k4"),
|
||||
key_f5: get_str_cap("k5"),
|
||||
key_f6: get_str_cap("k6"),
|
||||
key_f7: get_str_cap("k7"),
|
||||
key_f8: get_str_cap("k8"),
|
||||
key_f9: get_str_cap("k9"),
|
||||
key_find: get_str_cap("@0"),
|
||||
key_help: get_str_cap("%1"),
|
||||
key_home: get_str_cap("kh"),
|
||||
key_ic: get_str_cap("kI"),
|
||||
key_il: get_str_cap("kA"),
|
||||
key_left: get_str_cap("kl"),
|
||||
key_ll: get_str_cap("kH"),
|
||||
key_mark: get_str_cap("%2"),
|
||||
key_message: get_str_cap("%3"),
|
||||
key_move: get_str_cap("%4"),
|
||||
key_next: get_str_cap("%5"),
|
||||
key_npage: get_str_cap("kN"),
|
||||
key_open: get_str_cap("%6"),
|
||||
key_options: get_str_cap("%7"),
|
||||
key_ppage: get_str_cap("kP"),
|
||||
key_previous: get_str_cap("%8"),
|
||||
key_print: get_str_cap("%9"),
|
||||
key_redo: get_str_cap("%0"),
|
||||
key_reference: get_str_cap("&1"),
|
||||
key_refresh: get_str_cap("&2"),
|
||||
key_replace: get_str_cap("&3"),
|
||||
key_restart: get_str_cap("&4"),
|
||||
key_resume: get_str_cap("&5"),
|
||||
key_right: get_str_cap("kr"),
|
||||
key_save: get_str_cap("&6"),
|
||||
key_sbeg: get_str_cap("&9"),
|
||||
key_scancel: get_str_cap("&0"),
|
||||
key_scommand: get_str_cap("*1"),
|
||||
key_scopy: get_str_cap("*2"),
|
||||
key_screate: get_str_cap("*3"),
|
||||
key_sdc: get_str_cap("*4"),
|
||||
key_sdl: get_str_cap("*5"),
|
||||
key_select: get_str_cap("*6"),
|
||||
key_send: get_str_cap("*7"),
|
||||
key_seol: get_str_cap("*8"),
|
||||
key_sexit: get_str_cap("*9"),
|
||||
key_sf: get_str_cap("kF"),
|
||||
key_sfind: get_str_cap("*0"),
|
||||
key_shelp: get_str_cap("#1"),
|
||||
key_shome: get_str_cap("#2"),
|
||||
key_sic: get_str_cap("#3"),
|
||||
key_sleft: get_str_cap("#4"),
|
||||
key_smessage: get_str_cap("%a"),
|
||||
key_smove: get_str_cap("%b"),
|
||||
key_snext: get_str_cap("%c"),
|
||||
key_soptions: get_str_cap("%d"),
|
||||
key_sprevious: get_str_cap("%e"),
|
||||
key_sprint: get_str_cap("%f"),
|
||||
key_sr: get_str_cap("kR"),
|
||||
key_sredo: get_str_cap("%g"),
|
||||
key_sreplace: get_str_cap("%h"),
|
||||
key_sright: get_str_cap("%i"),
|
||||
key_srsume: get_str_cap("%j"),
|
||||
key_ssave: get_str_cap("!1"),
|
||||
key_ssuspend: get_str_cap("!2"),
|
||||
key_stab: get_str_cap("kT"),
|
||||
key_sundo: get_str_cap("!3"),
|
||||
key_suspend: get_str_cap("&7"),
|
||||
key_undo: get_str_cap("&8"),
|
||||
key_up: get_str_cap("ku"),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue