Add or fix some comments.

This commit is contained in:
Nicholas Marriott 2009-10-26 13:29:24 +00:00
parent b3604dcf83
commit 25d2000625

View File

@ -24,6 +24,13 @@
#include "tmux.h" #include "tmux.h"
/*
* This file is rather misleadingly named, it contains the code which takes a
* key code and translates it into something suitable to be sent to the
* application running in a pane (similar to input.c does in the other
* direction with output).
*/
struct input_key_ent { struct input_key_ent {
int key; int key;
const char *data; const char *data;
@ -88,7 +95,7 @@ struct input_key_ent input_keys[] = {
{ KEYC_RIGHT, "\033[C", 0 }, { KEYC_RIGHT, "\033[C", 0 },
{ KEYC_LEFT, "\033[D", 0 }, { KEYC_LEFT, "\033[D", 0 },
/* Keypad keys. Keypad versions must come first.*/ /* Keypad keys. Keypad versions must come first. */
{ KEYC_KP_SLASH, "/", INPUTKEY_KEYPAD }, { KEYC_KP_SLASH, "/", INPUTKEY_KEYPAD },
{ KEYC_KP_STAR, "*", INPUTKEY_KEYPAD }, { KEYC_KP_STAR, "*", INPUTKEY_KEYPAD },
{ KEYC_KP_MINUS, "-", INPUTKEY_KEYPAD }, { KEYC_KP_MINUS, "-", INPUTKEY_KEYPAD },
@ -124,18 +131,20 @@ struct input_key_ent input_keys[] = {
{ KEYC_KP_PERIOD, "\033On", 0 }, { KEYC_KP_PERIOD, "\033On", 0 },
}; };
/* Translate a key code from client into an output key sequence. */ /* Translate a key code into an output key sequence. */
void void
input_key(struct window_pane *wp, int key) input_key(struct window_pane *wp, int key)
{ {
struct input_key_ent *ike; struct input_key_ent *ike;
u_int i; u_int i;
char ch;
size_t dlen; size_t dlen;
int xterm_keys;
log_debug2("writing key 0x%x", key); log_debug2("writing key 0x%x", key);
/*
* If this is a normal 7-bit key, just send it, with a leading escape
* if necessary.
*/
if (key != KEYC_NONE && (key & ~KEYC_ESCAPE) < 0x100) { if (key != KEYC_NONE && (key & ~KEYC_ESCAPE) < 0x100) {
if (key & KEYC_ESCAPE) if (key & KEYC_ESCAPE)
buffer_write8(wp->out, '\033'); buffer_write8(wp->out, '\033');
@ -143,6 +152,7 @@ input_key(struct window_pane *wp, int key)
return; return;
} }
/* Otherwise look the key up in the table. */
for (i = 0; i < nitems(input_keys); i++) { for (i = 0; i < nitems(input_keys); i++) {
ike = &input_keys[i]; ike = &input_keys[i];
@ -172,10 +182,7 @@ input_key(struct window_pane *wp, int key)
log_debug2("found key 0x%x: \"%s\"", key, ike->data); log_debug2("found key 0x%x: \"%s\"", key, ike->data);
/* /* Prefix a \033 for escape and set bit 5 of the last byte for ctrl. */
* Not in xterm mode. Prefix a \033 for escape, and set bit 5 of the
* last byte for ctrl.
*/
if (key & KEYC_ESCAPE) if (key & KEYC_ESCAPE)
buffer_write8(wp->out, '\033'); buffer_write8(wp->out, '\033');
if (key & KEYC_CTRL && ike->flags & INPUTKEY_CTRL) { if (key & KEYC_CTRL && ike->flags & INPUTKEY_CTRL) {
@ -186,7 +193,7 @@ input_key(struct window_pane *wp, int key)
buffer_write(wp->out, ike->data, dlen); buffer_write(wp->out, ike->data, dlen);
} }
/* Handle input mouse. */ /* Translate mouse and output. */
void void
input_mouse(struct window_pane *wp, struct mouse_event *m) input_mouse(struct window_pane *wp, struct mouse_event *m)
{ {