Compare commits

...

7 Commits
4.3.8 ... 4.3.9

Author SHA1 Message Date
Yuriy Liskov
a57eeff2ae bump to 4.3.9 2018-04-27 17:40:40 +03:00
Yuriy Liskov
63b5f290e3 Merge branch 'rabin111-master' 2018-04-27 17:20:11 +03:00
rabin
acc035d8ba correct Thai keyboard layout 2018-04-26 10:58:01 +07:00
Yuriy Liskov
0757a82e2b refactor last commit 2018-04-23 02:30:59 +03:00
Yuriy Liskov
d05415fb65 fixes for previous commit 2018-04-23 00:04:11 +03:00
Yuriy Liskov
b3afc8e7f2 store up to two chars in one key label (Thai fix) 2018-04-22 15:48:25 +03:00
Yuriy Liskov
5d94ae66ac FireTV fix (update2) 2018-03-26 00:02:20 +03:00
27 changed files with 119 additions and 256 deletions

View File

@@ -8,8 +8,8 @@ android {
applicationId "org.liskovsoft.leankeykeyboard.pro"
minSdkVersion project.properties.minSdkVersion
targetSdkVersion project.properties.targetSdkVersion
versionCode 58
versionName "4.3.8"
versionCode 59
versionName "4.3.9"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

View File

@@ -5,6 +5,7 @@ import android.graphics.Rect;
import android.inputmethodservice.InputMethodService;
import android.inputmethodservice.Keyboard.Key;
import android.os.Handler;
import android.text.InputType;
import android.util.Log;
import android.view.KeyEvent;
import android.view.MotionEvent;
@@ -688,10 +689,12 @@ public class LeanbackKeyboardController implements LeanbackKeyboardContainer.Voi
initInputView();
}
// prevent accidental kbd pop-up on FireTV devices
// more info: https://forum.xda-developers.com/fire-tv/general/guide-change-screen-keyboard-to-leankey-t3527675/page2
int maskAction = info.imeOptions & EditorInfo.IME_MASK_ACTION;
mShowInput = maskAction != 0;
//// prevent accidental kbd pop-up on FireTV devices
//// more info: https://forum.xda-developers.com/fire-tv/general/guide-change-screen-keyboard-to-leankey-t3527675/page2
//int maskAction = info.imeOptions & EditorInfo.IME_MASK_ACTION;
//mShowInput = maskAction != 0;
mShowInput = info.inputType != InputType.TYPE_NULL;
}
public boolean showInputView() {

View File

@@ -69,6 +69,56 @@ public class LeanbackKeyboardView extends FrameLayout {
private int mRowCount;
private int mShiftState;
private final int mUnfocusStartDelay;
private final KeyConverter mConverter;
private class KeyConverter {
private static final int LOWER_CASE = 0;
private static final int UPPER_CASE = 1;
private void init(KeyHolder keyHolder) {
// store original label
// in case when two characters are stored in one label (e.g. "A|B")
if (keyHolder.key.text == null) {
keyHolder.key.text = keyHolder.key.label;
}
}
public void toLowerCase(KeyHolder keyHolder) {
extractChar(LOWER_CASE, keyHolder);
}
public void toUpperCase(KeyHolder keyHolder) {
extractChar(UPPER_CASE, keyHolder);
}
private void extractChar(int charCase, KeyHolder keyHolder) {
init(keyHolder);
CharSequence result = null;
CharSequence label = keyHolder.key.text;
String[] labels = splitLabels(label);
switch (charCase) {
case LOWER_CASE:
result = labels != null ? labels[0] : label.toString().toLowerCase();
break;
case UPPER_CASE:
result = labels != null ? labels[1] : label.toString().toUpperCase();
break;
}
keyHolder.key.label = result;
}
private String[] splitLabels(CharSequence label) {
String realLabel = label.toString();
String[] labels = realLabel.split("\\|");
return labels.length == 2 ? labels : null; // remember, we encoding two chars
}
}
public LeanbackKeyboardView(Context context, AttributeSet attrs) {
super(context, attrs);
@@ -92,29 +142,24 @@ public class LeanbackKeyboardView extends FrameLayout {
mClickAnimDur = res.getInteger(R.integer.clicked_anim_duration);
mUnfocusStartDelay = res.getInteger(R.integer.unfocused_anim_delay);
mInactiveMiniKbAlpha = res.getInteger(R.integer.inactive_mini_kb_alpha);
mConverter = new KeyConverter();
}
private CharSequence adjustCase(LeanbackKeyboardView.KeyHolder keyHolder) {
CharSequence label = keyHolder.key.label;
CharSequence result = label;
if (label != null && label.length() < 3) {
boolean flag;
if (keyHolder.isInMiniKb && keyHolder.isInvertible) {
flag = true;
} else {
flag = false;
}
private void adjustCase(LeanbackKeyboardView.KeyHolder keyHolder) {
boolean flag;
if (this.mKeyboard.isShifted() ^ flag) {
result = label.toString().toUpperCase();
} else {
result = label.toString().toLowerCase();
}
keyHolder.key.label = result;
if (keyHolder.isInMiniKb && keyHolder.isInvertible) {
flag = true;
} else {
flag = false;
}
return result;
// ^ equals to !=
if (mKeyboard.isShifted() ^ flag) {
mConverter.toUpperCase(keyHolder);
} else {
mConverter.toLowerCase(keyHolder);
}
}
@SuppressLint("NewApi")

View File

@@ -53,7 +53,7 @@ public class LeanbackImeService extends InputMethodService {
@SuppressLint("NewApi")
public LeanbackImeService() {
if (!this.enableHardwareAcceleration()) {
if (!enableHardwareAcceleration()) {
Log.w("LbImeService", "Could not enable hardware acceleration");
}
}

View File

@@ -1,9 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Keyboard android:keyWidth="@dimen/key_width" android:keyHeight="@dimen/key_height" android:horizontalGap="@dimen/keyboard_horizontal_gap" android:verticalGap="@dimen/keyboard_vertical_gap"
xmlns:android="http://schemas.android.com/apk/res/android">
<Row>
<Key android:keyLabel="ี" />
<Key android:keyLabel="๊" />
<Key android:keyLabel="ร" />
</Row>
</Keyboard>

View File

@@ -1,9 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Keyboard android:keyWidth="@dimen/key_width" android:keyHeight="@dimen/key_height" android:horizontalGap="@dimen/keyboard_horizontal_gap" android:verticalGap="@dimen/keyboard_vertical_gap"
xmlns:android="http://schemas.android.com/apk/res/android">
<Row>
<Key android:keyLabel="็" />
<Key android:keyLabel="่" />
<Key android:keyLabel="๋" />
</Row>
</Keyboard>

View File

@@ -1,8 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Keyboard android:keyWidth="@dimen/key_width" android:keyHeight="@dimen/key_height" android:horizontalGap="@dimen/keyboard_horizontal_gap" android:verticalGap="@dimen/keyboard_vertical_gap"
xmlns:android="http://schemas.android.com/apk/res/android">
<Row>
<Key android:keyLabel="ย" />
<Key android:keyLabel="บ" />
</Row>
</Keyboard>

View File

@@ -1,9 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Keyboard android:keyWidth="@dimen/key_width" android:keyHeight="@dimen/key_height" android:horizontalGap="@dimen/keyboard_horizontal_gap" android:verticalGap="@dimen/keyboard_vertical_gap"
xmlns:android="http://schemas.android.com/apk/res/android">
<Row>
<Key android:keyLabel="๓" />
<Key android:keyLabel="๔" />
<Key android:keyLabel="ุ" />
</Row>
</Keyboard>

View File

@@ -1,7 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Keyboard android:keyWidth="@dimen/key_width" android:keyHeight="@dimen/key_height" android:horizontalGap="@dimen/keyboard_horizontal_gap" android:verticalGap="@dimen/keyboard_vertical_gap"
xmlns:android="http://schemas.android.com/apk/res/android">
<Row>
<Key android:keyLabel="ฐ" />
</Row>
</Keyboard>

View File

@@ -1,7 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Keyboard android:keyWidth="@dimen/key_width" android:keyHeight="@dimen/key_height" android:horizontalGap="@dimen/keyboard_horizontal_gap" android:verticalGap="@dimen/keyboard_vertical_gap"
xmlns:android="http://schemas.android.com/apk/res/android">
<Row>
<Key android:keyLabel="ล" />
</Row>
</Keyboard>

View File

@@ -1,7 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Keyboard android:keyWidth="@dimen/key_width" android:keyHeight="@dimen/key_height" android:horizontalGap="@dimen/keyboard_horizontal_gap" android:verticalGap="@dimen/keyboard_vertical_gap"
xmlns:android="http://schemas.android.com/apk/res/android">
<Row>
<Key android:keyLabel="ฅ" />
</Row>
</Keyboard>

View File

@@ -1,9 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Keyboard android:keyWidth="@dimen/key_width" android:keyHeight="@dimen/key_height" android:horizontalGap="@dimen/keyboard_horizontal_gap" android:verticalGap="@dimen/keyboard_vertical_gap"
xmlns:android="http://schemas.android.com/apk/res/android">
<Row>
<Key android:keyLabel="๙" />
<Key android:keyLabel="ๆ" />
<Key android:keyLabel="" />
</Row>
</Keyboard>

View File

@@ -1,7 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Keyboard android:keyWidth="@dimen/key_width" android:keyHeight="@dimen/key_height" android:horizontalGap="@dimen/keyboard_horizontal_gap" android:verticalGap="@dimen/keyboard_vertical_gap"
xmlns:android="http://schemas.android.com/apk/res/android">
<Row>
<Key android:keyLabel="ฃ" />
</Row>
</Keyboard>

View File

@@ -1,7 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Keyboard android:keyWidth="@dimen/key_width" android:keyHeight="@dimen/key_height" android:horizontalGap="@dimen/keyboard_horizontal_gap" android:verticalGap="@dimen/keyboard_vertical_gap"
xmlns:android="http://schemas.android.com/apk/res/android">
<Row>
<Key android:keyLabel="ฟ" />
</Row>
</Keyboard>

View File

@@ -1,9 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Keyboard android:keyWidth="@dimen/key_width" android:keyHeight="@dimen/key_height" android:horizontalGap="@dimen/keyboard_horizontal_gap" android:verticalGap="@dimen/keyboard_vertical_gap"
xmlns:android="http://schemas.android.com/apk/res/android">
<Row>
<Key android:keyLabel="ไ" />
<Key android:keyLabel="ำ" />
<Key android:keyLabel="ฎ" />
</Row>
</Keyboard>

View File

@@ -1,9 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Keyboard android:keyWidth="@dimen/key_width" android:keyHeight="@dimen/key_height" android:horizontalGap="@dimen/keyboard_horizontal_gap" android:verticalGap="@dimen/keyboard_vertical_gap"
xmlns:android="http://schemas.android.com/apk/res/android">
<Row>
<Key android:keyLabel="ธ" />
<Key android:keyLabel="ั" />
<Key android:keyLabel="ํ" />
</Row>
</Keyboard>

View File

@@ -1,9 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Keyboard android:keyWidth="@dimen/key_width" android:keyHeight="@dimen/key_height" android:horizontalGap="@dimen/keyboard_horizontal_gap" android:verticalGap="@dimen/keyboard_vertical_gap"
xmlns:android="http://schemas.android.com/apk/res/android">
<Row>
<Key android:keyLabel="พ" />
<Key android:keyLabel="ฑ" />
<Key android:keyLabel="ะ" />
</Row>
</Keyboard>

View File

@@ -1,9 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Keyboard android:keyWidth="@dimen/key_width" android:keyHeight="@dimen/key_height" android:horizontalGap="@dimen/keyboard_horizontal_gap" android:verticalGap="@dimen/keyboard_vertical_gap"
xmlns:android="http://schemas.android.com/apk/res/android">
<Row>
<Key android:keyLabel="ฝ" />
<Key android:keyLabel="ฦ" />
<Key android:keyLabel="๑" />
</Row>
</Keyboard>

View File

@@ -1,9 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Keyboard android:keyWidth="@dimen/key_width" android:keyHeight="@dimen/key_height" android:horizontalGap="@dimen/keyboard_horizontal_gap" android:verticalGap="@dimen/keyboard_vertical_gap"
xmlns:android="http://schemas.android.com/apk/res/android">
<Row>
<Key android:keyLabel="3641" />
<Key android:keyLabel="3638" />
<Key android:keyLabel="3662" />
</Row>
</Keyboard>

View File

@@ -1,9 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Keyboard android:keyWidth="@dimen/key_width" android:keyHeight="@dimen/key_height" android:horizontalGap="@dimen/keyboard_horizontal_gap" android:verticalGap="@dimen/keyboard_vertical_gap"
xmlns:android="http://schemas.android.com/apk/res/android">
<Row>
<Key android:keyLabel="ณ" />
<Key android:keyLabel="น" />
<Key android:keyLabel="ฯ" />
</Row>
</Keyboard>

View File

@@ -1,9 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Keyboard android:keyWidth="@dimen/key_width" android:keyHeight="@dimen/key_height" android:horizontalGap="@dimen/keyboard_horizontal_gap" android:verticalGap="@dimen/keyboard_vertical_gap"
xmlns:android="http://schemas.android.com/apk/res/android">
<Row>
<Key android:keyLabel="ค" />
<Key android:keyLabel="๕" />
<Key android:keyLabel="ต" />
</Row>
</Keyboard>

View File

@@ -1,9 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Keyboard android:keyWidth="@dimen/key_width" android:keyHeight="@dimen/key_height" android:horizontalGap="@dimen/keyboard_horizontal_gap" android:verticalGap="@dimen/keyboard_vertical_gap"
xmlns:android="http://schemas.android.com/apk/res/android">
<Row>
<Key android:keyLabel="ข" />
<Key android:keyLabel="๘" />
<Key android:keyLabel="ช" />
</Row>
</Keyboard>

View File

@@ -1,9 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Keyboard android:keyWidth="@dimen/key_width" android:keyHeight="@dimen/key_height" android:horizontalGap="@dimen/keyboard_horizontal_gap" android:verticalGap="@dimen/keyboard_vertical_gap"
xmlns:android="http://schemas.android.com/apk/res/android">
<Row>
<Key android:keyLabel="๒" />
<Key android:keyLabel="ภ" />
<Key android:keyLabel="๓" />
</Row>
</Keyboard>

View File

@@ -1,9 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Keyboard android:keyWidth="@dimen/key_width" android:keyHeight="@dimen/key_height" android:horizontalGap="@dimen/keyboard_horizontal_gap" android:verticalGap="@dimen/keyboard_vertical_gap"
xmlns:android="http://schemas.android.com/apk/res/android">
<Row>
<Key android:keyLabel="ด" />
<Key android:keyLabel="ฌ" />
<Key android:keyLabel="้" />
</Row>
</Keyboard>

View File

@@ -1,9 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Keyboard android:keyWidth="@dimen/key_width" android:keyHeight="@dimen/key_height" android:horizontalGap="@dimen/keyboard_horizontal_gap" android:verticalGap="@dimen/keyboard_vertical_gap"
xmlns:android="http://schemas.android.com/apk/res/android">
<Row>
<Key android:keyLabel="๖" />
<Key android:keyLabel="จ" />
<Key android:keyLabel="๗" />
</Row>
</Keyboard>

View File

@@ -1,9 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Keyboard android:keyWidth="@dimen/key_width" android:keyHeight="@dimen/key_height" android:horizontalGap="@dimen/keyboard_horizontal_gap" android:verticalGap="@dimen/keyboard_vertical_gap"
xmlns:android="http://schemas.android.com/apk/res/android">
<Row>
<Key android:keyLabel="ฆ" />
<Key android:keyLabel="ก" />
<Key android:keyLabel="ฏ" />
</Row>
</Keyboard>

View File

@@ -4,56 +4,58 @@
<!-- Thai keyboard -->
<!-- https://en.wikipedia.org/wiki/Thai_(Unicode_block) -->
<Row android:rowEdgeFlags="top">
<Key android:codes="49" android:popupKeyboard="@xml/shift_1" android:keyEdgeFlags="left" android:keyLabel="1" />
<Key android:codes="50" android:popupKeyboard="@xml/shift_2" android:keyLabel="2" />
<Key android:codes="51" android:popupKeyboard="@xml/shift_3" android:keyLabel="3" />
<Key android:codes="52" android:popupKeyboard="@xml/shift_4" android:keyLabel="4" />
<Key android:codes="53" android:popupKeyboard="@xml/shift_5" android:keyLabel="5" />
<Key android:codes="54" android:popupKeyboard="@xml/shift_6" android:keyLabel="6" />
<Key android:codes="55" android:popupKeyboard="@xml/shift_7" android:keyLabel="7" />
<Key android:codes="56" android:popupKeyboard="@xml/shift_8" android:keyLabel="8" />
<Key android:codes="57" android:popupKeyboard="@xml/shift_9" android:keyLabel="9" />
<Key android:codes="48" android:popupKeyboard="@xml/shift_0" android:keyLabel="0" />
<Key android:codes="-5" android:keyEdgeFlags="right" android:keyLabel="@string/keyboardview_keycode_delete" android:keyIcon="@drawable/ic_ime_delete" />
<Key android:keyEdgeFlags="left" android:keyLabel="ๆ|๑" />
<Key android:keyLabel="ภ|๒" />
<Key android:keyLabel="ถ|๓" />
<Key android:keyLabel="ุ|ู" />
<Key android:keyLabel="ึ|๔" />
<Key android:keyLabel="ค|๕" />
<Key android:keyLabel="ต|๖" />
<Key android:keyLabel="จ|๗" />
<Key android:keyLabel="ข|๘" />
<Key android:keyLabel="ช|๙" />
<Key android:codes="-5" android:keyEdgeFlags="right" android:keyLabel="@string/keyboardview_keycode_delete" android:keyIcon="@drawable/ic_ime_delete" />
</Row>
<Row>
<Key android:popupKeyboard="@xml/accent_q_th" android:keyLabel="ฝ" android:keyEdgeFlags="left" />
<Key android:popupKeyboard="@xml/accent_w_th" android:keyLabel="๒" />
<Key android:popupKeyboard="@xml/accent_e_th" android:keyLabel="๓" />
<Key android:popupKeyboard="@xml/accent_r_th" android:keyLabel="" />
<Key android:popupKeyboard="@xml/accent_t_th" android:keyLabel="" />
<Key android:popupKeyboard="@xml/accent_y_th" android:keyLabel="" />
<Key android:popupKeyboard="@xml/accent_u_th" android:keyLabel="" />
<Key android:popupKeyboard="@xml/accent_i_th" android:keyLabel="" />
<Key android:popupKeyboard="@xml/accent_o_th" android:keyLabel="" />
<Key android:popupKeyboard="@xml/accent_p_th" android:keyLabel="" />
<Key android:popupKeyboard="@xml/accent_p2_th" android:keyLabel="ธ" android:keyEdgeFlags="right" />
<!-- NOTE: example of adding different chars to uppercase/lowercase states -->
<!-- format is: android:keyLabel="lower_char|upper_char" e.g. android:keyLabel="ฝ|๒" -->
<Key android:keyLabel="ไ|" android:keyEdgeFlags="left" />
<Key android:keyLabel="ำ|ฎ" />
<Key android:keyLabel="พ|ฑ" />
<Key android:keyLabel="ะ|ธ" />
<Key android:keyLabel="ั|ํ" />
<Key android:keyLabel="ี|๊" />
<Key android:keyLabel="ร|ณ" />
<Key android:keyLabel="น|ฯ" />
<Key android:keyLabel="ย|ญ" />
<Key android:keyLabel="บ|ฐ" />
<Key android:keyLabel="ล|," android:keyEdgeFlags="right" />
</Row>
<Row>
<Key android:popupKeyboard="@xml/accent_a_th" android:keyLabel="" android:keyEdgeFlags="left" />
<Key android:popupKeyboard="@xml/accent_s_th" android:keyLabel="" />
<Key android:popupKeyboard="@xml/accent_d_th" android:keyLabel="" />
<Key android:popupKeyboard="@xml/accent_f_th" android:keyLabel="" />
<Key android:popupKeyboard="@xml/accent_g_th" android:keyLabel="" />
<Key android:popupKeyboard="@xml/accent_h_th" android:keyLabel="" />
<Key android:popupKeyboard="@xml/accent_j_th" android:keyLabel="" />
<Key android:keyLabel="" />
<Key android:keyLabel="" />
<Key android:keyLabel="" />
<Key android:keyLabel="ş" android:keyEdgeFlags="right" />
<Key android:keyLabel="ฟ|ฤ" android:keyEdgeFlags="left" />
<Key android:keyLabel="ห|ฆ" />
<Key android:keyLabel="ก|ฏ" />
<Key android:keyLabel="ด|โ" />
<Key android:keyLabel="เ|ฌ" />
<Key android:keyLabel="้|็" />
<Key android:keyLabel="่|๋" />
<Key android:keyLabel="า|ษ" />
<Key android:keyLabel="ส|ศ" />
<Key android:keyLabel="ว|ซ" />
<Key android:keyLabel="ง|." android:keyEdgeFlags="right" />
</Row>
<Row>
<Key android:popupKeyboard="@xml/accent_z_th" android:keyLabel="" android:keyEdgeFlags="left" />
<Key android:popupKeyboard="@xml/accent_x_th" android:keyLabel="" />
<Key android:popupKeyboard="@xml/accent_c_th" android:keyLabel="" />
<Key android:keyLabel="" />
<Key android:keyLabel="" />
<Key android:keyLabel="" />
<Key android:keyLabel="" />
<Key android:keyLabel="" />
<Key android:keyLabel="" />
<Key android:keyLabel="" />
<Key android:keyLabel="," android:keyEdgeFlags="right" />
<Key android:keyLabel="ผ|(" android:keyEdgeFlags="left" />
<Key android:keyLabel="ป|)" />
<Key android:keyLabel="แ|ฉ" />
<Key android:keyLabel="อ|ฮ" />
<Key android:keyLabel="ิ|ฺ" />
<Key android:keyLabel="ื|์" />
<Key android:keyLabel="ท|?" />
<Key android:keyLabel="ม|ฒ" />
<Key android:keyLabel="ใ|ฬ" />
<Key android:keyLabel="ฝ|ฦ" />
<Key android:keyLabel="ฃ|ฅ" android:keyEdgeFlags="right" />
</Row>
<Row android:rowEdgeFlags="bottom">
<Key android:codes="-2" android:keyEdgeFlags="left" android:keyLabel="@string/keyboardview_keycode_mode_change" android:keyIcon="@drawable/ic_ime_symbols" />