Commit 3f3862ca0fb6f049941034e3a0f93bac1b98ac39
1 parent
92d61be1
Exists in
master
and in
1 other branch
Updating IPC methods.
Showing
7 changed files
with
48 additions
and
33 deletions
Show diff stats
client/src/core/constants.cc
client/src/session/local/actions.cc
| ... | ... | @@ -105,33 +105,34 @@ |
| 105 | 105 | typedef int (*ActionCallback)(H3270 *); |
| 106 | 106 | |
| 107 | 107 | static const ActionCallback actions[] = { |
| 108 | - lib3270_enter, // ENTER | |
| 109 | - lib3270_erase, // ERASE | |
| 110 | - lib3270_eraseeof, // ERASE_EOF | |
| 111 | - lib3270_eraseeol, // ERASE_EOL | |
| 112 | - lib3270_eraseinput, // ERASE_INPUT | |
| 113 | - lib3270_kybdreset, // KYBD_RESET | |
| 114 | - lib3270_newline, // NEWLINE | |
| 115 | - lib3270_clear, // CLEAR | |
| 116 | - lib3270_select_field, // SELECT_FIELD | |
| 117 | - lib3270_select_all, // SELECT_ALL | |
| 118 | - lib3270_unselect, // UNSELECT | |
| 119 | - lib3270_reselect, // RESELECT | |
| 120 | - lib3270_delete, // DELETE | |
| 121 | - lib3270_dup, // DUP | |
| 122 | - lib3270_fieldmark, // FIELDMARK | |
| 123 | - lib3270_backspace, // BACKSPACE | |
| 124 | - lib3270_previousword, // WORD_PREVIOUS | |
| 125 | - lib3270_nextword, // WORD_NEXT | |
| 126 | - lib3270_fieldend, // FIELD_END | |
| 127 | - lib3270_firstfield, // FIELD_FIRST | |
| 128 | - lib3270_nextfield, // FIELD_NEXT | |
| 129 | - lib3270_previousfield, // FIELD_PREVIOUS | |
| 130 | - lib3270_attn, // ATTN | |
| 131 | - lib3270_break, // BREAK | |
| 132 | - lib3270_deleteword, // WORD_DELETE | |
| 133 | - lib3270_deletefield, // FIELD_DELETE | |
| 134 | - lib3270_sysreq, // SYSREQ | |
| 108 | + lib3270_enter, // ENTER | |
| 109 | + lib3270_erase, // ERASE | |
| 110 | + lib3270_eraseeof, // ERASE_EOF | |
| 111 | + lib3270_eraseeol, // ERASE_EOL | |
| 112 | + lib3270_eraseinput, // ERASE_INPUT | |
| 113 | + lib3270_kybdreset, // KYBD_RESET | |
| 114 | + lib3270_newline, // NEWLINE | |
| 115 | + lib3270_clear, // CLEAR | |
| 116 | + lib3270_select_field, // SELECT_FIELD | |
| 117 | + lib3270_select_all, // SELECT_ALL | |
| 118 | + lib3270_unselect, // UNSELECT | |
| 119 | + lib3270_reselect, // RESELECT | |
| 120 | + lib3270_delete, // DELETE | |
| 121 | + lib3270_dup, // DUP | |
| 122 | + lib3270_fieldmark, // FIELDMARK | |
| 123 | + lib3270_backspace, // BACKSPACE | |
| 124 | + lib3270_previousword, // WORD_PREVIOUS | |
| 125 | + lib3270_nextword, // WORD_NEXT | |
| 126 | + lib3270_fieldend, // FIELD_END | |
| 127 | + lib3270_firstfield, // FIELD_FIRST | |
| 128 | + lib3270_nextfield, // FIELD_NEXT | |
| 129 | + lib3270_previousfield, // FIELD_PREVIOUS | |
| 130 | + lib3270_attn, // ATTN | |
| 131 | + lib3270_break, // BREAK | |
| 132 | + lib3270_deleteword, // WORD_DELETE | |
| 133 | + lib3270_deletefield, // FIELD_DELETE | |
| 134 | + lib3270_sysreq, // SYSREQ | |
| 135 | + lib3270_clear_operator_error, // KYBD_UNLOCK | |
| 135 | 136 | }; |
| 136 | 137 | |
| 137 | 138 | if( ((size_t) action) > (sizeof(actions)/sizeof(actions[0]))) { | ... | ... |
client/src/session/local/private.h
| ... | ... | @@ -130,6 +130,7 @@ |
| 130 | 130 | unsigned short getScreenHeight() const override; |
| 131 | 131 | unsigned short getScreenLength() const override; |
| 132 | 132 | void setUnlockDelay(unsigned short delay) override; |
| 133 | + void setLockOnOperatorError(bool lock) override; | |
| 133 | 134 | void setCharSet(const char *charset = NULL) override; |
| 134 | 135 | void setCursor(unsigned short addr) override; |
| 135 | 136 | void setCursor(unsigned short row, unsigned short col) override; | ... | ... |
client/src/session/local/properties.cc
| ... | ... | @@ -166,6 +166,11 @@ |
| 166 | 166 | chkResponse(lib3270_set_unlock_delay(hSession,delay)); |
| 167 | 167 | } |
| 168 | 168 | |
| 169 | + void Local::Session::setLockOnOperatorError(bool lock) { | |
| 170 | + std::lock_guard<std::mutex> guard(sync); | |
| 171 | + chkResponse(lib3270_set_lock_on_operator_error(hSession,lock ? 1 : 0)); | |
| 172 | + } | |
| 173 | + | |
| 169 | 174 | void Local::Session::setCursor(unsigned short addr) { |
| 170 | 175 | std::lock_guard<std::mutex> lock(sync); |
| 171 | 176 | chkResponse(lib3270_set_cursor_address(hSession,addr)); | ... | ... |
client/src/session/remote/private.h
| ... | ... | @@ -128,6 +128,7 @@ |
| 128 | 128 | unsigned short getScreenHeight() const override; |
| 129 | 129 | unsigned short getScreenLength() const override; |
| 130 | 130 | void setUnlockDelay(unsigned short delay) override; |
| 131 | + void setLockOnOperatorError(bool lock) override; | |
| 131 | 132 | void setCharSet(const char *charset = NULL) override; |
| 132 | 133 | void setCursor(unsigned short addr) override; |
| 133 | 134 | void setCursor(unsigned short row, unsigned short col) override; | ... | ... |
client/src/session/remote/properties.cc
| ... | ... | @@ -133,15 +133,15 @@ |
| 133 | 133 | } |
| 134 | 134 | |
| 135 | 135 | void IPC::Session::setUnlockDelay(unsigned short delay) { |
| 136 | - | |
| 137 | 136 | setProperty("unlock_delay", (uint32_t) delay); |
| 137 | + } | |
| 138 | 138 | |
| 139 | + void IPC::Session::setLockOnOperatorError(bool lock) { | |
| 140 | + setProperty("oerrlock", (uint32_t) lock); | |
| 139 | 141 | } |
| 140 | 142 | |
| 141 | 143 | void IPC::Session::setCursor(unsigned short addr) { |
| 142 | - | |
| 143 | - setProperty("setCursorAddress", (uint32_t) addr); | |
| 144 | - | |
| 144 | + setProperty("cursor_address", (uint32_t) addr); | |
| 145 | 145 | } |
| 146 | 146 | |
| 147 | 147 | void IPC::Session::setCursor(unsigned short row, unsigned short col) { | ... | ... |
common/src/include/lib3270/ipc.h
| ... | ... | @@ -216,7 +216,8 @@ |
| 216 | 216 | BREAK, |
| 217 | 217 | WORD_DELETE, ///< @brief Backspaces the cursor until it hits the front of a word (does a ^W). |
| 218 | 218 | FIELD_DELETE, ///< @brief Delete field key (does a ^U). |
| 219 | - SYSREQ | |
| 219 | + SYSREQ, | |
| 220 | + KYBD_UNLOCK, ///< @brief Unlock the keyboard if it was locked by operator error. | |
| 220 | 221 | }; |
| 221 | 222 | |
| 222 | 223 | /// @brief TN3270 Session. |
| ... | ... | @@ -303,6 +304,7 @@ |
| 303 | 304 | virtual void setHostURL(const char *url) = 0; |
| 304 | 305 | |
| 305 | 306 | virtual void setUnlockDelay(unsigned short delay = 350) = 0; |
| 307 | + virtual void setLockOnOperatorError(bool lock = true) = 0; | |
| 306 | 308 | |
| 307 | 309 | virtual unsigned short getScreenWidth() const = 0; |
| 308 | 310 | virtual unsigned short getScreenHeight() const = 0; |
| ... | ... | @@ -492,6 +494,10 @@ |
| 492 | 494 | return session->setUnlockDelay(delay); |
| 493 | 495 | } |
| 494 | 496 | |
| 497 | + inline void setLockOnOperatorError(bool lock = true) { | |
| 498 | + return session->setLockOnOperatorError(lock); | |
| 499 | + } | |
| 500 | + | |
| 495 | 501 | inline void setCharSet(const char *charset) { |
| 496 | 502 | return session->setCharSet(charset); |
| 497 | 503 | } | ... | ... |