diff options
| author | juloo | 2015-08-03 20:01:05 +0200 |
|---|---|---|
| committer | juloo | 2015-08-03 20:01:05 +0200 |
| commit | 1be1ec7a4b848607a1652d95bdf5ee96c0a9ecfb (patch) | |
| tree | dea2ff0eba053e16a4aac122a0f8d1f3d24ef1b5 | |
| parent | b32f2ce3f370244c98178f140d38e5b6f0ac2220 (diff) | |
| download | unexpected-keyboard-1be1ec7a4b848607a1652d95bdf5ee96c0a9ecfb.tar.gz unexpected-keyboard-1be1ec7a4b848607a1652d95bdf5ee96c0a9ecfb.zip | |
Add qwerty layout + popup to change layout
| -rw-r--r-- | res/xml/azerty.xml | 12 | ||||
| -rw-r--r-- | res/xml/qwerty.xml | 44 | ||||
| -rw-r--r-- | srcs/juloo.keyboard2/KeyValue.java | 2 | ||||
| -rw-r--r-- | srcs/juloo.keyboard2/Keyboard2.java | 37 | ||||
| -rw-r--r-- | srcs/juloo.keyboard2/Keyboard2View.java | 2 |
5 files changed, 88 insertions, 9 deletions
diff --git a/res/xml/azerty.xml b/res/xml/azerty.xml index a5841fa..e419b60 100644 --- a/res/xml/azerty.xml +++ b/res/xml/azerty.xml @@ -25,20 +25,20 @@ <key key0="m" key2="µ" key4="*" /> </row> <row> - <key width="1.4" key0="shift" /> + <key width="2.0" key0="shift" /> <key key0="w" key1=">" key3="<" /> <key key0="x" /> <key key0="c" key2="\?" key4="," /> <key key0="v" key2="." key4=";" /> <key key0="b" key2="/" key4=":" /> <key key0="n" key2="§" key4="!" /> - <key key1="up" key2="right" key3="left" key4="down" /> - <key width="1.6" key0="backspace" key1="insert" key2="delete" /> + <key width="2.0" key0="backspace" key1="insert" key2="delete" /> </row> <row> - <key width="1.6" key0="ctrl" /> + <key width="1.8" key0="ctrl" /> <key width="1.0" key0="alt" key1="page_up" key2="end" key3="home" key4="page_down" /> - <key width="4.8" key0="space" /> - <key width="2.6" key0="enter" /> + <key width="4.4" key0="space" /> + <key key1="up" key2="right" key3="left" key4="down" /> + <key width="1.8" key0="enter" key1="config" /> </row> </keyboard> diff --git a/res/xml/qwerty.xml b/res/xml/qwerty.xml new file mode 100644 index 0000000..ca2f92b --- /dev/null +++ b/res/xml/qwerty.xml @@ -0,0 +1,44 @@ +<?xml version="1.0" encoding="utf-8"?> +<keyboard> + <row> + <key key0="q" key1="~" key2="1" key3="!" key4="`" /> + <key key0="w" key2="2" key3="\@" /> + <key key0="e" key2="3" key3="\#" /> + <key key0="r" key2="4" key3="$" /> + <key key0="t" key2="5" key3="%" /> + <key key0="y" key2="6" key3="^" /> + <key key0="u" key2="7" key3="&" /> + <key key0="i" key2="8" key3="*" /> + <key key0="o" key2="9" key3="(" /> + <key key0="p" key2="0" key3=")" /> + </row> + <row> + <key key0="a" key1="tab" /> + <key key0="s" /> + <key key0="d" /> + <key key0="f" /> + <key key0="g" key2="_" key3="-" /> + <key key0="h" key2="+" key3="=" /> + <key key0="j" key2="{" key3="[" /> + <key key0="k" key2="}" key3="]" /> + <key key0="l" key2="|" key3="\" /> + </row> + <row> + <key width="1.5" key0="shift" /> + <key key0="z" /> + <key key0="x" /> + <key key0="c" key2="<" key3="." /> + <key key0="v" key2=">" key3="," /> + <key key0="b" key2="\?" key3="/" /> + <key key0="n" key2=":" key3=";" /> + <key key0="m" key2=""" key3="'" /> + <key width="1.5" key0="backspace" key1="insert" key2="delete" /> + </row> + <row> + <key width="1.8" key0="ctrl" /> + <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" /> + <key width="1.8" key0="enter" key1="config" /> + </row> +</keyboard> diff --git a/srcs/juloo.keyboard2/KeyValue.java b/srcs/juloo.keyboard2/KeyValue.java index 73df0a1..aa687ff 100644 --- a/srcs/juloo.keyboard2/KeyValue.java +++ b/srcs/juloo.keyboard2/KeyValue.java @@ -6,6 +6,7 @@ import java.util.HashMap; class KeyValue { public static final int EVENT_NONE = -1; + public static final int EVENT_CONFIG = -2; public static final char CHAR_NONE = '\0'; public static final int FLAG_KEEP_ON = 1; @@ -121,6 +122,7 @@ class KeyValue new KeyValue("8", "8", '8', KeyEvent.KEYCODE_8, 0); new KeyValue("9", "9", '9', KeyEvent.KEYCODE_9, 0); + new KeyValue("config", "Conf", CHAR_NONE, EVENT_CONFIG, 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 30ef5fc..d3d03cd 100644 --- a/srcs/juloo.keyboard2/Keyboard2.java +++ b/srcs/juloo.keyboard2/Keyboard2.java @@ -10,13 +10,13 @@ public class Keyboard2 extends InputMethodService public static final String TAG = "Keyboard_2.0"; private KeyboardData _keyboardData; - private Keyboard2View _inputView; + private Keyboard2View _inputView = null; @Override public void onCreate() { super.onCreate(); - _keyboardData = new KeyboardData(getResources().getXml(R.xml.azerty)); + setKeyboard(R.xml.azerty); } @Override @@ -27,11 +27,42 @@ public class Keyboard2 extends InputMethodService return (_inputView); } + private void setKeyboard(int res) + { + _keyboardData = new KeyboardData(getResources().getXml(res)); + if (_inputView != null) + _inputView.setKeyboard(this, _keyboardData); + } + public void handleKeyUp(KeyValue key, int flags) { if (getCurrentInputConnection() == null) return ; - if ((flags & (KeyValue.FLAG_CTRL | KeyValue.FLAG_ALT)) != 0) + if (key.getEventCode() == KeyValue.EVENT_CONFIG) + { + // TODO improve this shit + final CharSequence layouts[] = new CharSequence[]{"Azerty", "Qwerty"}; + final int layout_res[] = new int[]{R.xml.azerty, R.xml.qwerty}; + final Keyboard2 self = this; + android.app.AlertDialog dialog = new android.app.AlertDialog.Builder(this) + .setTitle("Change keyboard layout") + .setItems(layouts, new android.content.DialogInterface.OnClickListener() + { + @Override + public void onClick(android.content.DialogInterface dialog, int which) + { + self.setKeyboard(layout_res[which]); + } + }) + .create(); + android.view.WindowManager.LayoutParams lp = dialog.getWindow().getAttributes(); + lp.token = _inputView.getWindowToken(); + lp.type = android.view.WindowManager.LayoutParams.TYPE_APPLICATION_ATTACHED_DIALOG; + dialog.getWindow().setAttributes(lp); + dialog.getWindow().addFlags(android.view.WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM); + dialog.show(); + } + else if ((flags & (KeyValue.FLAG_CTRL | KeyValue.FLAG_ALT)) != 0) handleMetaKeyUp(key, flags); else if (key.getEventCode() == KeyEvent.KEYCODE_DEL) handleDelKey(1, 0); diff --git a/srcs/juloo.keyboard2/Keyboard2View.java b/srcs/juloo.keyboard2/Keyboard2View.java index b30e955..c079a7a 100644 --- a/srcs/juloo.keyboard2/Keyboard2View.java +++ b/srcs/juloo.keyboard2/Keyboard2View.java @@ -75,6 +75,8 @@ public class Keyboard2View extends View { _ime = ime; _keyboard = keyboardData; + requestLayout(); + invalidate(); } @Override |
