Mercurial > 510Connectbot
comparison src/com/five_ten_sg/connectbot/service/TerminalKeyListener.java @ 50:2cd3d8091e37 tn5250
start tn5250 integration
author | Carl Byington <carl@five-ten-sg.com> |
---|---|
date | Wed, 11 Jun 2014 11:50:25 -0700 |
parents | 8887bff45dee |
children | 8c6de858bb73 |
comparison
equal
deleted
inserted
replaced
49:8887bff45dee | 50:2cd3d8091e37 |
---|---|
83 private final TerminalManager manager; | 83 private final TerminalManager manager; |
84 private final TerminalBridge bridge; | 84 private final TerminalBridge bridge; |
85 private final vt320 buffer; | 85 private final vt320 buffer; |
86 private String encoding; | 86 private String encoding; |
87 | 87 |
88 private String keymode = null; | 88 private String keymode = null; |
89 private boolean hardKeyboard = false; | 89 protected boolean hardKeyboard = false; |
90 private String customKeyboard = null; | 90 protected boolean hardKeyboardHidden; |
91 private String customKeyboard = null; | |
91 | 92 |
92 private int metaState = 0; | 93 private int metaState = 0; |
93 private int mDeadKey = 0; | 94 private int mDeadKey = 0; |
94 | 95 |
95 // TODO add support for the new API. | 96 // TODO add support for the new API. |
96 private ClipboardManager clipboard = null; | 97 private ClipboardManager clipboard = null; |
97 private boolean selectingForCopy = false; | 98 private boolean selectingForCopy = false; |
98 private final SelectionArea selectionArea; | 99 private final SelectionArea selectionArea; |
99 private final SharedPreferences prefs; | 100 protected final SharedPreferences prefs; |
100 | 101 |
101 | 102 |
102 public TerminalKeyListener(TerminalManager manager, | 103 public TerminalKeyListener(TerminalManager manager, |
103 TerminalBridge bridge, | 104 TerminalBridge bridge, |
104 vt320 buffer, | 105 vt320 buffer, |
108 this.buffer = buffer; | 109 this.buffer = buffer; |
109 this.encoding = encoding; | 110 this.encoding = encoding; |
110 selectionArea = new SelectionArea(); | 111 selectionArea = new SelectionArea(); |
111 prefs = PreferenceManager.getDefaultSharedPreferences(manager); | 112 prefs = PreferenceManager.getDefaultSharedPreferences(manager); |
112 prefs.registerOnSharedPreferenceChangeListener(this); | 113 prefs.registerOnSharedPreferenceChangeListener(this); |
113 hardKeyboard = (manager.res.getConfiguration().keyboard | 114 hardKeyboard = (manager.res.getConfiguration().keyboard == Configuration.KEYBOARD_QWERTY); |
114 == Configuration.KEYBOARD_QWERTY); | 115 hardKeyboardHidden = manager.hardKeyboardHidden; |
115 updateKeymode(); | 116 updateKeymode(); |
116 updateCustomKeymap(); | 117 updateCustomKeymap(); |
117 } | 118 } |
118 | 119 |
119 public void sendEscape() { | 120 public void sendEscape() { |
125 * Modify the keys to make more sense to a host then pass it to the vt320. | 126 * Modify the keys to make more sense to a host then pass it to the vt320. |
126 */ | 127 */ |
127 public boolean onKey(View v, int keyCode, KeyEvent event) { | 128 public boolean onKey(View v, int keyCode, KeyEvent event) { |
128 try { | 129 try { |
129 // skip keys if we aren't connected yet or have been disconnected | 130 // skip keys if we aren't connected yet or have been disconnected |
130 if (bridge.isDisconnected() || bridge.transport == null) | 131 if (bridge.isDisconnected()) return false; |
131 return false; | |
132 | |
133 final boolean hardKeyboardHidden = manager.hardKeyboardHidden; | |
134 | 132 |
135 // Ignore all key-up events except for the special keys | 133 // Ignore all key-up events except for the special keys |
136 if (event.getAction() == KeyEvent.ACTION_UP) { | 134 if (event.getAction() == KeyEvent.ACTION_UP) { |
137 // There's nothing here for virtual keyboard users. | 135 // There's nothing here for virtual keyboard users. |
138 if (!hardKeyboard || (hardKeyboard && hardKeyboardHidden)) | 136 if (!hardKeyboard || hardKeyboardHidden) return false; |
139 return false; | |
140 | 137 |
141 // if keycode debugging enabled, log and print the pressed key | 138 // if keycode debugging enabled, log and print the pressed key |
142 if (prefs.getBoolean(PreferenceConstants.DEBUG_KEYCODES, false)) { | 139 if (prefs.getBoolean(PreferenceConstants.DEBUG_KEYCODES, false)) { |
143 String keyCodeString = String.format(": %d", keyCode); | 140 String keyCodeString = String.format(": %d", keyCode); |
144 String toastText = v.getContext().getString(R.string.keycode_pressed) + keyCodeString; | 141 String toastText = v.getContext().getString(R.string.keycode_pressed) + keyCodeString; |
274 metaState &= ~META_CTRL_ON; | 271 metaState &= ~META_CTRL_ON; |
275 bridge.redraw(); | 272 bridge.redraw(); |
276 | 273 |
277 // If there is no hard keyboard or there is a hard keyboard currently hidden, | 274 // If there is no hard keyboard or there is a hard keyboard currently hidden, |
278 // CTRL-1 through CTRL-9 will send F1 through F9 | 275 // CTRL-1 through CTRL-9 will send F1 through F9 |
279 if ((!hardKeyboard || (hardKeyboard && hardKeyboardHidden)) | 276 if ((!hardKeyboard || hardKeyboardHidden) && sendFunctionKey(keyCode)) |
280 && sendFunctionKey(keyCode)) | |
281 return true; | 277 return true; |
282 | 278 |
283 uchar = keyAsControl(uchar); | 279 uchar = keyAsControl(uchar); |
284 } | 280 } |
285 | 281 |
1133 return true; | 1129 return true; |
1134 | 1130 |
1135 return false; | 1131 return false; |
1136 } | 1132 } |
1137 | 1133 |
1138 private boolean fullKeyboard() { | 1134 protected boolean fullKeyboard() { |
1139 if (customKeyboard.equals(PreferenceConstants.CUSTOM_KEYMAP_FULL) || | 1135 if (customKeyboard.equals(PreferenceConstants.CUSTOM_KEYMAP_FULL) || |
1140 (customKeyboard.equals(PreferenceConstants.CUSTOM_KEYMAP_ASUS_TF))) | 1136 (customKeyboard.equals(PreferenceConstants.CUSTOM_KEYMAP_ASUS_TF))) |
1141 return true; | 1137 return true; |
1142 | 1138 |
1143 return false; | 1139 return false; |