Mercurial > 510Connectbot
diff src/com/five_ten_sg/connectbot/service/TerminalKeyListener.java @ 53:e872762ec105 tn5250
start tn5250 integration
author | Carl Byington <carl@five-ten-sg.com> |
---|---|
date | Wed, 11 Jun 2014 13:37:02 -0700 |
parents | 0e3fc85d0586 |
children | a7e660661e08 |
line wrap: on
line diff
--- a/src/com/five_ten_sg/connectbot/service/TerminalKeyListener.java Wed Jun 11 12:18:18 2014 -0700 +++ b/src/com/five_ten_sg/connectbot/service/TerminalKeyListener.java Wed Jun 11 13:37:02 2014 -0700 @@ -91,7 +91,7 @@ protected String customKeyboard = null; protected int metaState = 0; - private int mDeadKey = 0; + protected int mDeadKey = 0; // TODO add support for the new API. private ClipboardManager clipboard = null; @@ -118,11 +118,17 @@ } public void sendEscape() { - buffer.write(0x1b); + buffer.keyPressed(vt320.KEY_ESCAPE, ' ', getStateForBuffer()); } protected void sendEncoded(String s) { - buffer.write(s.getBytes(encoding)); + byte [] b = null; + try { + b = s.getBytes(encoding); + } + catch (UnsupportedEncodingException e){ + } + if (b != null) buffer.write(b); } /** @@ -176,7 +182,7 @@ else if (keyCode == KeyEvent.KEYCODE_SHIFT_RIGHT && (metaState & META_TAB) != 0) { metaState &= ~(META_TAB | META_TRANSIENT); - buffer.write(0x09); + buffer.keyPressed(vt320.KEY_TAB, ' ', getStateForBuffer()); return true; } } @@ -190,7 +196,7 @@ else if (keyCode == KeyEvent.KEYCODE_SHIFT_LEFT && (metaState & META_TAB) != 0) { metaState &= ~(META_TAB | META_TRANSIENT); - buffer.write(0x09); + buffer.keyPressed(vt320.KEY_TAB, ' ', getStateForBuffer()); return true; } } @@ -317,7 +323,7 @@ } else if ((orgMetaState & KeyEvent.META_ALT_ON) != 0) { sendMeta = true; - buffer.write(0x1b); + sendEscape(); } if (sendMeta || sendCtrl) { @@ -342,7 +348,7 @@ return true; } else if ((orgMetaState & KeyEvent.META_ALT_ON) != 0) { - buffer.write(0x1b); + sendEscape(); buffer.write(k); return true; } @@ -418,11 +424,11 @@ // look for special chars switch (keyCode) { case KEYCODE_ESCAPE: - buffer.write(0x1b); + sendEscape(); return true; case KeyEvent.KEYCODE_TAB: - buffer.write(0x09); + buffer.keyPressed(vt320.KEY_TAB, ' ', getStateForBuffer()); return true; case KEYCODE_PAGE_DOWN: @@ -479,12 +485,10 @@ case KeyEvent.KEYCODE_DEL: if ((metaState & META_ALT_MASK) != 0) { - buffer.keyPressed(vt320.KEY_INSERT, ' ', - getStateForBuffer()); + buffer.keyPressed(vt320.KEY_INSERT, ' ', getStateForBuffer()); } else { - buffer.keyPressed(vt320.KEY_BACK_SPACE, ' ', - getStateForBuffer()); + buffer.keyPressed(vt320.KEY_BACK_SPACE, ' ', getStateForBuffer()); } metaState &= ~META_TRANSIENT; @@ -502,12 +506,10 @@ } else { if ((metaState & META_ALT_MASK) != 0) { - buffer.keyPressed(vt320.KEY_HOME, ' ', - getStateForBuffer()); + buffer.keyPressed(vt320.KEY_HOME, ' ', getStateForBuffer()); } else { - buffer.keyPressed(vt320.KEY_LEFT, ' ', - getStateForBuffer()); + buffer.keyPressed(vt320.KEY_LEFT, ' ', getStateForBuffer()); } metaState &= ~META_TRANSIENT; @@ -523,12 +525,10 @@ } else { if ((metaState & META_ALT_MASK) != 0) { - buffer.keyPressed(vt320.KEY_PAGE_UP, ' ', - getStateForBuffer()); + buffer.keyPressed(vt320.KEY_PAGE_UP, ' ', getStateForBuffer()); } else { - buffer.keyPressed(vt320.KEY_UP, ' ', - getStateForBuffer()); + buffer.keyPressed(vt320.KEY_UP, ' ', getStateForBuffer()); } metaState &= ~META_TRANSIENT; @@ -544,12 +544,10 @@ } else { if ((metaState & META_ALT_MASK) != 0) { - buffer.keyPressed(vt320.KEY_PAGE_DOWN, ' ', - getStateForBuffer()); + buffer.keyPressed(vt320.KEY_PAGE_DOWN, ' ', getStateForBuffer()); } else { - buffer.keyPressed(vt320.KEY_DOWN, ' ', - getStateForBuffer()); + buffer.keyPressed(vt320.KEY_DOWN, ' ', getStateForBuffer()); } metaState &= ~META_TRANSIENT; @@ -565,12 +563,10 @@ } else { if ((metaState & META_ALT_MASK) != 0) { - buffer.keyPressed(vt320.KEY_END, ' ', - getStateForBuffer()); + buffer.keyPressed(vt320.KEY_END, ' ', getStateForBuffer()); } else { - buffer.keyPressed(vt320.KEY_RIGHT, ' ', - getStateForBuffer()); + buffer.keyPressed(vt320.KEY_RIGHT, ' ', getStateForBuffer()); } metaState &= ~META_TRANSIENT; @@ -612,7 +608,7 @@ metaPress(META_CTRL_ON); } else if (PreferenceConstants.HWBUTTON_TAB.equals(shortcut)) { - buffer.write(0x09); + buffer.keyPressed(vt320.KEY_TAB, ' ', getStateForBuffer()); } else if (PreferenceConstants.HWBUTTON_CTRLA_SPACE.equals(shortcut)) { buffer.write(0x01); @@ -623,10 +619,10 @@ } else if (PreferenceConstants.HWBUTTON_ESC.equals(shortcut)) { showMetakeyToast(v, PreferenceConstants.HWBUTTON_ESC); - buffer.write(0x1b); + sendEscape(); } else if (PreferenceConstants.HWBUTTON_ESC_A.equals(shortcut)) { - buffer.write(0x1b); + sendEscape(); buffer.write('a'); } else { @@ -901,7 +897,7 @@ } else { if ((metaState & META_CTRL_ON) != 0) { - buffer.write(0x1b); + sendEscape(); metaState &= ~META_CTRL_ON; } else @@ -911,7 +907,7 @@ bridge.redraw(); } - private boolean customKeymapAction(View v, int keyCode, KeyEvent event) { + protected boolean customKeymapAction(View v, int keyCode, KeyEvent event) { if (bridge == null || customKeyboard.equals(PreferenceConstants.CUSTOM_KEYMAP_DISABLED)) return false; @@ -941,7 +937,7 @@ // screen (-1) or the Asus Transformer Keyboard Dock. // Treat the HW button as ESC. if (event.getDeviceId() > 0) { - buffer.write(0x1b); + sendEscape(); return true; } } @@ -1035,12 +1031,14 @@ // Samsung Captivate Glide (SGH-i927) if (keyCode == 115) { // .com key = ESC - c = 0x1b; + c = 0x00; + termKey = vt320.KEY_ESCAPE; return true; } else if (keyCode == 116) { // Microphone key = TAB - c = 0x09; + c = 0x00; + termKey = vt320.KEY_TAB; } else if ((metaState & META_ALT_MASK) != 0 && (metaState & META_SHIFT_MASK) != 0) { switch (keyCode) { @@ -1066,11 +1064,13 @@ // Samsung Captivate Glide (SGH-i927) Ice Cream Sandwich (4.0.x) if (keyCode == 226) { // .com key = ESC - c = 0x1b; + c = 0x00; + termKey = vt320.KEY_ESCAPE; } else if (keyCode == 220) { // Microphone key = TAB - c = 0x09; + c = 0x00; + termKey = vt320.KEY_TAB; } else if ((metaState & META_ALT_MASK) != 0 && (metaState & META_SHIFT_MASK) != 0) { switch (keyCode) {