diff --git a/iocalls.c b/iocalls.c index bc34380..18c590d 100644 --- a/iocalls.c +++ b/iocalls.c @@ -614,6 +614,16 @@ void remove_input_calls(H3270 *session) } } +LIB3270_EXPORT void lib3270_register_time_handlers(void * (*add)(unsigned long interval_ms, H3270 *session, void (*proc)(H3270 *session)), void (*rm)(void *timer)) +{ + if(add) + add_timeout = add; + + if(rm) + remove_timeout = rm; + +} + LIB3270_EXPORT int lib3270_register_handlers(const struct lib3270_callbacks *cbk) { if(!cbk) @@ -622,11 +632,7 @@ LIB3270_EXPORT int lib3270_register_handlers(const struct lib3270_callbacks *cbk if(cbk->sz != sizeof(struct lib3270_callbacks)) return EINVAL; - if(cbk->AddTimeOut) - add_timeout = cbk->AddTimeOut; - - if(cbk->RemoveTimeOut) - remove_timeout = cbk->RemoveTimeOut; + lib3270_register_time_handlers(cbk->AddTimeOut,cbk->RemoveTimeOut); if(cbk->AddInput) add_input = cbk->AddInput; diff --git a/kybdc.h b/kybdc.h index 3c49da8..6a26324 100644 --- a/kybdc.h +++ b/kybdc.h @@ -19,39 +19,57 @@ #ifndef KYBDC_H_INCLUDED -#define KYBDC_H_INCLUDED - -/* keyboard lock states */ -// LIB3270_INTERNAL unsigned int kybdlock; -#define KL_OERR_MASK 0x000f -#define KL_OERR_PROTECTED 1 -#define KL_OERR_NUMERIC 2 -#define KL_OERR_OVERFLOW 3 -#define KL_OERR_DBCS 4 -#define KL_NOT_CONNECTED 0x0010 -#define KL_AWAITING_FIRST 0x0020 -#define KL_OIA_TWAIT 0x0040 -#define KL_OIA_LOCKED 0x0080 -#define KL_DEFERRED_UNLOCK 0x0100 -#define KL_ENTER_INHIBIT 0x0200 -#define KL_SCROLLED 0x0400 -#define KL_OIA_MINUS 0x0800 - - -/* other functions */ -LIB3270_INTERNAL void add_xk(KeySym key, KeySym assoc); -LIB3270_INTERNAL void clear_xks(void); -LIB3270_INTERNAL void do_reset(H3270 *session, Boolean explicit); -LIB3270_INTERNAL void hex_input(char *s); -LIB3270_INTERNAL void kybdlock_clr(H3270 *session, unsigned int bits, const char *cause); -LIB3270_INTERNAL void kybd_inhibit(H3270 *session, Boolean inhibit); -LIB3270_INTERNAL void kybd_init(void); -LIB3270_INTERNAL int kybd_prime(void); -LIB3270_INTERNAL void kybd_scroll_lock(Boolean lock); -LIB3270_INTERNAL Boolean run_ta(void); -LIB3270_INTERNAL int state_from_keymap(char keymap[32]); -LIB3270_INTERNAL void kybd_connect(H3270 *session, int connected, void *dunno); -LIB3270_INTERNAL void kybd_in3270(H3270 *session, int in3270 unused, void *dunno); + #define KYBDC_H_INCLUDED + + /* keyboard lock states */ + typedef enum lib3270_kl_state + { + LIB3270_KL_OERR_MASK = 0x000f, + LIB3270_KL_OERR_PROTECTED = 0x0001, + LIB3270_KL_OERR_NUMERIC = 0x0002, + LIB3270_KL_OERR_OVERFLOW = 0x0003, + LIB3270_KL_OERR_DBCS = 0x0004, + LIB3270_KL_NOT_CONNECTED = 0x0010, + LIB3270_KL_AWAITING_FIRST = 0x0020, + LIB3270_KL_OIA_TWAIT = 0x0040, + LIB3270_KL_OIA_LOCKED = 0x0080, + LIB3270_KL_DEFERRED_UNLOCK = 0x0100, + LIB3270_KL_ENTER_INHIBIT = 0x0200, + LIB3270_KL_SCROLLED = 0x0400, + LIB3270_KL_OIA_MINUS = 0x0800 + + } LIB3270_KL_STATE; + + #define KL_OERR_MASK LIB3270_KL_OERR_MASK + #define KL_OERR_PROTECTED LIB3270_KL_OERR_PROTECTED + #define KL_OERR_NUMERIC LIB3270_KL_OERR_NUMERIC + #define KL_OERR_OVERFLOW LIB3270_KL_OERR_OVERFLOW + #define KL_OERR_DBCS LIB3270_KL_OERR_DBCS + #define KL_NOT_CONNECTED LIB3270_KL_NOT_CONNECTED + #define KL_AWAITING_FIRST LIB3270_KL_AWAITING_FIRST + #define KL_OIA_TWAIT LIB3270_KL_OIA_TWAIT + #define KL_OIA_LOCKED LIB3270_KL_OIA_LOCKED + #define KL_DEFERRED_UNLOCK LIB3270_KL_DEFERRED_UNLOCK + #define KL_ENTER_INHIBIT LIB3270_KL_ENTER_INHIBIT + #define KL_SCROLLED LIB3270_KL_SCROLLED + #define KL_OIA_MINUS LIB3270_KL_OIA_MINUS + + + + /* other functions */ + LIB3270_INTERNAL void add_xk(KeySym key, KeySym assoc); + LIB3270_INTERNAL void clear_xks(void); + LIB3270_INTERNAL void do_reset(H3270 *session, Boolean explicit); + LIB3270_INTERNAL void hex_input(char *s); + LIB3270_INTERNAL void kybdlock_clr(H3270 *session, unsigned int bits, const char *cause); + LIB3270_INTERNAL void kybd_inhibit(H3270 *session, Boolean inhibit); + LIB3270_INTERNAL void kybd_init(void); + LIB3270_INTERNAL int kybd_prime(void); + LIB3270_INTERNAL void kybd_scroll_lock(Boolean lock); + LIB3270_INTERNAL Boolean run_ta(void); + LIB3270_INTERNAL int state_from_keymap(char keymap[32]); + LIB3270_INTERNAL void kybd_connect(H3270 *session, int connected, void *dunno); + LIB3270_INTERNAL void kybd_in3270(H3270 *session, int in3270 unused, void *dunno); #endif /* KYBDC_H_INCLUDED */ -- libgit2 0.21.2