aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--termkey-internal.h2
-rw-r--r--termkey.c6
2 files changed, 8 insertions, 0 deletions
diff --git a/termkey-internal.h b/termkey-internal.h
index 5494cf6..9f0904a 100644
--- a/termkey-internal.h
+++ b/termkey-internal.h
@@ -10,6 +10,8 @@ struct termkey_driver
{
void *(*new_driver)(termkey_t *tk, const char *term);
void (*free_driver)(void *);
+ void (*start_driver)(termkey_t *tk);
+ void (*stop_driver)(termkey_t *tk);
termkey_result (*getkey)(termkey_t *tk, termkey_key *key, int force);
};
diff --git a/termkey.c b/termkey.c
index a1904b6..8f55dd3 100644
--- a/termkey.c
+++ b/termkey.c
@@ -185,6 +185,9 @@ termkey_t *termkey_new_full(int fd, int flags, size_t buffsize, int waittime)
}
}
+ if(tk->driver.start_driver)
+ (*tk->driver.start_driver)(tk);
+
return tk;
abort_free_keynames:
@@ -217,6 +220,9 @@ void termkey_free(termkey_t *tk)
void termkey_destroy(termkey_t *tk)
{
+ if(tk->driver.stop_driver)
+ (*tk->driver.stop_driver)(tk);
+
if(tk->restore_termios_valid)
tcsetattr(tk->fd, TCSANOW, &tk->restore_termios);