## Keys Keys — Key value lookup and transformation |

## Functions

#define | SAFE()
void | gnt_init_keys ()
void | gnt_keys_refine ()
const char * | gnt_key_translate ()
const char * | gnt_key_lookup ()
void | gnt_keys_add_combination ()
void | gnt_keys_del_combination ()
int | gnt_keys_find_combination ()

## Types and Values

extern char * | gnt_key_cup
extern char * | gnt_key_cdown
extern char * | gnt_key_cleft
extern char * | gnt_key_cright
#define | GNT_KEY_POPUP
#define | GNT_KEY_LEFT
#define | GNT_KEY_RIGHT
#define | GNT_KEY_UP
#define | GNT_KEY_DOWN
#define | GNT_KEY_CTRL_UP
#define | GNT_KEY_CTRL_DOWN
#define | GNT_KEY_CTRL_RIGHT
#define | GNT_KEY_CTRL_LEFT
#define | GNT_KEY_PGUP
#define | GNT_KEY_PGDOWN
#define | GNT_KEY_HOME
#define | GNT_KEY_END
#define | GNT_KEY_ENTER
#define | GNT_KEY_BACKSPACE
#define | GNT_KEY_DEL
#define | GNT_KEY_INS
#define | GNT_KEY_BACK_TAB
#define | GNT_KEY_CTRL_A
#define | GNT_KEY_CTRL_B
#define | GNT_KEY_CTRL_D
#define | GNT_KEY_CTRL_E
#define | GNT_KEY_CTRL_F
#define | GNT_KEY_CTRL_G
#define | GNT_KEY_CTRL_H
#define | GNT_KEY_CTRL_I
#define | GNT_KEY_CTRL_J
#define | GNT_KEY_CTRL_K
#define | GNT_KEY_CTRL_L
#define | GNT_KEY_CTRL_M
#define | GNT_KEY_CTRL_N
#define | GNT_KEY_CTRL_O
#define | GNT_KEY_CTRL_P
#define | GNT_KEY_CTRL_R
#define | GNT_KEY_CTRL_T
#define | GNT_KEY_CTRL_U
#define | GNT_KEY_CTRL_V
#define | GNT_KEY_CTRL_W
#define | GNT_KEY_CTRL_X
#define | GNT_KEY_CTRL_Y
#define | GNT_KEY_F1
#define | GNT_KEY_F2
#define | GNT_KEY_F3
#define | GNT_KEY_F4
#define | GNT_KEY_F5
#define | GNT_KEY_F6
#define | GNT_KEY_F7
#define | GNT_KEY_F8
#define | GNT_KEY_F9
#define | GNT_KEY_F10
#define | GNT_KEY_F11
#define | GNT_KEY_F12

## Description

## Functions

### SAFE()

    #define SAFE(x)   ((cur_term && (x)) ? (x) : "")

### gnt_init_keys ()

    void
    gnt_init_keys (void);

Initialize the keys.

### gnt_keys_refine ()

    void
    gnt_keys_refine (char *text);

Refine input text. This usually looks at what the terminal claims it is, and tries to change the text to work around some oft-broken terminfo entries.

#### Parameters

text | The input text to refine. |

### gnt_key_translate ()

    const char *
    gnt_key_translate (const char *name);

Translate a user-readable representation of an input to a machine-readable representation.

#### Parameters

name | The user-readable representation of an input (eg.: c-t) |

#### Returns

A machine-readable representation of the input.

### gnt_key_lookup ()

    const char *
    gnt_key_lookup (const char *key);

Translate a machine-readable representation of an input to a user-readable representation.

#### Parameters

key | The machine-readable representation of an input. |

#### Returns

A user-readable representation of the input (eg.: c-t).

### gnt_keys_add_combination ()

    void
    gnt_keys_add_combination (const char *key);

Add a key combination to the internal key-tree.

#### Parameters

key | The key to add |

### gnt_keys_del_combination ()

    void
    gnt_keys_del_combination (const char *key);

Remove a key combination from the internal key-tree.

#### Parameters

key | The key to remove. |

### gnt_keys_find_combination ()

    int
    gnt_keys_find_combination (const char *key);

Find a combination from the given string.

#### Parameters

key | The input string. |

#### Returns

The number of bytes in the combination that starts at the beginning of key (can be 0).

## Types and Values

### gnt_key_cup

    extern char *gnt_key_cup;

### gnt_key_cdown

    extern char *gnt_key_cdown;

### gnt_key_cleft

    extern char *gnt_key_cleft;

### gnt_key_cright

    extern char *gnt_key_cright;

### GNT_KEY_POPUP

    #define GNT_KEY_POPUP   SAFE(key_f16)   /* Apparently */

### GNT_KEY_LEFT

    #define GNT_KEY_LEFT   SAFE(key_left)

### GNT_KEY_RIGHT

    #define GNT_KEY_RIGHT  SAFE(key_right)

### GNT_KEY_UP

    #define GNT_KEY_UP     SAFE(key_up)

### GNT_KEY_DOWN

    #define GNT_KEY_DOWN   SAFE(key_down)

### GNT_KEY_CTRL_UP

    #define GNT_KEY_CTRL_UP     SAFE(gnt_key_cup)

### GNT_KEY_CTRL_DOWN

    #define GNT_KEY_CTRL_DOWN   SAFE(gnt_key_cdown)

### GNT_KEY_CTRL_RIGHT

    #define GNT_KEY_CTRL_RIGHT  SAFE(gnt_key_cright)

### GNT_KEY_CTRL_LEFT

    #define GNT_KEY_CTRL_LEFT   SAFE(gnt_key_cleft)

### GNT_KEY_PGUP

    #define GNT_KEY_PGUP   SAFE(key_ppage)

### GNT_KEY_PGDOWN

    #define GNT_KEY_PGDOWN SAFE(key_npage)

### GNT_KEY_HOME

    #define GNT_KEY_HOME   SAFE(key_home)

### GNT_KEY_END

    #define GNT_KEY_END    SAFE(key_end)

### GNT_KEY_ENTER

    #define GNT_KEY_ENTER  SAFE(carriage_return)

### GNT_KEY_BACKSPACE

    #define GNT_KEY_BACKSPACE SAFE(key_backspace)

### GNT_KEY_DEL

    #define GNT_KEY_DEL    SAFE(key_dc)

### GNT_KEY_INS

    #define GNT_KEY_INS    SAFE(key_ic)

### GNT_KEY_BACK_TAB

    #define GNT_KEY_BACK_TAB ((cur_term && back_tab) ? back_tab : SAFE(key_btab))

### GNT_KEY_CTRL_A

    #define GNT_KEY_CTRL_A     "\001"

### GNT_KEY_CTRL_B

    #define GNT_KEY_CTRL_B     "\002"

### GNT_KEY_CTRL_D

    #define GNT_KEY_CTRL_D     "\004"

### GNT_KEY_CTRL_E

    #define GNT_KEY_CTRL_E     "\005"

### GNT_KEY_CTRL_F

    #define GNT_KEY_CTRL_F     "\006"

### GNT_KEY_CTRL_G

    #define GNT_KEY_CTRL_G     "\007"

### GNT_KEY_CTRL_H

    #define GNT_KEY_CTRL_H     "\010"

### GNT_KEY_CTRL_I

    #define GNT_KEY_CTRL_I     "\011"

### GNT_KEY_CTRL_J

    #define GNT_KEY_CTRL_J     "\012"

### GNT_KEY_CTRL_K

    #define GNT_KEY_CTRL_K     "\013"

### GNT_KEY_CTRL_L

    #define GNT_KEY_CTRL_L     "\014"

### GNT_KEY_CTRL_M

    #define GNT_KEY_CTRL_M     "\012"

### GNT_KEY_CTRL_N

    #define GNT_KEY_CTRL_N     "\016"

### GNT_KEY_CTRL_O

    #define GNT_KEY_CTRL_O     "\017"

### GNT_KEY_CTRL_P

    #define GNT_KEY_CTRL_P     "\020"

### GNT_KEY_CTRL_R

    #define GNT_KEY_CTRL_R     "\022"

### GNT_KEY_CTRL_T

    #define GNT_KEY_CTRL_T     "\024"

### GNT_KEY_CTRL_U

    #define GNT_KEY_CTRL_U     "\025"

### GNT_KEY_CTRL_V

    #define GNT_KEY_CTRL_V     "\026"

### GNT_KEY_CTRL_W

    #define GNT_KEY_CTRL_W     "\027"

### GNT_KEY_CTRL_X

    #define GNT_KEY_CTRL_X     "\030"

### GNT_KEY_CTRL_Y

    #define GNT_KEY_CTRL_Y     "\031"

### GNT_KEY_F1

    #define GNT_KEY_F1         SAFE(key_f1)

### GNT_KEY_F2

    #define GNT_KEY_F2         SAFE(key_f2)

### GNT_KEY_F3

    #define GNT_KEY_F3         SAFE(key_f3)

### GNT_KEY_F4

    #define GNT_KEY_F4         SAFE(key_f4)

### GNT_KEY_F5

    #define GNT_KEY_F5         SAFE(key_f5)

### GNT_KEY_F6

    #define GNT_KEY_F6         SAFE(key_f6)

### GNT_KEY_F7

    #define GNT_KEY_F7         SAFE(key_f7)

### GNT_KEY_F8

    #define GNT_KEY_F8         SAFE(key_f8)

### GNT_KEY_F9

    #define GNT_KEY_F9         SAFE(key_f9)

### GNT_KEY_F10

    #define GNT_KEY_F10        SAFE(key_f10)

### GNT_KEY_F11

    #define GNT_KEY_F11        SAFE(key_f11)

### GNT_KEY_F12

    #define GNT_KEY_F12        SAFE(key_f12)