abouttreesummaryrefslogcommitdiff
diff options
context:
space:
mode:
authorjaguillo2015-10-11 15:30:39 +0200
committerjaguillo2015-10-11 15:30:39 +0200
commit03cc0a54297a758f0ba0f1a7ba8aed0040413a5c (patch)
treef286abcd348a1957b91eb3b574e8130eb0442d86
parent549c753450be61fdd267904e5b34666e8318b79f (diff)
downloadunexpected-keyboard-03cc0a54297a758f0ba0f1a7ba8aed0040413a5c.tar.gz
unexpected-keyboard-03cc0a54297a758f0ba0f1a7ba8aed0040413a5c.zip
Key to switch to numeric pane
-rw-r--r--res/values/arrays.xml1
-rw-r--r--res/values/strings.xml1
-rw-r--r--res/xml/azerty.xml2
-rw-r--r--res/xml/numeric.xml2
-rw-r--r--res/xml/qwerty.xml2
-rw-r--r--srcs/juloo.keyboard2/KeyValue.java7
-rw-r--r--srcs/juloo.keyboard2/Keyboard2.java34
-rw-r--r--srcs/juloo.keyboard2/Keyboard2View.java13
8 files changed, 47 insertions, 15 deletions
diff --git a/res/values/arrays.xml b/res/values/arrays.xml
index efae020..896c515 100644
--- a/res/values/arrays.xml
+++ b/res/values/arrays.xml
@@ -3,6 +3,5 @@
<string-array name="pref_layout_values">
<item>azerty</item>
<item>qwerty</item>
- <item>numeric</item>
</string-array>
</resources>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 19f3234..0928cce 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -11,7 +11,6 @@
<string-array name="pref_layout_entries">
<item>Azerty</item>
<item>Qwerty</item>
- <item>Numeric</item>
</string-array>
<string name="pref_category_typing">Typing</string>
diff --git a/res/xml/azerty.xml b/res/xml/azerty.xml
index cedd1f3..01b4f5f 100644
--- a/res/xml/azerty.xml
+++ b/res/xml/azerty.xml
@@ -35,7 +35,7 @@
<key width="2.0" key0="backspace" key1="insert" key2="delete" />
</row>
<row>
- <key width="1.8" key0="ctrl" />
+ <key width="1.8" key0="ctrl" key3="switch_numeric" />
<key width="1.0" key0="alt" key1="page_up" key2="end" key3="home" key4="page_down" />
<key width="4.4" key0="space" />
<key key1="up" key2="right" key3="left" key4="down" />
diff --git a/res/xml/numeric.xml b/res/xml/numeric.xml
index 18bce13..66cf01d 100644
--- a/res/xml/numeric.xml
+++ b/res/xml/numeric.xml
@@ -30,7 +30,7 @@
<key width="1.0" key0="enter" key1="config" />
</row>
<row>
- <key width="1.0" key0="ctrl" />
+ <key width="1.0" key0="ctrl" key3="switch_text" />
<key width="1.0" key0="space" />
<key width="1.0" key0="space" />
<key width="3.0" key0="0" />
diff --git a/res/xml/qwerty.xml b/res/xml/qwerty.xml
index cd5e7e5..992eee6 100644
--- a/res/xml/qwerty.xml
+++ b/res/xml/qwerty.xml
@@ -35,7 +35,7 @@
<key width="1.5" key0="backspace" key2="delete" />
</row>
<row>
- <key width="1.8" key0="ctrl" />
+ <key width="1.8" key0="ctrl" key3="switch_numeric" />
<key key0="alt" key1="page_up" key2="end" key3="home" key4="page_down" />
<key width="4.4" key0="space" />
<key key1="up" key2="right" key3="left" key4="down" />
diff --git a/srcs/juloo.keyboard2/KeyValue.java b/srcs/juloo.keyboard2/KeyValue.java
index 22ac90e..33b78aa 100644
--- a/srcs/juloo.keyboard2/KeyValue.java
+++ b/srcs/juloo.keyboard2/KeyValue.java
@@ -8,6 +8,8 @@ class KeyValue
{
public static final int EVENT_NONE = -1;
public static final int EVENT_CONFIG = -2;
+ public static final int EVENT_SWITCH_TEXT = -3;
+ public static final int EVENT_SWITCH_NUMERIC = -4;
public static final char CHAR_NONE = '\0';
public static final int FLAG_KEEP_ON = 1;
@@ -164,7 +166,10 @@ class KeyValue
new KeyValue("8", null, '8', KeyEvent.KEYCODE_8, 0);
new KeyValue("9", null, '9', KeyEvent.KEYCODE_9, 0);
- new KeyValue("config", "Conf", CHAR_NONE, EVENT_CONFIG, 0);
+ new KeyValue("config", "Conf", CHAR_NONE, EVENT_CONFIG, 0);
+ new KeyValue("switch_text", "ABC", CHAR_NONE, EVENT_SWITCH_TEXT, 0);
+ new KeyValue("switch_numeric", "123+", CHAR_NONE, EVENT_SWITCH_NUMERIC, 0);
+
new KeyValue("enter", "↵", CHAR_NONE, KeyEvent.KEYCODE_ENTER, 0);
new KeyValue("up", "↑", CHAR_NONE, KeyEvent.KEYCODE_DPAD_UP, 0);
new KeyValue("right", "→", CHAR_NONE, KeyEvent.KEYCODE_DPAD_RIGHT, 0);
diff --git a/srcs/juloo.keyboard2/Keyboard2.java b/srcs/juloo.keyboard2/Keyboard2.java
index 69a1de2..8cb104b 100644
--- a/srcs/juloo.keyboard2/Keyboard2.java
+++ b/srcs/juloo.keyboard2/Keyboard2.java
@@ -5,7 +5,9 @@ import android.content.Intent;
import android.content.SharedPreferences;
import android.inputmethodservice.InputMethodService;
import android.os.Bundle;
+import android.text.InputType;
import android.preference.PreferenceManager;
+import android.view.inputmethod.EditorInfo;
import android.view.KeyEvent;
import android.view.View;
import android.view.ViewGroup;
@@ -14,6 +16,8 @@ public class Keyboard2 extends InputMethodService
implements SharedPreferences.OnSharedPreferenceChangeListener
{
private Keyboard2View _inputView = null;
+ private KeyboardData _textKeyboard = null;
+ private KeyboardData _numericKeyboard = null;
@Override
public void onCreate()
@@ -21,6 +25,7 @@ public class Keyboard2 extends InputMethodService
super.onCreate();
PreferenceManager.setDefaultValues(this, R.xml.settings, false);
PreferenceManager.getDefaultSharedPreferences(this).registerOnSharedPreferenceChangeListener(this);
+ updateConfig();
_inputView = (Keyboard2View)getLayoutInflater().inflate(R.layout.input, null);
_inputView.reset_prefs(this);
}
@@ -32,13 +37,22 @@ public class Keyboard2 extends InputMethodService
if (parent != null)
parent.removeView(_inputView);
- _inputView.reset();
return (_inputView);
}
@Override
+ public void onStartInputView(EditorInfo info, boolean restarting)
+ {
+ if ((info.inputType & InputType.TYPE_CLASS_NUMBER) != 0)
+ _inputView.setKeyboard(_numericKeyboard);
+ else
+ _inputView.setKeyboard(_textKeyboard);
+ }
+
+ @Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key)
{
+ updateConfig();
_inputView.reset_prefs(this);
}
@@ -53,6 +67,20 @@ public class Keyboard2 extends InputMethodService
_inputView.reset();
}
+ private void updateConfig()
+ {
+ SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
+ String keyboardLayout = prefs.getString("keyboard_layout", null);
+ int xmlRes = 0;
+
+ if (keyboardLayout != null)
+ xmlRes = getResources().getIdentifier(keyboardLayout, "xml", getPackageName());
+ if (xmlRes == 0)
+ xmlRes = R.xml.azerty;
+ _textKeyboard = new KeyboardData(getResources().getXml(xmlRes));
+ _numericKeyboard = new KeyboardData(getResources().getXml(R.xml.numeric));
+ }
+
public void handleKeyUp(KeyValue key, int flags)
{
if (getCurrentInputConnection() == null)
@@ -63,6 +91,10 @@ public class Keyboard2 extends InputMethodService
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
+ else if (key.getEventCode() == KeyValue.EVENT_SWITCH_TEXT)
+ _inputView.setKeyboard(_textKeyboard);
+ else if (key.getEventCode() == KeyValue.EVENT_SWITCH_NUMERIC)
+ _inputView.setKeyboard(_numericKeyboard);
else if ((flags & (KeyValue.FLAG_CTRL | KeyValue.FLAG_ALT)) != 0)
handleMetaKeyUp(key, flags);
else if (key.getEventCode() == KeyEvent.KEYCODE_DEL)
diff --git a/srcs/juloo.keyboard2/Keyboard2View.java b/srcs/juloo.keyboard2/Keyboard2View.java
index b10c1fb..5d21759 100644
--- a/srcs/juloo.keyboard2/Keyboard2View.java
+++ b/srcs/juloo.keyboard2/Keyboard2View.java
@@ -102,15 +102,12 @@ public class Keyboard2View extends View
_marginBottom = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, prefs.getInt("margin_bottom", (int)_marginBottom), getResources().getDisplayMetrics());
_keyHeight = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, prefs.getInt("key_height", (int)_keyHeight), getResources().getDisplayMetrics());
_horizontalMargin = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, prefs.getInt("horizontal_margin", (int)_horizontalMargin), getResources().getDisplayMetrics());
+ reset();
+ }
- String keyboardLayout = prefs.getString("keyboard_layout", null);
- int xmlRes = 0;
-
- if (keyboardLayout != null)
- xmlRes = ime.getResources().getIdentifier(keyboardLayout, "xml", ime.getPackageName());
- if (xmlRes == 0)
- xmlRes = R.xml.azerty;
- _keyboard = new KeyboardData(ime.getResources().getXml(xmlRes));
+ public void setKeyboard(KeyboardData keyboard)
+ {
+ _keyboard = keyboard;
reset();
}