aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorKenny Root <kenny@the-b.org>2008-10-23 17:43:12 +0000
committerKenny Root <kenny@the-b.org>2008-10-23 17:43:12 +0000
commitbaf980febae0378c65a2ff8151fb5a6d8918861b (patch)
treed681d08aed2b744ec59f4ffbd0dc1cf6dc230438 /src
parent0685384d0528e9186561d02f9193d658adeb3d45 (diff)
downloadconnectbot-baf980febae0378c65a2ff8151fb5a6d8918861b.tar.gz
connectbot-baf980febae0378c65a2ff8151fb5a6d8918861b.tar.bz2
connectbot-baf980febae0378c65a2ff8151fb5a6d8918861b.zip
Add back in regressed CTRL and ESC sending by using center DPAD.
Diffstat (limited to 'src')
-rw-r--r--src/org/connectbot/service/TerminalBridge.java18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/org/connectbot/service/TerminalBridge.java b/src/org/connectbot/service/TerminalBridge.java
index 13b2870..733300c 100644
--- a/src/org/connectbot/service/TerminalBridge.java
+++ b/src/org/connectbot/service/TerminalBridge.java
@@ -60,6 +60,8 @@ public class TerminalBridge implements VDUDisplay, OnKeyListener {
public Canvas canvas = new Canvas();
public VDUBuffer buffer = null;
+ private boolean ctrlPressed = false;
+
public class HostKeyVerifier implements ServerHostKeyVerifier {
@@ -289,6 +291,14 @@ public class TerminalBridge implements VDUDisplay, OnKeyListener {
// print normal keys
if (printing) {
int key = keymap.get(keyCode, event.getMetaState());
+ if (ctrlPressed) {
+ // Support CTRL-A through CTRL-Z
+ if (key >= 0x61 && key <= 0x79)
+ key -= 0x60;
+ else if (key >= 0x40 && key <= 0x59)
+ key -= 0x39;
+ ctrlPressed = false;
+ }
this.stdin.write(key);
return true;
}
@@ -301,6 +311,14 @@ public class TerminalBridge implements VDUDisplay, OnKeyListener {
case KeyEvent.KEYCODE_DPAD_UP: ((vt320)buffer).keyPressed(vt320.KEY_UP, ' ', event.getMetaState()); return true;
case KeyEvent.KEYCODE_DPAD_DOWN: ((vt320)buffer).keyPressed(vt320.KEY_DOWN, ' ', event.getMetaState()); return true;
case KeyEvent.KEYCODE_DPAD_RIGHT: ((vt320)buffer).keyPressed(vt320.KEY_RIGHT, ' ', event.getMetaState()); return true;
+ case KeyEvent.KEYCODE_DPAD_CENTER:
+ // TODO: Add some visual indication of Ctrl state
+ if (ctrlPressed) {
+ stdin.write(0x1B); // ESC
+ ctrlPressed = false;
+ } else
+ ctrlPressed = true;
+ return true;
}
}