From 157b17bc041925d7a187f90e7a352dd915823c48 Mon Sep 17 00:00:00 2001 From: Kenny Root Date: Mon, 15 Jun 2009 22:08:03 +0000 Subject: Add configurable backspace key git-svn-id: https://connectbot.googlecode.com/svn/trunk/connectbot@303 df292f66-193f-0410-a5fc-6d59da041ff2 --- src/org/connectbot/bean/HostBean.java | 8 ++++++++ src/org/connectbot/service/TerminalBridge.java | 8 ++++++++ src/org/connectbot/util/HostDatabase.java | 14 ++++++++++++-- 3 files changed, 28 insertions(+), 2 deletions(-) (limited to 'src/org') 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)); -- cgit v1.2.3