diff --git a/src/lib3270/ctlr.c b/src/lib3270/ctlr.c index 2f3b875..ec9f163 100644 --- a/src/lib3270/ctlr.c +++ b/src/lib3270/ctlr.c @@ -309,7 +309,7 @@ static void ctlr_connect(H3270 *session, int ignored unused, void *dunno) session->ea_buf[-1].fa = FA_PRINTABLE | FA_PROTECT; if (!IN_3270 || (IN_SSCP && (session->kybdlock & KL_OIA_TWAIT))) { - kybdlock_clr(KL_OIA_TWAIT, "ctlr_connect"); + kybdlock_clr(session,KL_OIA_TWAIT, "ctlr_connect"); status_reset(session); } @@ -457,7 +457,7 @@ void ctlr_erase(H3270 *session, int alt) { CHECK_SESSION_HANDLE(session); - kybd_inhibit(False); + kybd_inhibit(session,False); ctlr_clear(session,True); session->erase(session); @@ -1067,7 +1067,7 @@ ctlr_erase_all_unprotected(void) unsigned char fa; Boolean f; - kybd_inhibit(False); + kybd_inhibit(&h3270,False); if (h3270.formatted) { /* find first field attribute */ @@ -1162,7 +1162,7 @@ ctlr_write(unsigned char buf[], int buflen, Boolean erase) h3270.formatted = True; \ } - kybd_inhibit(False); + kybd_inhibit(&h3270,False); if (buflen < 2) return PDS_BAD_CMD; @@ -1865,7 +1865,7 @@ ctlr_write(unsigned char buf[], int buflen, Boolean erase) h3270.aid = AID_NO; do_reset(&h3270,False); } else if (h3270.kybdlock & KL_OIA_TWAIT) { - kybdlock_clr(KL_OIA_TWAIT, "ctlr_write"); + kybdlock_clr(&h3270,KL_OIA_TWAIT, "ctlr_write"); status_changed(&h3270,LIB3270_STATUS_SYSWAIT); } if (wcc_sound_alarm) diff --git a/src/lib3270/kybd.c b/src/lib3270/kybd.c index c8b0477..470bd7b 100644 --- a/src/lib3270/kybd.c +++ b/src/lib3270/kybd.c @@ -370,38 +370,47 @@ kybdlock_set(unsigned int bits, const char *cause unused) /* Clear bits in the keyboard lock. */ void -kybdlock_clr(unsigned int bits, const char *cause unused) +kybdlock_clr(H3270 *session, unsigned int bits, const char *cause unused) { unsigned int n; - n = h3270.kybdlock & ~bits; - if (n != h3270.kybdlock) { + n = session->kybdlock & ~bits; + + if (n != session->kybdlock) + { #if defined(KYBDLOCK_TRACE) trace_event(" %s: kybdlock &= ~0x%04x, 0x%04x -> 0x%04x\n",cause, bits, kybdlock, n); #endif - if ((h3270.kybdlock ^ n) & KL_DEFERRED_UNLOCK) { + if ((session->kybdlock ^ n) & KL_DEFERRED_UNLOCK) + { /* Turned off deferred unlock. */ - h3270.unlock_delay_time = 0; + session->unlock_delay_time = 0; } - h3270.kybdlock = n; - status_changed(&h3270,LIB3270_STATUS_KYBDLOCK); + session->kybdlock = n; + status_changed(session,LIB3270_STATUS_KYBDLOCK); } } -/* +/** * Set or clear enter-inhibit mode. + * + * @param session Session handle + * @param inhibit New state + * */ -void -kybd_inhibit(Boolean inhibit) +void kybd_inhibit(H3270 *session, Boolean inhibit) { - if (inhibit) { + if (inhibit) + { kybdlock_set(KL_ENTER_INHIBIT, "kybd_inhibit"); - if (h3270.kybdlock == KL_ENTER_INHIBIT) - status_reset(&h3270); - } else { - kybdlock_clr(KL_ENTER_INHIBIT, "kybd_inhibit"); - if (!h3270.kybdlock) - status_reset(&h3270); + if (session->kybdlock == KL_ENTER_INHIBIT) + status_reset(session); + } + else + { + kybdlock_clr(session,KL_ENTER_INHIBIT, "kybd_inhibit"); + if (!session->kybdlock) + status_reset(session); } } @@ -413,7 +422,7 @@ void kybd_connect(H3270 *session, int connected, void *dunno) if (session->kybdlock & KL_DEFERRED_UNLOCK) RemoveTimeOut(session->unlock_id); - kybdlock_clr(-1, "kybd_connect"); + kybdlock_clr(session, -1, "kybd_connect"); if (connected) { /* Wait for any output or a WCC(restore) from the host */ @@ -431,7 +440,7 @@ void kybd_in3270(H3270 *session, int in3270 unused, void *dunno) { if (session->kybdlock & KL_DEFERRED_UNLOCK) RemoveTimeOut(session->unlock_id); - kybdlock_clr(~KL_AWAITING_FIRST, "kybd_in3270"); + kybdlock_clr(session,~KL_AWAITING_FIRST, "kybd_in3270"); /* There might be a macro pending. */ if (CONNECTED) @@ -1378,7 +1387,7 @@ LIB3270_KEY_ACTION( tab ) if (hSession->kybdlock) { if (KYBDLOCK_IS_OERR) { - kybdlock_clr(KL_OERR_MASK, "Tab"); + kybdlock_clr(hSession,KL_OERR_MASK, "Tab"); status_reset(hSession); } else { ENQUEUE_ACTION(lib3270_tab); @@ -1408,7 +1417,7 @@ LIB3270_KEY_ACTION( backtab ) if (hSession->kybdlock) { if (KYBDLOCK_IS_OERR) { - kybdlock_clr(KL_OERR_MASK, "BackTab"); + kybdlock_clr(hSession,KL_OERR_MASK, "BackTab"); status_reset(hSession); } else { ENQUEUE_ACTION(lib3270_backtab); @@ -1447,7 +1456,7 @@ LIB3270_KEY_ACTION( backtab ) static void defer_unlock(H3270 *session) { - kybdlock_clr(KL_DEFERRED_UNLOCK, "defer_unlock"); + kybdlock_clr(session,KL_DEFERRED_UNLOCK, "defer_unlock"); status_reset(session); if (CONNECTED) ps_process(); @@ -1501,10 +1510,10 @@ void do_reset(H3270 *session, Boolean explicit) #endif /*]*/ || (!session->unlock_delay) // && !sms_in_macro()) || (session->unlock_delay_time != 0 && (time(NULL) - session->unlock_delay_time) > 1)) { - kybdlock_clr(-1, "do_reset"); + kybdlock_clr(session,-1, "do_reset"); } else if (session->kybdlock & (KL_DEFERRED_UNLOCK | KL_OIA_TWAIT | KL_OIA_LOCKED | KL_AWAITING_FIRST)) { - kybdlock_clr(~KL_DEFERRED_UNLOCK, "do_reset"); + kybdlock_clr(session,~KL_DEFERRED_UNLOCK, "do_reset"); kybdlock_set(KL_DEFERRED_UNLOCK, "do_reset"); session->unlock_id = AddTimeOut(UNLOCK_MS, session, defer_unlock); } @@ -1580,7 +1589,7 @@ LIB3270_CURSOR_ACTION( left ) { if (KYBDLOCK_IS_OERR) { - kybdlock_clr(KL_OERR_MASK, "Left"); + kybdlock_clr(hSession,KL_OERR_MASK, "Left"); status_reset(&h3270); } else @@ -1843,8 +1852,8 @@ LIB3270_CURSOR_ACTION( right ) { if (KYBDLOCK_IS_OERR) { - kybdlock_clr(KL_OERR_MASK, "Right"); - status_reset(&h3270); + kybdlock_clr(hSession,KL_OERR_MASK, "Right"); + status_reset(hSession); } else { @@ -1876,43 +1885,6 @@ LIB3270_CURSOR_ACTION( right ) /* - * Cursor left 2 positions. - */ /* -void -Left2_action(Widget w unused, XEvent *event, String *params, - Cardinal *num_params) -{ - register int baddr; - enum dbcs_state d; - -// reset_idle_timer(); - if (kybdlock) { - if (KYBDLOCK_IS_OERR) { - kybdlock_clr(KL_OERR_MASK, "Left2"); - status_reset(&h3270); - } else { - enq_ta(Left2_action, CN, CN); - return; - } - } -#if defined(X3270_ANSI) - if (IN_ANSI) - return; -#endif - baddr = cursor_addr; - DEC_BA(baddr); - d = ctlr_dbcs_state(baddr); - if (IS_LEFT(d)) - DEC_BA(baddr); - DEC_BA(baddr); - d = ctlr_dbcs_state(baddr); - if (IS_LEFT(d)) - DEC_BA(baddr); - cursor_move(baddr); -} */ - - -/* * Cursor to previous word. */ LIB3270_ACTION( previousword ) @@ -1979,44 +1951,7 @@ LIB3270_ACTION( previousword ) return 0; } - -/* - * Cursor right 2 positions. - */ /* -void -Right2_action(Widget w unused, XEvent *event, String *params, - Cardinal *num_params) -{ - register int baddr; - enum dbcs_state d; -// reset_idle_timer(); - if (kybdlock) { - if (KYBDLOCK_IS_OERR) { - kybdlock_clr(KL_OERR_MASK, "Right2"); - status_reset(&h3270); - } else { - enq_ta(Right2_action, CN, CN); - return; - } - } -#if defined(X3270_ANSI) - if (IN_ANSI) - return; -#endif - baddr = cursor_addr; - INC_BA(baddr); - d = ctlr_dbcs_state(baddr); - if (IS_RIGHT(d)) - INC_BA(baddr); - INC_BA(baddr); - d = ctlr_dbcs_state(baddr); - if (IS_RIGHT(d)) - INC_BA(baddr); - cursor_move(baddr); -} -*/ - /* Find the next unprotected word, or -1 */ static int nu_word(int baddr) @@ -2146,8 +2081,8 @@ LIB3270_CURSOR_ACTION( up ) if (hSession->kybdlock) { if (KYBDLOCK_IS_OERR) { - kybdlock_clr(KL_OERR_MASK, "Up"); - status_reset(&h3270); + kybdlock_clr(hSession,KL_OERR_MASK, "Up"); + status_reset(hSession); } else { @@ -2184,8 +2119,8 @@ LIB3270_CURSOR_ACTION( down ) { if (KYBDLOCK_IS_OERR) { - kybdlock_clr(KL_OERR_MASK, "Down"); - status_reset(&h3270); + kybdlock_clr(hSession,KL_OERR_MASK, "Down"); + status_reset(hSession); } else { ENQUEUE_ACTION(lib3270_cursor_down); @@ -2899,7 +2834,7 @@ kybd_scroll_lock(Boolean lock) if (lock) kybdlock_set(KL_SCROLLED, "kybd_scroll_lock"); else - kybdlock_clr(KL_SCROLLED, "kybd_scroll_lock"); + kybdlock_clr(&h3270, KL_SCROLLED, "kybd_scroll_lock"); } /* diff --git a/src/lib3270/kybdc.h b/src/lib3270/kybdc.h index 8b18909..3c49da8 100644 --- a/src/lib3270/kybdc.h +++ b/src/lib3270/kybdc.h @@ -43,8 +43,8 @@ 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(unsigned int bits, const char *cause); -LIB3270_INTERNAL void kybd_inhibit(Boolean inhibit); +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); diff --git a/src/lib3270/sf.c b/src/lib3270/sf.c index 7d4d54b..b7e476b 100644 --- a/src/lib3270/sf.c +++ b/src/lib3270/sf.c @@ -980,5 +980,5 @@ static void query_reply_end(void) { net_output(); - kybd_inhibit(True); + kybd_inhibit(&h3270,True); } diff --git a/src/lib3270/telnet.c b/src/lib3270/telnet.c index 956764a..c29b7e4 100644 --- a/src/lib3270/telnet.c +++ b/src/lib3270/telnet.c @@ -1191,7 +1191,7 @@ static int telnet_fsm(H3270 *session, unsigned char c) cooked_init(); #endif /*]*/ host_in3270(session,CONNECTED_ANSI); - kybdlock_clr(KL_AWAITING_FIRST, "telnet_fsm"); + kybdlock_clr(session,KL_AWAITING_FIRST, "telnet_fsm"); status_reset(session); ps_process(); } -- libgit2 0.21.2