typedef void (*KeyFunc)(Control *c, unsigned long key);
void on_control_key_down (Control *c, KeyFunc key_down); void on_control_key_action(Control *c, KeyFunc key_action);
enum {
BELL = 0x07, /* ASCII bell character */
BKSP = 0x08, /* ASCII backspace */
VTAB = 0x0B, /* ASCII vertical tab */
FF = 0x0C, /* ASCII form-feed */
ESC = 0x1B /* ASCII escape character */
};
enum {
INS = 0x2041, /* Insert key */
DEL = 0x2326, /* Delete key */
HOME = 0x21B8, /* Home key */
END = 0x2198, /* End key */
PGUP = 0x21DE, /* Page Up key */
PGDN = 0x21DF, /* Page Down key */
ENTER = 0x2324 /* Numerical keypad Enter key */
};
enum {
LEFT = 0x2190, /* Left arrow key */
UP = 0x2191, /* Up arrow key */
RIGHT = 0x2192, /* Right arrow key */
DOWN = 0x2193 /* Down arrow key */
};
enum {
F1 = 0x276C, /* Function keys */
F2 = 0x276D,
F3 = 0x276E,
F4 = 0x276F,
F5 = 0x2770,
F6 = 0x2771,
F7 = 0x2772,
F8 = 0x2773,
F9 = 0x2774,
F10 = 0x2775
};
enum {
CONTROL = 0x20000000L, /* Modifier bit-fields */
SHIFT = 0x10000000L
};
Keyboard events can be caught using the on_control_key_down and on_control_key_action functions. The first function sets the call-back used to handle normal Unicode keys, including the return and escape keys. Keys which do not produce Unicode values are sent to the second function's call-back, such as when the user presses an arrow key or a function key.
Keyboard call-backs can be associated with controls. Typically you should not use these functions with pre-defined controls such as buttons, fields etc, only with custom-designed controls, since the pre-defined controls already make use of their own keyboard call-backs.
The call-back specified by the on_control_key_down function may be passed any of the following keys:
To see other keyboard events, the on_control_key_action function associates a call-back with a control or window. That call-back can see the following key values:
These keys should not be handled by same call-back as ordinary key_down events, since a Unicode keyboard may be able to generate the same value explicitly, and then confusion would exist about whether the user pressed an arrow key, or generated a Unicode value which happens to map to the same number.