diff --git a/res/xml/azerty.xml b/res/xml/azerty.xml
index b22fa14..ada3f93 100644
--- a/res/xml/azerty.xml
+++ b/res/xml/azerty.xml
@@ -32,14 +32,13 @@
-
-
+
+
-
-
-
+
+
diff --git a/srcs/juloo.keyboard2/KeyValue.java b/srcs/juloo.keyboard2/KeyValue.java
index 20af817..1b6ef23 100644
--- a/srcs/juloo.keyboard2/KeyValue.java
+++ b/srcs/juloo.keyboard2/KeyValue.java
@@ -5,97 +5,70 @@ import java.util.HashMap;
class KeyValue
{
- // KEY_A("a", 'a'),
- // KEY_A2("à", 'à'),
- // KEY_B("b", 'b'),
- // KEY_C("c", 'c'),
- // KEY_C2("ç", 'ç'),
- // KEY_D("d", 'd'),
- // KEY_E("e", 'e'),
- // KEY_E2("é", 'é'),
- // KEY_E3("è", 'è'),
- // KEY_F("f", 'f'),
- // KEY_G("g", 'g'),
- // KEY_H("h", 'h'),
- // KEY_I("i", 'i'),
- // KEY_J("j", 'j'),
- // KEY_K("k", 'k'),
- // KEY_L("l", 'l'),
- // KEY_M("m", 'm'),
- // KEY_N("n", 'n'),
- // KEY_O("o", 'o'),
- // KEY_P("p", 'p'),
- // KEY_Q("q", 'q'),
- // KEY_R("r", 'r'),
- // KEY_S("s", 's'),
- // KEY_T("t", 't'),
- // KEY_U("u", 'u'),
- // KEY_V("v", 'v'),
- // KEY_W("w", 'w'),
- // KEY_X("x", 'x'),
- // KEY_Y("y", 'y'),
- // KEY_Z("z", 'z'),
- // KEY_0("0", '0'),
- // KEY_1("1", '1'),
- // KEY_2("2", '2'),
- // KEY_3("3", '3'),
- // KEY_4("4", '4'),
- // KEY_5("5", '5'),
- // KEY_6("6", '6'),
- // KEY_7("7", '7'),
- // KEY_8("8", '8'),
- // KEY_9("9", '9'),
- // KEY_AND("&", '&'),
- // KEY_DQUOTE("\"", '"'),
- // KEY_QUOTE("'", '\''),
- // KEY_PARENTHESIS("(", '('),
- // KEY_MINUS("-", '-'),
- // KEY_UNDERSCORE("_", '_'),
- // KEY_TILDE("~", '~'),
- // KEY_DIESE("#", '#'),
- // KEY_BLOCK("{", '{'),
- // KEY_SQUARE("[", '['),
- // KEY_PIPE("|", '|'),
- // KEY_BACKQUOTE("`", '`'),
- // KEY_BACKSLASH("\\", '\\'),
- // KEY_XOR("^", '^'),
- // KEY_AROBASE("@", '@'),
- // KEY_ENTER("enter", '\n'),
- // KEY_SPACE("space", ' '),
- // KEY_DEL("del", '\u007F');
-
private String _name;
+ private String _symbol;
private char _char;
- private KeyValue(String name, char c)
- {
- _name = name;
- _char = c;
- }
-
public String getName()
{
return (_name);
}
+ public String getSymbol()
+ {
+ return (_symbol);
+ }
+
public char getChar()
{
return (_char);
}
- // private static HashMap keys = new HashMap();
+ private static HashMap keys = new HashMap();
- // static
- // {
- // for (KeyValue k : KeyValue.values())
- // keys.put(k.getName(), k);
- // }
+ private KeyValue(String name, String symbol, char c)
+ {
+ _name = name;
+ _symbol = symbol;
+ _char = c;
+ }
public static KeyValue getKeyByName(String name)
{
- // return (KeyValue.keys.get(name));
- if (name == null || name.length() == 0)
- return (null);
- return (new KeyValue(name, name.charAt(0)));
+ return (KeyValue.keys.get(name));
+ }
+
+ private static void add(String name, String symbol, char c)
+ {
+ keys.put(name, new KeyValue(name, symbol, c));
+ }
+
+ static
+ {
+ String chars = "abcdefghijklmnopqrstuvwxyz"
+ + "àçéèêë"
+ + "0123456789<>"
+ + "&é\"'(-_)=°+"
+ + "~#{[|`\\^@]}"
+ + "^$ù*,;:!¨£%µ?./§";
+ for (int i = 0; i < chars.length(); i++)
+ add(chars.substring(i, i + 1), chars.substring(i, i + 1), chars.charAt(i));
+ add("shift", "Shift", 'S');
+ add("ctrl", "Ctrl", 'C');
+ add("alt", "Alt", 'A');
+
+ add("back", "⌫", '\u007F');
+ add("up", "↑", 'U');
+ add("right", "→", 'R');
+ add("down", "↓", 'D');
+ add("left", "←", 'L');
+ add("page_up", "⇞", 'U');
+ add("page_down", "⇟", 'D');
+ add("home", "↖", 'H');
+ add("end", "↗", 'E');
+ add("tab", "↹", '\t');
+ add("return", "↵", '\n');
+ add("space", " ", ' ');
+ add("delete", "⌦", 'D');
}
}
diff --git a/srcs/juloo.keyboard2/Keyboard2.java b/srcs/juloo.keyboard2/Keyboard2.java
index 4a116cb..38a9294 100644
--- a/srcs/juloo.keyboard2/Keyboard2.java
+++ b/srcs/juloo.keyboard2/Keyboard2.java
@@ -27,6 +27,11 @@ public class Keyboard2 extends InputMethodService
return (_inputView);
}
+ public void handleKey(KeyValue key)
+ {
+ Keyboard2.log("Key up " + key.getName());
+ }
+
public static void log(String str)
{
Log.d(TAG, str);
diff --git a/srcs/juloo.keyboard2/Keyboard2View.java b/srcs/juloo.keyboard2/Keyboard2View.java
index 146e146..da3c852 100644
--- a/srcs/juloo.keyboard2/Keyboard2View.java
+++ b/srcs/juloo.keyboard2/Keyboard2View.java
@@ -17,6 +17,8 @@ public class Keyboard2View extends View
private Keyboard2 _ime;
private KeyboardData _keyboard;
+ private KeyValue _downValue;
+
private float _verticalMargin;
private float _horizontalMargin;
private float _keyWidth;
@@ -33,6 +35,7 @@ public class Keyboard2View extends View
{
super(context, attrs);
DisplayMetrics dm = context.getResources().getDisplayMetrics();
+ _downValue = null;
_verticalMargin = getResources().getDimension(R.dimen.vertical_margin);
_horizontalMargin = getResources().getDimension(R.dimen.horizontal_margin);
_keyHeight = getResources().getDimension(R.dimen.key_height);
@@ -101,7 +104,8 @@ public class Keyboard2View extends View
if (v != k.downValue)
{
k.downValue = v;
- Keyboard2.log("Key down " + v.getName());
+ if (v != null)
+ _downValue = v;
}
}
}
@@ -127,7 +131,7 @@ public class Keyboard2View extends View
if (touchX >= x && touchX < (x + keyW) && k.downPointer == -1)
{
if (k.key0 != null)
- Keyboard2.log("Key down " + k.key0.getName());
+ _downValue = k.key0;
k.downPointer = pointerId;
k.downValue = k.key0;
k.downX = touchX;
@@ -149,9 +153,27 @@ public class Keyboard2View extends View
if (k.downPointer == pointerId)
{
if (k.downValue != null)
- Keyboard2.log("Key up " + k.downValue.getName());
+ _ime.handleKey(k.downValue);
+ _downValue = null;
k.downPointer = -1;
+ nextDownValue();
invalidate();
+ return ;
+ }
+ }
+ }
+ }
+
+ private void nextDownValue()
+ {
+ for (keyboardData.Row row : _keyboard.getRows())
+ {
+ for (KeyboardData.Key k : row)
+ {
+ if (k.downPointer != -1)
+ {
+ _downValue = k.downValue;
+ return ;
}
}
}
@@ -190,22 +212,22 @@ public class Keyboard2View extends View
canvas.drawRect(x + _keyBgPadding, y + _keyBgPadding,
x + keyW - _keyBgPadding, y + _keyHeight - _keyBgPadding, _keyBgPaint);
if (k.key0 != null)
- canvas.drawText(k.key0.getName(), keyW / 2 + x,
+ canvas.drawText(k.key0.getSymbol(), keyW / 2 + x,
(_keyHeight + _keyLabelPaint.getTextSize()) / 2 + y, _keyLabelPaint);
float textOffsetY = _keySubLabelPaint.getTextSize() / 2;
float subPadding = _keyPadding + _keyBgPadding;
if (k.key1 != null)
- canvas.drawText(k.key1.getName(), x + subPadding,
+ canvas.drawText(k.key1.getSymbol(), x + subPadding,
y + subPadding + textOffsetY, _keySubLabelPaint);
if (k.key2 != null)
- canvas.drawText(k.key2.getName(), x + keyW - subPadding,
+ canvas.drawText(k.key2.getSymbol(), x + keyW - subPadding,
y + subPadding + textOffsetY, _keySubLabelPaint);
textOffsetY /= 2; // lol
if (k.key3 != null)
- canvas.drawText(k.key3.getName(), x + subPadding,
+ canvas.drawText(k.key3.getSymbol(), x + subPadding,
y + _keyHeight - subPadding + textOffsetY, _keySubLabelPaint);
if (k.key4 != null)
- canvas.drawText(k.key4.getName(), x + keyW - subPadding,
+ canvas.drawText(k.key4.getSymbol(), x + keyW - subPadding,
y + _keyHeight - subPadding + textOffsetY, _keySubLabelPaint);
x += keyW;
}