doc::unibilium.h(3)

NAME
unibilium.h - terminfo parser and utility functions

SYNOPSIS
  #include <unibilium.h>

DESCRIPTION
This library provides functions and types to access terminal descriptions in the terminfo database. It can parse compiled terminfo entries from memory or files, access and modify their capabilities, and generate new terminfo entries.

  Types
The following types are provided:

unibi_term
    The main type. It represents a terminfo entry. Most functions take a pointer to this structure.

unibi_var_t
    A type that represents the values in format string operations, which are either integers or strings. It is currently implemented as a union of two members, "int i" and "char *p", but direct use of these is discouraged as the representation may change in the future.

    See unibi_var_from_num(3), unibi_var_from_str(3), unibi_num_from_var(3), unibi_str_from_var(3) instead.

    However, it is guaranteed that zero-initializing a "unibi_var_t" is equivalent to unibi_var_from_num(0).

enum unibi_boolean
    An enumeration of boolean capabilities. It has the following elements:

    "unibi_auto_left_margin"
    "unibi_auto_right_margin"
    "unibi_no_esc_ctlc"
    "unibi_ceol_standout_glitch"
    "unibi_eat_newline_glitch"
    "unibi_erase_overstrike"
    "unibi_generic_type"
    "unibi_hard_copy"
    "unibi_has_meta_key"
    "unibi_has_status_line"
    "unibi_insert_null_glitch"
    "unibi_memory_above"
    "unibi_memory_below"
    "unibi_move_insert_mode"
    "unibi_move_standout_mode"
    "unibi_over_strike"
    "unibi_status_line_esc_ok"
    "unibi_dest_tabs_magic_smso"
    "unibi_tilde_glitch"
    "unibi_transparent_underline"
    "unibi_xon_xoff"
    "unibi_needs_xon_xoff"
    "unibi_prtr_silent"
    "unibi_hard_cursor"
    "unibi_non_rev_rmcup"
    "unibi_no_pad_char"
    "unibi_non_dest_scroll_region"
    "unibi_can_change"
    "unibi_back_color_erase"
    "unibi_hue_lightness_saturation"
    "unibi_col_addr_glitch"
    "unibi_cr_cancels_micro_mode"
    "unibi_has_print_wheel"
    "unibi_row_addr_glitch"
    "unibi_semi_auto_right_margin"
    "unibi_cpi_changes_res"
    "unibi_lpi_changes_res"
    "unibi_backspaces_with_bs"
    "unibi_crt_no_scrolling"
    "unibi_no_correctly_working_cr"
    "unibi_gnu_has_meta_key"
    "unibi_linefeed_is_newline"
    "unibi_has_hardware_tabs"
    "unibi_return_does_clr_eol"

    The special values "unibi_boolean_begin_" and "unibi_boolean_end_" are provided to make it easier for programs to loop over all boolean capabilities. All of the enum values listed above are greater than "unibi_boolean_begin_" and less than "unibi_boolean_end_".

enum unibi_numeric
    An enumeration of numeric capabilities. It has the following elements:

    "unibi_columns"
    "unibi_init_tabs"
    "unibi_lines"
    "unibi_lines_of_memory"
    "unibi_magic_cookie_glitch"
    "unibi_padding_baud_rate"
    "unibi_virtual_terminal"
    "unibi_width_status_line"
    "unibi_num_labels"
    "unibi_label_height"
    "unibi_label_width"
    "unibi_max_attributes"
    "unibi_maximum_windows"
    "unibi_max_colors"
    "unibi_max_pairs"
    "unibi_no_color_video"
    "unibi_buffer_capacity"
    "unibi_dot_vert_spacing"
    "unibi_dot_horz_spacing"
    "unibi_max_micro_address"
    "unibi_max_micro_jump"
    "unibi_micro_col_size"
    "unibi_micro_line_size"
    "unibi_number_of_pins"
    "unibi_output_res_char"
    "unibi_output_res_line"
    "unibi_output_res_horz_inch"
    "unibi_output_res_vert_inch"
    "unibi_print_rate"
    "unibi_wide_char_size"
    "unibi_buttons"
    "unibi_bit_image_entwining"
    "unibi_bit_image_type"
    "unibi_magic_cookie_glitch_ul"
    "unibi_carriage_return_delay"
    "unibi_new_line_delay"
    "unibi_backspace_delay"
    "unibi_horizontal_tab_delay"
    "unibi_number_of_function_keys"

    The special values "unibi_numeric_begin_" and "unibi_numeric_end_" are provided to make it easier for programs to loop over all numeric capabilities. All of the enum values listed above are greater than "unibi_numeric_begin_" and less than "unibi_numeric_end_".

enum unibi_string
    An enumeration of string capabilities. It has the following elements:

    "unibi_back_tab"
    "unibi_bell"
    "unibi_carriage_return"
    "unibi_change_scroll_region"
    "unibi_clear_all_tabs"
    "unibi_clear_screen"
    "unibi_clr_eol"
    "unibi_clr_eos"
    "unibi_column_address"
    "unibi_command_character"
    "unibi_cursor_address"
    "unibi_cursor_down"
    "unibi_cursor_home"
    "unibi_cursor_invisible"
    "unibi_cursor_left"
    "unibi_cursor_mem_address"
    "unibi_cursor_normal"
    "unibi_cursor_right"
    "unibi_cursor_to_ll"
    "unibi_cursor_up"
    "unibi_cursor_visible"
    "unibi_delete_character"
    "unibi_delete_line"
    "unibi_dis_status_line"
    "unibi_down_half_line"
    "unibi_enter_alt_charset_mode"
    "unibi_enter_blink_mode"
    "unibi_enter_bold_mode"
    "unibi_enter_ca_mode"
    "unibi_enter_delete_mode"
    "unibi_enter_dim_mode"
    "unibi_enter_insert_mode"
    "unibi_enter_secure_mode"
    "unibi_enter_protected_mode"
    "unibi_enter_reverse_mode"
    "unibi_enter_standout_mode"
    "unibi_enter_underline_mode"
    "unibi_erase_chars"
    "unibi_exit_alt_charset_mode"
    "unibi_exit_attribute_mode"
    "unibi_exit_ca_mode"
    "unibi_exit_delete_mode"
    "unibi_exit_insert_mode"
    "unibi_exit_standout_mode"
    "unibi_exit_underline_mode"
    "unibi_flash_screen"
    "unibi_form_feed"
    "unibi_from_status_line"
    "unibi_init_1string"
    "unibi_init_2string"
    "unibi_init_3string"
    "unibi_init_file"
    "unibi_insert_character"
    "unibi_insert_line"
    "unibi_insert_padding"
    "unibi_key_backspace"
    "unibi_key_catab"
    "unibi_key_clear"
    "unibi_key_ctab"
    "unibi_key_dc"
    "unibi_key_dl"
    "unibi_key_down"
    "unibi_key_eic"
    "unibi_key_eol"
    "unibi_key_eos"
    "unibi_key_f0"
    "unibi_key_f1"
    "unibi_key_f10"
    "unibi_key_f2"
    "unibi_key_f3"
    "unibi_key_f4"
    "unibi_key_f5"
    "unibi_key_f6"
    "unibi_key_f7"
    "unibi_key_f8"
    "unibi_key_f9"
    "unibi_key_home"
    "unibi_key_ic"
    "unibi_key_il"
    "unibi_key_left"
    "unibi_key_ll"
    "unibi_key_npage"
    "unibi_key_ppage"
    "unibi_key_right"
    "unibi_key_sf"
    "unibi_key_sr"
    "unibi_key_stab"
    "unibi_key_up"
    "unibi_keypad_local"
    "unibi_keypad_xmit"
    "unibi_lab_f0"
    "unibi_lab_f1"
    "unibi_lab_f10"
    "unibi_lab_f2"
    "unibi_lab_f3"
    "unibi_lab_f4"
    "unibi_lab_f5"
    "unibi_lab_f6"
    "unibi_lab_f7"
    "unibi_lab_f8"
    "unibi_lab_f9"
    "unibi_meta_off"
    "unibi_meta_on"
    "unibi_newline"
    "unibi_pad_char"
    "unibi_parm_dch"
    "unibi_parm_delete_line"
    "unibi_parm_down_cursor"
    "unibi_parm_ich"
    "unibi_parm_index"
    "unibi_parm_insert_line"
    "unibi_parm_left_cursor"
    "unibi_parm_right_cursor"
    "unibi_parm_rindex"
    "unibi_parm_up_cursor"
    "unibi_pkey_key"
    "unibi_pkey_local"
    "unibi_pkey_xmit"
    "unibi_print_screen"
    "unibi_prtr_off"
    "unibi_prtr_on"
    "unibi_repeat_char"
    "unibi_reset_1string"
    "unibi_reset_2string"
    "unibi_reset_3string"
    "unibi_reset_file"
    "unibi_restore_cursor"
    "unibi_row_address"
    "unibi_save_cursor"
    "unibi_scroll_forward"
    "unibi_scroll_reverse"
    "unibi_set_attributes"
    "unibi_set_tab"
    "unibi_set_window"
    "unibi_tab"
    "unibi_to_status_line"
    "unibi_underline_char"
    "unibi_up_half_line"
    "unibi_init_prog"
    "unibi_key_a1"
    "unibi_key_a3"
    "unibi_key_b2"
    "unibi_key_c1"
    "unibi_key_c3"
    "unibi_prtr_non"
    "unibi_char_padding"
    "unibi_acs_chars"
    "unibi_plab_norm"
    "unibi_key_btab"
    "unibi_enter_xon_mode"
    "unibi_exit_xon_mode"
    "unibi_enter_am_mode"
    "unibi_exit_am_mode"
    "unibi_xon_character"
    "unibi_xoff_character"
    "unibi_ena_acs"
    "unibi_label_on"
    "unibi_label_off"
    "unibi_key_beg"
    "unibi_key_cancel"
    "unibi_key_close"
    "unibi_key_command"
    "unibi_key_copy"
    "unibi_key_create"
    "unibi_key_end"
    "unibi_key_enter"
    "unibi_key_exit"
    "unibi_key_find"
    "unibi_key_help"
    "unibi_key_mark"
    "unibi_key_message"
    "unibi_key_move"
    "unibi_key_next"
    "unibi_key_open"
    "unibi_key_options"
    "unibi_key_previous"
    "unibi_key_print"
    "unibi_key_redo"
    "unibi_key_reference"
    "unibi_key_refresh"
    "unibi_key_replace"
    "unibi_key_restart"
    "unibi_key_resume"
    "unibi_key_save"
    "unibi_key_suspend"
    "unibi_key_undo"
    "unibi_key_sbeg"
    "unibi_key_scancel"
    "unibi_key_scommand"
    "unibi_key_scopy"
    "unibi_key_screate"
    "unibi_key_sdc"
    "unibi_key_sdl"
    "unibi_key_select"
    "unibi_key_send"
    "unibi_key_seol"
    "unibi_key_sexit"
    "unibi_key_sfind"
    "unibi_key_shelp"
    "unibi_key_shome"
    "unibi_key_sic"
    "unibi_key_sleft"
    "unibi_key_smessage"
    "unibi_key_smove"
    "unibi_key_snext"
    "unibi_key_soptions"
    "unibi_key_sprevious"
    "unibi_key_sprint"
    "unibi_key_sredo"
    "unibi_key_sreplace"
    "unibi_key_sright"
    "unibi_key_srsume"
    "unibi_key_ssave"
    "unibi_key_ssuspend"
    "unibi_key_sundo"
    "unibi_req_for_input"
    "unibi_key_f11"
    "unibi_key_f12"
    "unibi_key_f13"
    "unibi_key_f14"
    "unibi_key_f15"
    "unibi_key_f16"
    "unibi_key_f17"
    "unibi_key_f18"
    "unibi_key_f19"
    "unibi_key_f20"
    "unibi_key_f21"
    "unibi_key_f22"
    "unibi_key_f23"
    "unibi_key_f24"
    "unibi_key_f25"
    "unibi_key_f26"
    "unibi_key_f27"
    "unibi_key_f28"
    "unibi_key_f29"
    "unibi_key_f30"
    "unibi_key_f31"
    "unibi_key_f32"
    "unibi_key_f33"
    "unibi_key_f34"
    "unibi_key_f35"
    "unibi_key_f36"
    "unibi_key_f37"
    "unibi_key_f38"
    "unibi_key_f39"
    "unibi_key_f40"
    "unibi_key_f41"
    "unibi_key_f42"
    "unibi_key_f43"
    "unibi_key_f44"
    "unibi_key_f45"
    "unibi_key_f46"
    "unibi_key_f47"
    "unibi_key_f48"
    "unibi_key_f49"
    "unibi_key_f50"
    "unibi_key_f51"
    "unibi_key_f52"
    "unibi_key_f53"
    "unibi_key_f54"
    "unibi_key_f55"
    "unibi_key_f56"
    "unibi_key_f57"
    "unibi_key_f58"
    "unibi_key_f59"
    "unibi_key_f60"
    "unibi_key_f61"
    "unibi_key_f62"
    "unibi_key_f63"
    "unibi_clr_bol"
    "unibi_clear_margins"
    "unibi_set_left_margin"
    "unibi_set_right_margin"
    "unibi_label_format"
    "unibi_set_clock"
    "unibi_display_clock"
    "unibi_remove_clock"
    "unibi_create_window"
    "unibi_goto_window"
    "unibi_hangup"
    "unibi_dial_phone"
    "unibi_quick_dial"
    "unibi_tone"
    "unibi_pulse"
    "unibi_flash_hook"
    "unibi_fixed_pause"
    "unibi_wait_tone"
    "unibi_user0"
    "unibi_user1"
    "unibi_user2"
    "unibi_user3"
    "unibi_user4"
    "unibi_user5"
    "unibi_user6"
    "unibi_user7"
    "unibi_user8"
    "unibi_user9"
    "unibi_orig_pair"
    "unibi_orig_colors"
    "unibi_initialize_color"
    "unibi_initialize_pair"
    "unibi_set_color_pair"
    "unibi_set_foreground"
    "unibi_set_background"
    "unibi_change_char_pitch"
    "unibi_change_line_pitch"
    "unibi_change_res_horz"
    "unibi_change_res_vert"
    "unibi_define_char"
    "unibi_enter_doublewide_mode"
    "unibi_enter_draft_quality"
    "unibi_enter_italics_mode"
    "unibi_enter_leftward_mode"
    "unibi_enter_micro_mode"
    "unibi_enter_near_letter_quality"
    "unibi_enter_normal_quality"
    "unibi_enter_shadow_mode"
    "unibi_enter_subscript_mode"
    "unibi_enter_superscript_mode"
    "unibi_enter_upward_mode"
    "unibi_exit_doublewide_mode"
    "unibi_exit_italics_mode"
    "unibi_exit_leftward_mode"
    "unibi_exit_micro_mode"
    "unibi_exit_shadow_mode"
    "unibi_exit_subscript_mode"
    "unibi_exit_superscript_mode"
    "unibi_exit_upward_mode"
    "unibi_micro_column_address"
    "unibi_micro_down"
    "unibi_micro_left"
    "unibi_micro_right"
    "unibi_micro_row_address"
    "unibi_micro_up"
    "unibi_order_of_pins"
    "unibi_parm_down_micro"
    "unibi_parm_left_micro"
    "unibi_parm_right_micro"
    "unibi_parm_up_micro"
    "unibi_select_char_set"
    "unibi_set_bottom_margin"
    "unibi_set_bottom_margin_parm"
    "unibi_set_left_margin_parm"
    "unibi_set_right_margin_parm"
    "unibi_set_top_margin"
    "unibi_set_top_margin_parm"
    "unibi_start_bit_image"
    "unibi_start_char_set_def"
    "unibi_stop_bit_image"
    "unibi_stop_char_set_def"
    "unibi_subscript_characters"
    "unibi_superscript_characters"
    "unibi_these_cause_cr"
    "unibi_zero_motion"
    "unibi_char_set_names"
    "unibi_key_mouse"
    "unibi_mouse_info"
    "unibi_req_mouse_pos"
    "unibi_get_mouse"
    "unibi_set_a_foreground"
    "unibi_set_a_background"
    "unibi_pkey_plab"
    "unibi_device_type"
    "unibi_code_set_init"
    "unibi_set0_des_seq"
    "unibi_set1_des_seq"
    "unibi_set2_des_seq"
    "unibi_set3_des_seq"
    "unibi_set_lr_margin"
    "unibi_set_tb_margin"
    "unibi_bit_image_repeat"
    "unibi_bit_image_newline"
    "unibi_bit_image_carriage_return"
    "unibi_color_names"
    "unibi_define_bit_image_region"
    "unibi_end_bit_image_region"
    "unibi_set_color_band"
    "unibi_set_page_length"
    "unibi_display_pc_char"
    "unibi_enter_pc_charset_mode"
    "unibi_exit_pc_charset_mode"
    "unibi_enter_scancode_mode"
    "unibi_exit_scancode_mode"
    "unibi_pc_term_options"
    "unibi_scancode_escape"
    "unibi_alt_scancode_esc"
    "unibi_enter_horizontal_hl_mode"
    "unibi_enter_left_hl_mode"
    "unibi_enter_low_hl_mode"
    "unibi_enter_right_hl_mode"
    "unibi_enter_top_hl_mode"
    "unibi_enter_vertical_hl_mode"
    "unibi_set_a_attributes"
    "unibi_set_pglen_inch"
    "unibi_termcap_init2"
    "unibi_termcap_reset"
    "unibi_linefeed_if_not_lf"
    "unibi_backspace_if_not_bs"
    "unibi_other_non_function_keys"
    "unibi_arrow_key_map"
    "unibi_acs_ulcorner"
    "unibi_acs_llcorner"
    "unibi_acs_urcorner"
    "unibi_acs_lrcorner"
    "unibi_acs_ltee"
    "unibi_acs_rtee"
    "unibi_acs_btee"
    "unibi_acs_ttee"
    "unibi_acs_hline"
    "unibi_acs_vline"
    "unibi_acs_plus"
    "unibi_memory_lock"
    "unibi_memory_unlock"
    "unibi_box_chars_1"

    The special values "unibi_string_begin_" and "unibi_string_end_" are provided to make it easier for programs to loop over all string capabilities. All of the enum values listed above are greater than "unibi_string_begin_" and less than "unibi_string_end_".

SEE ALSO
terminfo(5), unibi_dummy(3), unibi_from_mem(3), unibi_destroy(3), unibi_dump(3), unibi_get_name(3), unibi_set_name(3), unibi_get_aliases(3), unibi_set_aliases(3), unibi_get_bool(3), unibi_set_bool(3), unibi_get_num(3), unibi_set_num(3), unibi_get_str(3), unibi_set_str(3), unibi_from_fp(3), unibi_from_fd(3), unibi_from_file(3), unibi_from_term(3), unibi_from_env(3), unibi_terminfo_dirs(3), unibi_name_bool(3), unibi_short_name_bool(3), unibi_name_num(3), unibi_short_name_num(3), unibi_name_str(3), unibi_short_name_str(3), unibi_count_ext_bool(3), unibi_count_ext_num(3), unibi_count_ext_str(3), unibi_get_ext_bool(3), unibi_get_ext_num(3), unibi_get_ext_str(3), unibi_set_ext_bool(3), unibi_set_ext_num(3), unibi_set_ext_str(3), unibi_get_ext_bool_name(3), unibi_get_ext_num_name(3), unibi_get_ext_str_name(3), unibi_set_ext_bool_name(3), unibi_set_ext_num_name(3), unibi_set_ext_str_name(3), unibi_add_ext_bool(3), unibi_add_ext_num(3), unibi_add_ext_str(3), unibi_del_ext_bool(3), unibi_del_ext_num(3), unibi_del_ext_str(3), unibi_var_from_num(3), unibi_var_from_str(3), unibi_num_from_var(3), unibi_str_from_var(3), unibi_format(3), unibi_run(3)