diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/com/nullwire/trace/DefaultExceptionHandler.java | 1 | ||||
-rw-r--r-- | src/de/mud/terminal/vt320.java | 23 | ||||
-rw-r--r-- | src/org/connectbot/bean/HostBean.java | 8 | ||||
-rw-r--r-- | src/org/connectbot/service/TerminalBridge.java | 8 | ||||
-rw-r--r-- | src/org/connectbot/util/HostDatabase.java | 14 |
5 files changed, 51 insertions, 3 deletions
diff --git a/src/com/nullwire/trace/DefaultExceptionHandler.java b/src/com/nullwire/trace/DefaultExceptionHandler.java index e475888..66a79bd 100644 --- a/src/com/nullwire/trace/DefaultExceptionHandler.java +++ b/src/com/nullwire/trace/DefaultExceptionHandler.java @@ -42,5 +42,6 @@ public class DefaultExceptionHandler implements UncaughtExceptionHandler { Log.d(TAG, result.toString()); // FlurryAgent session has ended t.getThreadGroup().destroy(); +// Thread.getDefaultUncaughtExceptionHandler().uncaughtException(t, e); } } diff --git a/src/de/mud/terminal/vt320.java b/src/de/mud/terminal/vt320.java index 0e92523..e962400 100644 --- a/src/de/mud/terminal/vt320.java +++ b/src/de/mud/terminal/vt320.java @@ -206,7 +206,12 @@ public void setScreenSize(int c, int r, boolean broadcast) { BackSpace[2] = "\u0018"; // VMS control deletes line back BackSpace[0] = BackSpace[3] = "\u007f"; // VMS other is delete } else { - BackSpace[0] = BackSpace[1] = BackSpace[2] = BackSpace[3] = "\b"; + //BackSpace[0] = BackSpace[1] = BackSpace[2] = BackSpace[3] = "\b"; + // ConnectBot modifications. + BackSpace[0] = "\b"; + BackSpace[1] = "\u007f"; + BackSpace[2] = "\u001b[3~"; + BackSpace[3] = "\u001b[2~"; } /* some more VT100 keys */ @@ -286,6 +291,19 @@ public void setScreenSize(int c, int r, boolean broadcast) { NUMDot[0] = "."; } + public void setBackspace(int type) { + switch (type) { + case DELETE_IS_DEL: + BackSpace[0] = "\u007f"; + BackSpace[1] = "\b"; + break; + case DELETE_IS_BACKSPACE: + BackSpace[0] = "\b"; + BackSpace[1] = "\u007f"; + break; + } + } + /** * Create a default vt320 terminal with 80 columns and 24 lines. */ @@ -648,6 +666,9 @@ public void setScreenSize(int c, int r, boolean broadcast) { public final static int KEY_ADD = 42; public final static int KEY_ESCAPE = 43; + public final static int DELETE_IS_DEL = 0; + public final static int DELETE_IS_BACKSPACE = 1; + /* The graphics charsets * B - default ASCII * A - ISO Latin 1 diff --git a/src/org/connectbot/bean/HostBean.java b/src/org/connectbot/bean/HostBean.java index 3dcdee5..f1be4a3 100644 --- a/src/org/connectbot/bean/HostBean.java +++ b/src/org/connectbot/bean/HostBean.java @@ -44,6 +44,7 @@ public class HostBean extends AbstractBean { private String postLogin = null; private long pubkeyId = -1; private boolean wantSession = true; + private String delKey = HostDatabase.DELKEY_DEL; private boolean compression = false; private String encoding = HostDatabase.ENCODING_DEFAULT; @@ -157,6 +158,12 @@ public class HostBean extends AbstractBean { public boolean getWantSession() { return wantSession; } + public void setDelKey(String delKey) { + this.delKey = delKey; + } + public String getDelKey() { + return delKey; + } public void setCompression(boolean compression) { this.compression = compression; } @@ -198,6 +205,7 @@ public class HostBean extends AbstractBean { values.put(HostDatabase.FIELD_HOST_POSTLOGIN, postLogin); values.put(HostDatabase.FIELD_HOST_PUBKEYID, pubkeyId); values.put(HostDatabase.FIELD_HOST_WANTSESSION, Boolean.toString(wantSession)); + values.put(HostDatabase.FIELD_HOST_DELKEY, delKey); values.put(HostDatabase.FIELD_HOST_COMPRESSION, Boolean.toString(compression)); values.put(HostDatabase.FIELD_HOST_ENCODING, encoding); diff --git a/src/org/connectbot/service/TerminalBridge.java b/src/org/connectbot/service/TerminalBridge.java index 728e7eb..27edd2b 100644 --- a/src/org/connectbot/service/TerminalBridge.java +++ b/src/org/connectbot/service/TerminalBridge.java @@ -29,6 +29,7 @@ import org.connectbot.bean.PortForwardBean; import org.connectbot.bean.SelectionArea; import org.connectbot.transport.AbsTransport; import org.connectbot.transport.TransportFactory; +import org.connectbot.util.HostDatabase; import org.connectbot.util.PreferenceConstants; import android.content.Context; @@ -362,6 +363,11 @@ public class TerminalBridge implements VDUDisplay, OnKeyListener { // "screen" works the best for color and escape codes ((vt320) buffer).setAnswerBack(emulation); + if (HostDatabase.DELKEY_BACKSPACE.equals(host.getDelKey())) + ((vt320) buffer).setBackspace(vt320.DELETE_IS_BACKSPACE); + else + ((vt320) buffer).setBackspace(vt320.DELETE_IS_DEL); + // create thread to relay incoming connection data to buffer relay = new Relay(this, transport, (vt320) buffer, host.getEncoding()); Thread relayThread = new Thread(relay); @@ -530,6 +536,8 @@ public class TerminalBridge implements VDUDisplay, OnKeyListener { key -= 0x40; else if (key == 0x20) key = 0x00; + else if (key == 0x3F) + key = 0x7F; metaState &= ~META_CTRL_ON; diff --git a/src/org/connectbot/util/HostDatabase.java b/src/org/connectbot/util/HostDatabase.java index d2586c0..f8a4e3f 100644 --- a/src/org/connectbot/util/HostDatabase.java +++ b/src/org/connectbot/util/HostDatabase.java @@ -18,8 +18,8 @@ package org.connectbot.util; -import java.util.Iterator; import java.nio.charset.Charset; +import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.Map; @@ -49,7 +49,7 @@ public class HostDatabase extends SQLiteOpenHelper { public final static String TAG = "ConnectBot.HostDatabase"; public final static String DB_NAME = "hosts"; - public final static int DB_VERSION = 16; + public final static int DB_VERSION = 17; public final static String TABLE_HOSTS = "hosts"; public final static String FIELD_HOST_NICKNAME = "nickname"; @@ -65,6 +65,7 @@ public class HostDatabase extends SQLiteOpenHelper { public final static String FIELD_HOST_POSTLOGIN = "postlogin"; public final static String FIELD_HOST_PUBKEYID = "pubkeyid"; public final static String FIELD_HOST_WANTSESSION = "wantsession"; + public final static String FIELD_HOST_DELKEY = "delkey"; public final static String FIELD_HOST_COMPRESSION = "compression"; public final static String FIELD_HOST_ENCODING = "encoding"; @@ -86,6 +87,9 @@ public class HostDatabase extends SQLiteOpenHelper { public final static String PORTFORWARD_DYNAMIC4 = "dynamic4"; public final static String PORTFORWARD_DYNAMIC5 = "dynamic5"; + public final static String DELKEY_DEL = "del"; + public final static String DELKEY_BACKSPACE = "backspace"; + public final static String ENCODING_DEFAULT = Charset.defaultCharset().name(); public final static long PUBKEYID_NEVER = -2; @@ -115,6 +119,7 @@ public class HostDatabase extends SQLiteOpenHelper { + FIELD_HOST_USEKEYS + " TEXT, " + FIELD_HOST_POSTLOGIN + " TEXT, " + FIELD_HOST_PUBKEYID + " INTEGER DEFAULT " + PUBKEYID_ANY + ", " + + FIELD_HOST_DELKEY + " TEXT DEFAULT '" + DELKEY_DEL + "', " + FIELD_HOST_WANTSESSION + " TEXT DEFAULT '" + Boolean.toString(true) + "', " + FIELD_HOST_COMPRESSION + " TEXT DEFAULT '" + Boolean.toString(false) + "', " + FIELD_HOST_ENCODING + " TEXT DEFAULT '" + ENCODING_DEFAULT + "')"); @@ -165,6 +170,9 @@ public class HostDatabase extends SQLiteOpenHelper { case 15: db.execSQL("ALTER TABLE " + TABLE_HOSTS + " ADD COLUMN " + FIELD_HOST_PROTOCOL + " TEXT DEFAULT 'ssh'"); + case 16: + db.execSQL("ALTER TABLE " + TABLE_HOSTS + + " ADD COLUMN " + FIELD_HOST_DELKEY + " TEXT DEFAULT '" + DELKEY_DEL + "'"); } } catch (SQLiteException e) { // The database has entered an unknown state. Try to recover. @@ -316,6 +324,7 @@ public class HostDatabase extends SQLiteOpenHelper { COL_POSTLOGIN = c.getColumnIndexOrThrow(FIELD_HOST_POSTLOGIN), COL_PUBKEYID = c.getColumnIndexOrThrow(FIELD_HOST_PUBKEYID), COL_WANTSESSION = c.getColumnIndexOrThrow(FIELD_HOST_WANTSESSION), + COL_DELKEY = c.getColumnIndexOrThrow(FIELD_HOST_DELKEY), COL_COMPRESSION = c.getColumnIndexOrThrow(FIELD_HOST_COMPRESSION), COL_ENCODING = c.getColumnIndexOrThrow(FIELD_HOST_ENCODING); @@ -334,6 +343,7 @@ public class HostDatabase extends SQLiteOpenHelper { host.setPostLogin(c.getString(COL_POSTLOGIN)); host.setPubkeyId(c.getLong(COL_PUBKEYID)); host.setWantSession(Boolean.valueOf(c.getString(COL_WANTSESSION))); + host.setDelKey(c.getString(COL_DELKEY)); host.setCompression(Boolean.valueOf(c.getString(COL_COMPRESSION))); host.setEncoding(c.getString(COL_ENCODING)); |