diff options
author | Torne Wuff <torne@wolfpuppy.org.uk> | 2013-09-30 23:40:26 +0100 |
---|---|---|
committer | Torne Wuff <torne@wolfpuppy.org.uk> | 2013-09-30 23:40:26 +0100 |
commit | b06bdfb83db5900a276a1dc5a4f9957bdf4ff9c0 (patch) | |
tree | afd15e77dee33fddf2d3df7aefbb171f968bd9e5 /src | |
parent | 05bbc915058d85a4f1f0ef46d41ec40ed646152b (diff) | |
download | connectbot-b06bdfb83db5900a276a1dc5a4f9957bdf4ff9c0.tar.gz connectbot-b06bdfb83db5900a276a1dc5a4f9957bdf4ff9c0.tar.bz2 connectbot-b06bdfb83db5900a276a1dc5a4f9957bdf4ff9c0.zip |
Hopefully fix the majority of keyboard issues.
It seems that the majority of keyboard issues were caused by quirks
implemented for the convenience of the HTC Dream (shift+numbers
generating function keys on the hardware keyboard and ctrl+numbers
generating function keys on the software keyboard). Turn these into
settings, which are disabled by default unless the device is indeed
a HTC Dream.
Also, add a setting (defaulting to on) which determines whether the
volume keys change the font size. Disabling this restores normal
volume control functionality.
Diffstat (limited to 'src')
-rw-r--r-- | src/org/connectbot/HostListActivity.java | 14 | ||||
-rw-r--r-- | src/org/connectbot/service/TerminalKeyListener.java | 26 | ||||
-rw-r--r-- | src/org/connectbot/util/PreferenceConstants.java | 4 |
3 files changed, 36 insertions, 8 deletions
diff --git a/src/org/connectbot/HostListActivity.java b/src/org/connectbot/HostListActivity.java index 052f139..5fa09a9 100644 --- a/src/org/connectbot/HostListActivity.java +++ b/src/org/connectbot/HostListActivity.java @@ -39,6 +39,7 @@ import android.content.Intent.ShortcutIconResource; import android.content.SharedPreferences.Editor; import android.content.res.ColorStateList; import android.net.Uri; +import android.os.Build; import android.os.Bundle; import android.os.Handler; import android.os.IBinder; @@ -160,9 +161,20 @@ public class HostListActivity extends ListActivity { getResources().getText(R.string.app_name), getResources().getText(R.string.title_hosts_list))); - // check for eula agreement this.prefs = PreferenceManager.getDefaultSharedPreferences(this); + // detect HTC Dream and apply special preferences + if (Build.MANUFACTURER.equals("HTC") && Build.DEVICE.equals("dream")) { + if (!prefs.contains(PreferenceConstants.SHIFT_FKEYS) && + !prefs.contains(PreferenceConstants.CTRL_FKEYS)) { + SharedPreferences.Editor editor = prefs.edit(); + editor.putBoolean(PreferenceConstants.SHIFT_FKEYS, true); + editor.putBoolean(PreferenceConstants.CTRL_FKEYS, true); + editor.commit(); + } + } + + // check for eula agreement boolean agreed = prefs.getBoolean(PreferenceConstants.EULA, false); if(!agreed) { this.startActivityForResult(new Intent(this, WizardActivity.class), REQUEST_EULA); diff --git a/src/org/connectbot/service/TerminalKeyListener.java b/src/org/connectbot/service/TerminalKeyListener.java index 656b737..3f82259 100644 --- a/src/org/connectbot/service/TerminalKeyListener.java +++ b/src/org/connectbot/service/TerminalKeyListener.java @@ -74,6 +74,9 @@ public class TerminalKeyListener implements OnKeyListener, OnSharedPreferenceCha private String keymode = null; private final boolean deviceHasHardKeyboard; + private boolean shiftedNumbersAreFKeysOnHardKeyboard; + private boolean controlNumbersAreFKeysOnSoftKeyboard; + private boolean volumeKeysChangeFontSize; private int ourMetaState = 0; @@ -106,7 +109,7 @@ public class TerminalKeyListener implements OnKeyListener, OnSharedPreferenceCha deviceHasHardKeyboard = (manager.res.getConfiguration().keyboard == Configuration.KEYBOARD_QWERTY); - updateKeymode(); + updatePrefs(); } /** @@ -125,9 +128,10 @@ public class TerminalKeyListener implements OnKeyListener, OnSharedPreferenceCha PreferenceConstants.KEYMODE_RIGHT.equals(keymode); final boolean leftModifiersAreSlashAndTab = interpretAsHardKeyboard && PreferenceConstants.KEYMODE_LEFT.equals(keymode); - final boolean volumeKeysChangeFontSize = true; - final boolean shiftedNumbersAreFKeys = interpretAsHardKeyboard; - final boolean controlNumbersAreFKeys = !interpretAsHardKeyboard; + final boolean shiftedNumbersAreFKeys = shiftedNumbersAreFKeysOnHardKeyboard && + interpretAsHardKeyboard; + final boolean controlNumbersAreFKeys = controlNumbersAreFKeysOnSoftKeyboard && + !interpretAsHardKeyboard; // Ignore all key-up events except for the special keys if (event.getAction() == KeyEvent.ACTION_UP) { @@ -525,13 +529,21 @@ public class TerminalKeyListener implements OnKeyListener, OnSharedPreferenceCha public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { - if (PreferenceConstants.KEYMODE.equals(key)) { - updateKeymode(); + if (PreferenceConstants.KEYMODE.equals(key) || + PreferenceConstants.SHIFT_FKEYS.equals(key) || + PreferenceConstants.CTRL_FKEYS.equals(key) || + PreferenceConstants.VOLUME_FONT.equals(key)) { + updatePrefs(); } } - private void updateKeymode() { + private void updatePrefs() { keymode = prefs.getString(PreferenceConstants.KEYMODE, PreferenceConstants.KEYMODE_RIGHT); + shiftedNumbersAreFKeysOnHardKeyboard = + prefs.getBoolean(PreferenceConstants.SHIFT_FKEYS, false); + controlNumbersAreFKeysOnSoftKeyboard = + prefs.getBoolean(PreferenceConstants.CTRL_FKEYS, false); + volumeKeysChangeFontSize = prefs.getBoolean(PreferenceConstants.VOLUME_FONT, true); } public void setCharset(String encoding) { diff --git a/src/org/connectbot/util/PreferenceConstants.java b/src/org/connectbot/util/PreferenceConstants.java index 2ff8dd4..e9fb06c 100644 --- a/src/org/connectbot/util/PreferenceConstants.java +++ b/src/org/connectbot/util/PreferenceConstants.java @@ -81,6 +81,10 @@ public class PreferenceConstants { public static final String CONNECTION_PERSIST = "connPersist"; + public static final String SHIFT_FKEYS = "shiftfkeys"; + public static final String CTRL_FKEYS = "ctrlfkeys"; + public static final String VOLUME_FONT = "volumefont"; + /* Backup identifiers */ public static final String BACKUP_PREF_KEY = "prefs"; } |