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;