Interpret space as Unicode by default, add a flag to make it symbolic instead

This commit is contained in:
Paul LeoNerd Evans 2011-03-23 22:17:25 +00:00
parent ba0c32e8d8
commit a71f68dd57
4 changed files with 7 additions and 3 deletions

2
demo.c
View File

@ -30,7 +30,7 @@ int main(int argc, char *argv[])
} }
} }
tk = termkey_new(0, 0); tk = termkey_new(0, TERMKEY_FLAG_SPACESYMBOL);
if(!tk) { if(!tk) {
fprintf(stderr, "Cannot allocate termkey instance\n"); fprintf(stderr, "Cannot allocate termkey instance\n");

View File

@ -447,7 +447,7 @@ static void emit_codepoint(TermKey *tk, long codepoint, TermKeyKey *key)
key->type = TERMKEY_TYPE_KEYSYM; key->type = TERMKEY_TYPE_KEYSYM;
} }
} }
else if(codepoint == 0x20 && !(tk->flags & TERMKEY_FLAG_NOINTERPRET)) { else if(codepoint == 0x20 && (tk->flags & TERMKEY_FLAG_SPACESYMBOL)) {
// ASCII space // ASCII space
key->type = TERMKEY_TYPE_KEYSYM; key->type = TERMKEY_TYPE_KEYSYM;
key->code.sym = TERMKEY_SYM_SPACE; key->code.sym = TERMKEY_SYM_SPACE;

View File

@ -133,11 +133,12 @@ typedef struct {
typedef struct _TermKey TermKey; typedef struct _TermKey TermKey;
enum { enum {
TERMKEY_FLAG_NOINTERPRET = 1 << 0, // Do not interpret C0//G1 codes if possible TERMKEY_FLAG_NOINTERPRET = 1 << 0, // Do not interpret C0//DEL codes if possible
TERMKEY_FLAG_CONVERTKP = 1 << 1, // Convert KP codes to regular keypresses TERMKEY_FLAG_CONVERTKP = 1 << 1, // Convert KP codes to regular keypresses
TERMKEY_FLAG_RAW = 1 << 2, // Input is raw bytes, not UTF-8 TERMKEY_FLAG_RAW = 1 << 2, // Input is raw bytes, not UTF-8
TERMKEY_FLAG_UTF8 = 1 << 3, // Input is definitely UTF-8 TERMKEY_FLAG_UTF8 = 1 << 3, // Input is definitely UTF-8
TERMKEY_FLAG_NOTERMIOS = 1 << 4, // Do not make initial termios calls on construction TERMKEY_FLAG_NOTERMIOS = 1 << 4, // Do not make initial termios calls on construction
TERMKEY_FLAG_SPACESYMBOL = 1 << 5, // Space is symbolic rather than Unicode
}; };
void termkey_check_version(int major, int minor); void termkey_check_version(int major, int minor);

View File

@ -38,6 +38,9 @@ Ignore locale settings; force UTF-8 recombining on. This flag overrides \fBTERMK
Even if the terminal file descriptor \fIfd\fP represents a Even if the terminal file descriptor \fIfd\fP represents a
.SM TTY .SM TTY
device, do not call the \fBtcsetattr\fP() \fBtermios\fP function on it to set it to canonical input mode. device, do not call the \fBtcsetattr\fP() \fBtermios\fP function on it to set it to canonical input mode.
.TP
.B TERMKEY_FLAG_SPACESYMBOL
Report space as being a symbolic key rather than a Unicode codepoint.
.PP .PP
When the constructor is invoked, it attempts to detect if the current locale is UTF-8 aware or not, and sets either the \fBTERMKEY_FLAG_UTF8\fP or \fBTERMKEY_FLAG_RAW\fP flag. One of these two bits will always be in effect. The current flags in effect can be obtained by \fBtermkey_get_flags\fP(). When the constructor is invoked, it attempts to detect if the current locale is UTF-8 aware or not, and sets either the \fBTERMKEY_FLAG_UTF8\fP or \fBTERMKEY_FLAG_RAW\fP flag. One of these two bits will always be in effect. The current flags in effect can be obtained by \fBtermkey_get_flags\fP().
.SH VERSION CHECK MACRO .SH VERSION CHECK MACRO