'int' might not be wide enough to hold any Unicode codepoint; use 'long'
This commit is contained in:
parent
37156ad580
commit
fd769d621e
|
@ -164,7 +164,7 @@ static termkey_result getkey_csi(termkey_t *tk, size_t introlen, termkey_key *ke
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned char cmd = CHARAT(csi_end);
|
unsigned char cmd = CHARAT(csi_end);
|
||||||
int arg[16];
|
long arg[16];
|
||||||
char present = 0;
|
char present = 0;
|
||||||
int args = 0;
|
int args = 0;
|
||||||
|
|
||||||
|
@ -226,7 +226,7 @@ static termkey_result getkey_csi(termkey_t *tk, size_t introlen, termkey_key *ke
|
||||||
key->code.sym = TERMKEY_SYM_UNKNOWN;
|
key->code.sym = TERMKEY_SYM_UNKNOWN;
|
||||||
|
|
||||||
if(key->code.sym == TERMKEY_SYM_UNKNOWN)
|
if(key->code.sym == TERMKEY_SYM_UNKNOWN)
|
||||||
fprintf(stderr, "CSI function key %d\n", arg[0]);
|
fprintf(stderr, "CSI function key %ld\n", arg[0]);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// We know from the logic above that cmd must be >= 0x40 and < 0x80
|
// We know from the logic above that cmd must be >= 0x40 and < 0x80
|
||||||
|
@ -236,7 +236,7 @@ static termkey_result getkey_csi(termkey_t *tk, size_t introlen, termkey_key *ke
|
||||||
key->modifiers |= csi->csi_ss3s[cmd - 0x40].modifier_set;
|
key->modifiers |= csi->csi_ss3s[cmd - 0x40].modifier_set;
|
||||||
|
|
||||||
if(key->code.sym == TERMKEY_SYM_UNKNOWN)
|
if(key->code.sym == TERMKEY_SYM_UNKNOWN)
|
||||||
fprintf(stderr, "CSI arg1=%d arg2=%d cmd=%c\n", arg[0], arg[1], cmd);
|
fprintf(stderr, "CSI arg1=%ld arg2=%ld cmd=%c\n", arg[0], arg[1], cmd);
|
||||||
}
|
}
|
||||||
|
|
||||||
return TERMKEY_RES_KEY;
|
return TERMKEY_RES_KEY;
|
||||||
|
|
|
@ -48,7 +48,7 @@ struct termkey {
|
||||||
// want exported as real symbols in the library
|
// want exported as real symbols in the library
|
||||||
struct {
|
struct {
|
||||||
void (*eat_bytes)(termkey_t *tk, size_t count);
|
void (*eat_bytes)(termkey_t *tk, size_t count);
|
||||||
void (*emit_codepoint)(termkey_t *tk, int codepoint, termkey_key *key);
|
void (*emit_codepoint)(termkey_t *tk, long codepoint, termkey_key *key);
|
||||||
termkey_result (*getkey_simple)(termkey_t *tk, termkey_key *key);
|
termkey_result (*getkey_simple)(termkey_t *tk, termkey_key *key);
|
||||||
} method;
|
} method;
|
||||||
};
|
};
|
||||||
|
|
10
termkey.c
10
termkey.c
|
@ -16,7 +16,7 @@ static struct termkey_driver *drivers[] = {
|
||||||
|
|
||||||
// Forwards for the "protected" methods
|
// Forwards for the "protected" methods
|
||||||
static void eat_bytes(termkey_t *tk, size_t count);
|
static void eat_bytes(termkey_t *tk, size_t count);
|
||||||
static void emit_codepoint(termkey_t *tk, int codepoint, termkey_key *key);
|
static void emit_codepoint(termkey_t *tk, long codepoint, termkey_key *key);
|
||||||
static termkey_result getkey_simple(termkey_t *tk, termkey_key *key);
|
static termkey_result getkey_simple(termkey_t *tk, termkey_key *key);
|
||||||
|
|
||||||
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);
|
||||||
|
@ -230,7 +230,7 @@ static void eat_bytes(termkey_t *tk, size_t count)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline int utf8_seqlen(int codepoint)
|
static inline int utf8_seqlen(long codepoint)
|
||||||
{
|
{
|
||||||
if(codepoint < 0x0000080) return 1;
|
if(codepoint < 0x0000080) return 1;
|
||||||
if(codepoint < 0x0000800) return 2;
|
if(codepoint < 0x0000800) return 2;
|
||||||
|
@ -242,7 +242,7 @@ static inline int utf8_seqlen(int codepoint)
|
||||||
|
|
||||||
static void fill_utf8(termkey_key *key)
|
static void fill_utf8(termkey_key *key)
|
||||||
{
|
{
|
||||||
int codepoint = key->code.codepoint;
|
long codepoint = key->code.codepoint;
|
||||||
int nbytes = utf8_seqlen(codepoint);
|
int nbytes = utf8_seqlen(codepoint);
|
||||||
|
|
||||||
key->utf8[nbytes] = 0;
|
key->utf8[nbytes] = 0;
|
||||||
|
@ -265,7 +265,7 @@ static void fill_utf8(termkey_key *key)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void emit_codepoint(termkey_t *tk, int codepoint, termkey_key *key)
|
static void emit_codepoint(termkey_t *tk, long codepoint, termkey_key *key)
|
||||||
{
|
{
|
||||||
if(codepoint < 0x20) {
|
if(codepoint < 0x20) {
|
||||||
// C0 range
|
// C0 range
|
||||||
|
@ -338,7 +338,7 @@ static termkey_result getkey_simple(termkey_t *tk, termkey_key *key)
|
||||||
else if(tk->flags & TERMKEY_FLAG_UTF8) {
|
else if(tk->flags & TERMKEY_FLAG_UTF8) {
|
||||||
// Some UTF-8
|
// Some UTF-8
|
||||||
int nbytes;
|
int nbytes;
|
||||||
int codepoint;
|
long codepoint;
|
||||||
|
|
||||||
key->type = TERMKEY_TYPE_UNICODE;
|
key->type = TERMKEY_TYPE_UNICODE;
|
||||||
key->modifiers = 0;
|
key->modifiers = 0;
|
||||||
|
|
|
@ -82,7 +82,7 @@ typedef int termkey_keysym;
|
||||||
typedef struct {
|
typedef struct {
|
||||||
termkey_type type;
|
termkey_type type;
|
||||||
union {
|
union {
|
||||||
int codepoint; // TERMKEY_TYPE_UNICODE
|
long codepoint; // TERMKEY_TYPE_UNICODE
|
||||||
int number; // TERMKEY_TYPE_FUNCTION
|
int number; // TERMKEY_TYPE_FUNCTION
|
||||||
termkey_keysym sym; // TERMKEY_TYPE_KEYSYM
|
termkey_keysym sym; // TERMKEY_TYPE_KEYSYM
|
||||||
} code;
|
} code;
|
||||||
|
|
Loading…
Reference in New Issue