diff --git a/res/xml/pin.xml b/res/xml/pin.xml
new file mode 100644
index 0000000..0f0b3c6
--- /dev/null
+++ b/res/xml/pin.xml
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/srcs/juloo.keyboard2/Keyboard2.java b/srcs/juloo.keyboard2/Keyboard2.java
index 35d5b26..972f266 100644
--- a/srcs/juloo.keyboard2/Keyboard2.java
+++ b/srcs/juloo.keyboard2/Keyboard2.java
@@ -225,15 +225,28 @@ public class Keyboard2 extends InputMethodService
Log.d(TAG, "actionLabel: "+_config.actionLabel);
}
+ private int chooseLayout(EditorInfo info)
+ {
+ switch (info.inputType & InputType.TYPE_MASK_CLASS)
+ {
+ case InputType.TYPE_CLASS_NUMBER:
+ if ((info.inputType & (InputType.TYPE_NUMBER_FLAG_DECIMAL | InputType.TYPE_NUMBER_FLAG_SIGNED)) != 0)
+ return R.xml.numeric;
+ return R.xml.pin;
+ case InputType.TYPE_CLASS_PHONE:
+ case InputType.TYPE_CLASS_DATETIME:
+ return R.xml.pin;
+ default:
+ return _currentTextLayout;
+ }
+ }
+
@Override
public void onStartInputView(EditorInfo info, boolean restarting)
{
refreshConfig();
refresh_action_label(info);
- if ((info.inputType & InputType.TYPE_CLASS_NUMBER) != 0)
- _keyboardView.setKeyboard(getLayout(R.xml.numeric));
- else
- _keyboardView.setKeyboard(getLayout(_currentTextLayout));
+ _keyboardView.setKeyboard(getLayout(chooseLayout(info)));
_autocap.started(info, getCurrentInputConnection());
setInputView(_keyboardView);
if (_debug_logs)
diff --git a/srcs/juloo.keyboard2/KeyboardData.java b/srcs/juloo.keyboard2/KeyboardData.java
index 21acde7..0d0a85b 100644
--- a/srcs/juloo.keyboard2/KeyboardData.java
+++ b/srcs/juloo.keyboard2/KeyboardData.java
@@ -136,10 +136,11 @@ class KeyboardData
boolean bottom_row = parser.getAttributeBooleanValue(null, "bottom_row", true);
boolean extra_keys = parser.getAttributeBooleanValue(null, "extra_keys", true);
boolean num_pad = parser.getAttributeBooleanValue(null, "num_pad", true);
+ float specified_kw = parser.getAttributeFloatValue(null, "width", 0f);
ArrayList rows = new ArrayList();
while (expect_tag(parser, "row"))
rows.add(Row.parse(parser));
- float kw = compute_max_width(rows);
+ float kw = (specified_kw != 0f) ? specified_kw : compute_max_width(rows);
if (bottom_row)
rows.add(_bottomRow.updateWidth(kw));
return new KeyboardData(rows, kw, extra_keys, num_pad);