Added termkey_keyname2sym() to API

This commit is contained in:
Paul LeoNerd Evans 2008-12-02 00:56:43 +00:00
parent f75bdf1516
commit 2fba93b690
4 changed files with 39 additions and 1 deletions

View File

@ -824,6 +824,20 @@ const char *termkey_get_keyname(termkey_t *tk, termkey_keysym sym)
return "UNKNOWN"; return "UNKNOWN";
} }
termkey_keysym termkey_keyname2sym(termkey_t *tk, const char *keyname)
{
/* We store an array, so we can't do better than a linear search. Doesn't
* matter because user won't be calling this too often */
termkey_keysym sym;
for(sym = 0; sym < tk->nkeynames; sym++)
if(tk->keynames[sym] && strcmp(keyname, tk->keynames[sym]) == 0)
return sym;
return TERMKEY_SYM_UNKNOWN;
}
static termkey_keysym register_c0(termkey_t *tk, termkey_keysym sym, unsigned char ctrl, const char *name) static termkey_keysym register_c0(termkey_t *tk, termkey_keysym sym, unsigned char ctrl, const char *name)
{ {
return register_c0_full(tk, sym, 0, 0, ctrl, name); return register_c0_full(tk, sym, 0, 0, ctrl, name);

View File

@ -156,6 +156,8 @@ termkey_result termkey_advisereadable(termkey_t *tk);
termkey_keysym termkey_register_keyname(termkey_t *tk, termkey_keysym sym, const char *name); termkey_keysym termkey_register_keyname(termkey_t *tk, termkey_keysym sym, const char *name);
const char *termkey_get_keyname(termkey_t *tk, termkey_keysym sym); const char *termkey_get_keyname(termkey_t *tk, termkey_keysym sym);
termkey_keysym termkey_keyname2sym(termkey_t *tk, const char *keyname);
typedef enum { typedef enum {
TERMKEY_FORMAT_LONGMOD = 1 << 0, // Shift-... instead of S-... TERMKEY_FORMAT_LONGMOD = 1 << 0, // Shift-... instead of S-...
TERMKEY_FORMAT_CARETCTRL = 1 << 1, // ^X instead of C-X TERMKEY_FORMAT_CARETCTRL = 1 << 1, // ^X instead of C-X

View File

@ -10,11 +10,12 @@ termkey_get_keyname \- return a string name for a symbolic key
.sp .sp
Link with \fI-ltermkey\fP. Link with \fI-ltermkey\fP.
.SH DESCRIPTION .SH DESCRIPTION
\fBtermkey_get_keyname\fP returns a human-readable string name for the symbolic key value given by \fBsym\fP. The returned string is owned by the termkey instance \fItk\fP so should not be modified or freed. The returned pointer is guaranteed to be valid until the termkey instance is released using \fBtermkey_destroy\fP(3). \fBtermkey_get_keyname\fP returns a human-readable string name for the symbolic key value given by \fBsym\fP. The returned string is owned by the termkey instance \fItk\fP so should not be modified or freed. The returned pointer is guaranteed to be valid until the termkey instance is released using \fBtermkey_destroy\fP(3). This function is the inverse of \fBtermkey_keyname2sym\fP(3).
.SH "RETURN VALUE" .SH "RETURN VALUE"
\fBtermkey_get_key\fP() returns a pointer to a string. \fBtermkey_get_key\fP() returns a pointer to a string.
.SH "SEE ALSO" .SH "SEE ALSO"
.BR termkey_new (3), .BR termkey_new (3),
.BR termkey_getkey (3), .BR termkey_getkey (3),
.BR termkey_waitkey (3), .BR termkey_waitkey (3),
.BR termkey_keyname2sym (3),
.BR termkey_snprint_key (3) .BR termkey_snprint_key (3)

21
termkey_keyname2sym.3 Normal file
View File

@ -0,0 +1,21 @@
.TH TERMKEY_KEYNAME2SYM 3
.SH NAME
termkey_keyname2sym \- look up a symbolic key value for a string name
.SH SYNOPSIS
.nf
.B #include <termkey.h>
.sp
.BI "termkey_keysym termkey_keyname2sym(termkey_t *" tk ", const char *" keyname );
.fi
.sp
Link with \fI-ltermkey\fP.
.SH DESCRIPTION
\fBtermkey_keyname2sym\fP looks up the symbolic key value represented by the given string name. This is a case-sensitive comparison. If the given name is not found, \fBTERMKEY_SYM_UNKNOWN\fP is returned instead. This function is the inverse of \fBtermkey_get_keyname\fP(3).
.PP
Because the key names are stored in an array indexed by the symbol number, this function has to perform a linear search of the names. Use of this function should be restricted to converting key names into symbolic values during a program's initialisation, so that efficient comparisons can be done while it is running.
.SH "RETURN VALUE"
\fBtermkey_get_key\fP() returns a pointer to a string.
.SH "SEE ALSO"
.BR termkey_new (3),
.BR termkey_get_keyname (3),
.BR termkey_snprint_key (3)