diff options
-rw-r--r-- | res/values/strings.xml | 15 | ||||
-rw-r--r-- | res/xml/preferences.xml | 21 | ||||
-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 |
5 files changed, 72 insertions, 8 deletions
diff --git a/res/values/strings.xml b/res/values/strings.xml index 1392622..f8f8f89 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -158,6 +158,21 @@ <!-- Summary for the full screen preference --> <string name="pref_fullscreen_summary">"Hide status bar while in console"</string> + <!-- Name for the shifted numbers are f-keys preference --> + <string name="pref_shiftfkeys_title">"Shift+num are F-keys"</string> + <!-- Summary for the shifted numbers are f-keys preference --> + <string name="pref_shiftfkeys_summary">"On hardware keyboards, number keys send F1-F10 with shift"</string> + + <!-- Name for the ctrl'ed numbers are f-keys preference --> + <string name="pref_ctrlfkeys_title">"Ctrl+num are F-keys"</string> + <!-- Summary for the ctrl'ed numbers are f-keys preference --> + <string name="pref_ctrlfkeys_summary">"On software keyboards, number keys send F1-F10 with ctrl"</string> + + <!-- Name for the volume keys control font size preference --> + <string name="pref_volumefont_title">"Volume keys change font size"</string> + <!-- Summary for the volume keys control font size preference --> + <string name="pref_volumefont_summary">"Font size can also be changed in per-host settings"</string> + <!-- Name for the memorize keys preference --> <string name="pref_memkeys_title">"Remember keys in memory"</string> <!-- Summary for the memorize keys preference --> diff --git a/res/xml/preferences.xml b/res/xml/preferences.xml index 8726ea4..5fb836b 100644 --- a/res/xml/preferences.xml +++ b/res/xml/preferences.xml @@ -84,6 +84,27 @@ android:defaultValue="false" /> + <CheckBoxPreference + android:key="shiftfkeys" + android:title="@string/pref_shiftfkeys_title" + android:summary="@string/pref_shiftfkeys_summary" + android:defaultValue="false" + /> + + <CheckBoxPreference + android:key="ctrlfkeys" + android:title="@string/pref_ctrlfkeys_title" + android:summary="@string/pref_ctrlfkeys_summary" + android:defaultValue="false" + /> + + <CheckBoxPreference + android:key="volumefont" + android:title="@string/pref_volumefont_title" + android:summary="@string/pref_volumefont_summary" + android:defaultValue="true" + /> + <ListPreference android:key="keymode" android:title="@string/pref_keymode_title" 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"; } |