diff options
author | Paul LeoNerd Evans <leonerd@leonerd.org.uk> | 2008-10-09 20:23:45 +0100 |
---|---|---|
committer | Paul LeoNerd Evans <leonerd@leonerd.org.uk> | 2008-10-09 20:23:45 +0100 |
commit | 05639c477367fa436ef33a0a4dc5fc37215acd94 (patch) | |
tree | 39397ecf384a611af004b6b393fefbf7492b92a6 /driver-csi.c | |
parent | a61b916c18f6997a76186609e0697bd893865412 (diff) | |
download | termo-05639c477367fa436ef33a0a4dc5fc37215acd94.tar.gz termo-05639c477367fa436ef33a0a4dc5fc37215acd94.tar.xz termo-05639c477367fa436ef33a0a4dc5fc37215acd94.zip |
Pass 'term' string into new_driver virtual method; have drivers sensitive to it and return NULL if they can't handle. Try CSI driver first; only for xterm-alikes
Diffstat (limited to 'driver-csi.c')
-rw-r--r-- | driver-csi.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/driver-csi.c b/driver-csi.c index f8188c8..be709a3 100644 --- a/driver-csi.c +++ b/driver-csi.c @@ -24,8 +24,18 @@ static termkey_keysym register_csi_ss3_full(termkey_csi *csi, termkey_type type, static termkey_keysym register_ss3kpalt_full(termkey_csi *csi, termkey_type type, termkey_keysym sym, int modifier_set, int modifier_mask, unsigned char cmd, const char *name, char kpalt); static termkey_keysym register_csifunc_full(termkey_csi *csi, termkey_type type, termkey_keysym sym, int modifier_set, int modifier_mask, int number, const char *name); -static void *new_driver(termkey_t *tk) +static void *new_driver(termkey_t *tk, const char *term) { + // Only care about term types beginning "xterm" + if(strncmp(term, "xterm", 5) != 0) + return NULL; + + // We want "xterm" or "xtermc" or "xterm-..." + if(term[5] != 0 && term[5] != '-' && term[5] != 'c') + return NULL; + + // Excellent - we'll continue + termkey_csi *csi = malloc(sizeof *csi); csi->tk = tk; |