From 36e10a792ffd034ffb56e48e2e2282f6ae16cc8d Mon Sep 17 00:00:00 2001 From: Jules Aguillon Date: Sun, 23 Oct 2022 21:34:05 +0200 Subject: [PATCH] Add the capslock key The key enable caps lock immediately. It does nothing if caps lock is already enabled. It is not present on the keyboard by default but a place is defined on every layout, top-right of the shift key. It can be enabled in the settings. The icon is from materialdesignicons.com. --- res/xml/azerty.xml | 2 +- res/xml/bangla.xml | 2 +- res/xml/bone.xml | 2 +- res/xml/colemak.xml | 2 +- res/xml/greekmath.xml | 2 +- res/xml/hindi.xml | 2 +- res/xml/jcuken_ua.xml | 2 +- res/xml/local_bgph1.xml | 2 +- res/xml/local_ru_jcuken.xml | 2 +- res/xml/neo2.xml | 2 +- res/xml/qwerty.xml | 2 +- res/xml/qwerty_el.xml | 2 +- res/xml/qwerty_es.xml | 2 +- res/xml/qwerty_hu.xml | 2 +- res/xml/qwerty_ko.xml | 2 +- res/xml/qwerty_lv.xml | 2 +- res/xml/qwerty_no.xml | 2 +- res/xml/qwerty_pt.xml | 2 +- res/xml/qwerty_sv_se.xml | 2 +- res/xml/qwerty_tr.xml | 2 +- res/xml/qwertz.xml | 2 +- res/xml/qwertz_cs.xml | 2 +- res/xml/qwertz_hu.xml | 2 +- res/xml/settings.xml | 4 ++++ .../ExtraKeyCheckBoxPreference.java | 1 + srcs/juloo.keyboard2/KeyEventHandler.java | 2 ++ srcs/juloo.keyboard2/KeyValue.java | 4 +++- srcs/juloo.keyboard2/Keyboard2.java | 9 +++++++-- srcs/juloo.keyboard2/Keyboard2View.java | 4 ++-- srcs/juloo.keyboard2/Pointers.java | 11 ++++++----- srcs/special_font/12.svg | 2 ++ srcs/special_font/result.ttf | Bin 7136 -> 7240 bytes 32 files changed, 50 insertions(+), 33 deletions(-) create mode 100644 srcs/special_font/12.svg diff --git a/res/xml/azerty.xml b/res/xml/azerty.xml index d025f1b..a91315d 100644 --- a/res/xml/azerty.xml +++ b/res/xml/azerty.xml @@ -25,7 +25,7 @@ - + diff --git a/res/xml/bangla.xml b/res/xml/bangla.xml index 9926b8c..9d70e37 100644 --- a/res/xml/bangla.xml +++ b/res/xml/bangla.xml @@ -24,7 +24,7 @@ - + diff --git a/res/xml/bone.xml b/res/xml/bone.xml index c107e88..d84622a 100644 --- a/res/xml/bone.xml +++ b/res/xml/bone.xml @@ -25,7 +25,7 @@ - + diff --git a/res/xml/colemak.xml b/res/xml/colemak.xml index c232dc0..6e968c9 100644 --- a/res/xml/colemak.xml +++ b/res/xml/colemak.xml @@ -26,7 +26,7 @@ - + diff --git a/res/xml/greekmath.xml b/res/xml/greekmath.xml index 8db582d..ff467e8 100644 --- a/res/xml/greekmath.xml +++ b/res/xml/greekmath.xml @@ -25,7 +25,7 @@ - + diff --git a/res/xml/hindi.xml b/res/xml/hindi.xml index feb95fb..cf8e038 100644 --- a/res/xml/hindi.xml +++ b/res/xml/hindi.xml @@ -24,7 +24,7 @@ - + diff --git a/res/xml/jcuken_ua.xml b/res/xml/jcuken_ua.xml index c223805..5b2027e 100644 --- a/res/xml/jcuken_ua.xml +++ b/res/xml/jcuken_ua.xml @@ -27,7 +27,7 @@ - + diff --git a/res/xml/local_bgph1.xml b/res/xml/local_bgph1.xml index 601c18b..c84d54e 100644 --- a/res/xml/local_bgph1.xml +++ b/res/xml/local_bgph1.xml @@ -24,7 +24,7 @@ - + diff --git a/res/xml/local_ru_jcuken.xml b/res/xml/local_ru_jcuken.xml index d153819..8414f27 100644 --- a/res/xml/local_ru_jcuken.xml +++ b/res/xml/local_ru_jcuken.xml @@ -28,7 +28,7 @@ - + diff --git a/res/xml/neo2.xml b/res/xml/neo2.xml index 1ed75b8..96265f2 100644 --- a/res/xml/neo2.xml +++ b/res/xml/neo2.xml @@ -27,7 +27,7 @@ - + diff --git a/res/xml/qwerty.xml b/res/xml/qwerty.xml index 2e2a4a5..31429c1 100644 --- a/res/xml/qwerty.xml +++ b/res/xml/qwerty.xml @@ -24,7 +24,7 @@ - + diff --git a/res/xml/qwerty_el.xml b/res/xml/qwerty_el.xml index 7a05bda..9aff8b9 100644 --- a/res/xml/qwerty_el.xml +++ b/res/xml/qwerty_el.xml @@ -24,7 +24,7 @@ - + diff --git a/res/xml/qwerty_es.xml b/res/xml/qwerty_es.xml index 4aee20d..7b2ead2 100644 --- a/res/xml/qwerty_es.xml +++ b/res/xml/qwerty_es.xml @@ -25,7 +25,7 @@ - + diff --git a/res/xml/qwerty_hu.xml b/res/xml/qwerty_hu.xml index f97f2f9..95e1fee 100644 --- a/res/xml/qwerty_hu.xml +++ b/res/xml/qwerty_hu.xml @@ -24,7 +24,7 @@ - + diff --git a/res/xml/qwerty_ko.xml b/res/xml/qwerty_ko.xml index 76fefa1..62f7fb7 100644 --- a/res/xml/qwerty_ko.xml +++ b/res/xml/qwerty_ko.xml @@ -24,7 +24,7 @@ - + diff --git a/res/xml/qwerty_lv.xml b/res/xml/qwerty_lv.xml index 6c0c7b5..6cf8d5a 100644 --- a/res/xml/qwerty_lv.xml +++ b/res/xml/qwerty_lv.xml @@ -24,7 +24,7 @@ - + diff --git a/res/xml/qwerty_no.xml b/res/xml/qwerty_no.xml index 35a3709..c6ed74f 100644 --- a/res/xml/qwerty_no.xml +++ b/res/xml/qwerty_no.xml @@ -24,7 +24,7 @@ - + diff --git a/res/xml/qwerty_pt.xml b/res/xml/qwerty_pt.xml index 9fef348..8eb34da 100644 --- a/res/xml/qwerty_pt.xml +++ b/res/xml/qwerty_pt.xml @@ -25,7 +25,7 @@ - + diff --git a/res/xml/qwerty_sv_se.xml b/res/xml/qwerty_sv_se.xml index 80ce617..63d16c2 100644 --- a/res/xml/qwerty_sv_se.xml +++ b/res/xml/qwerty_sv_se.xml @@ -27,7 +27,7 @@ - + diff --git a/res/xml/qwerty_tr.xml b/res/xml/qwerty_tr.xml index 8d83f9a..e0c60e5 100644 --- a/res/xml/qwerty_tr.xml +++ b/res/xml/qwerty_tr.xml @@ -24,7 +24,7 @@ - + diff --git a/res/xml/qwertz.xml b/res/xml/qwertz.xml index f54f698..9b01a23 100644 --- a/res/xml/qwertz.xml +++ b/res/xml/qwertz.xml @@ -24,7 +24,7 @@ - + diff --git a/res/xml/qwertz_cs.xml b/res/xml/qwertz_cs.xml index 7a14e84..5a4d4fd 100644 --- a/res/xml/qwertz_cs.xml +++ b/res/xml/qwertz_cs.xml @@ -24,7 +24,7 @@ - + diff --git a/res/xml/qwertz_hu.xml b/res/xml/qwertz_hu.xml index c995299..7e4f6c3 100644 --- a/res/xml/qwertz_hu.xml +++ b/res/xml/qwertz_hu.xml @@ -24,7 +24,7 @@ - + diff --git a/res/xml/settings.xml b/res/xml/settings.xml index f74dc90..e91c460 100644 --- a/res/xml/settings.xml +++ b/res/xml/settings.xml @@ -21,6 +21,10 @@ + + + + diff --git a/srcs/juloo.keyboard2/ExtraKeyCheckBoxPreference.java b/srcs/juloo.keyboard2/ExtraKeyCheckBoxPreference.java index d0734b9..e66c2cc 100644 --- a/srcs/juloo.keyboard2/ExtraKeyCheckBoxPreference.java +++ b/srcs/juloo.keyboard2/ExtraKeyCheckBoxPreference.java @@ -33,6 +33,7 @@ public class ExtraKeyCheckBoxPreference extends CheckBoxPreference "ß", "£", "switch_greekmath", + "capslock", }; public static boolean default_checked(String name) diff --git a/srcs/juloo.keyboard2/KeyEventHandler.java b/srcs/juloo.keyboard2/KeyEventHandler.java index 57f15f6..4623dec 100644 --- a/srcs/juloo.keyboard2/KeyEventHandler.java +++ b/srcs/juloo.keyboard2/KeyEventHandler.java @@ -35,6 +35,7 @@ class KeyEventHandler implements Config.IKeyEventHandler case ACTION: _recv.performAction(); break; case SWITCH_PROGRAMMING: _recv.switchProgramming(); break; case SWITCH_GREEKMATH: _recv.switchGreekmath(); break; + case CAPS_LOCK: _recv.enableCapsLock(); break; } break; case Keyevent: @@ -102,6 +103,7 @@ class KeyEventHandler implements Config.IKeyEventHandler public void setPane_normal(); public void showKeyboardConfig(); public void performAction(); + public void enableCapsLock(); public void switchMain(); public void switchNumeric(); diff --git a/srcs/juloo.keyboard2/KeyValue.java b/srcs/juloo.keyboard2/KeyValue.java index 9b89101..9c88b4a 100644 --- a/srcs/juloo.keyboard2/KeyValue.java +++ b/srcs/juloo.keyboard2/KeyValue.java @@ -16,7 +16,8 @@ final class KeyValue CHANGE_METHOD, ACTION, SWITCH_PROGRAMMING, - SWITCH_GREEKMATH + SWITCH_GREEKMATH, + CAPS_LOCK, } // Must be evaluated in the reverse order of their values. @@ -287,6 +288,7 @@ final class KeyValue addEventKey("switch_greekmath", "πλ∇¬", Event.SWITCH_GREEKMATH, FLAG_SMALLER_FONT); addEventKey("change_method", "\u0009", Event.CHANGE_METHOD, FLAG_KEY_FONT | FLAG_SMALLER_FONT); addEventKey("action", "Action", Event.ACTION, FLAG_SMALLER_FONT); // Will always be replaced + addEventKey("capslock", "\u0012", Event.CAPS_LOCK, FLAG_KEY_FONT); addKeyeventKey("esc", "Esc", KeyEvent.KEYCODE_ESCAPE, FLAG_SMALLER_FONT); addKeyeventKey("enter", "\u000E", KeyEvent.KEYCODE_ENTER, FLAG_KEY_FONT); diff --git a/srcs/juloo.keyboard2/Keyboard2.java b/srcs/juloo.keyboard2/Keyboard2.java index 12ee196..35d5b26 100644 --- a/srcs/juloo.keyboard2/Keyboard2.java +++ b/srcs/juloo.keyboard2/Keyboard2.java @@ -63,9 +63,9 @@ public class Keyboard2 extends InputMethodService public void update_shift_state(boolean should_enable, boolean should_disable) { if (should_enable) - _keyboardView.set_shift_state(true); + _keyboardView.set_shift_state(true, false); else if (should_disable) - _keyboardView.set_shift_state(false); + _keyboardView.set_shift_state(false, false); } private List getEnabledSubtypes(InputMethodManager imm) @@ -314,6 +314,11 @@ public class Keyboard2 extends InputMethodService conn.performEditorAction(_config.actionId); } + public void enableCapsLock() + { + _keyboardView.set_shift_state(true, true); + } + public void switchMain() { _keyboardView.setKeyboard(getLayout(_currentTextLayout)); diff --git a/srcs/juloo.keyboard2/Keyboard2View.java b/srcs/juloo.keyboard2/Keyboard2View.java index e613925..4742235 100644 --- a/srcs/juloo.keyboard2/Keyboard2View.java +++ b/srcs/juloo.keyboard2/Keyboard2View.java @@ -100,12 +100,12 @@ public class Keyboard2View extends View } /** Called by auto-capitalisation. */ - public void set_shift_state(boolean state) + public void set_shift_state(boolean state, boolean lock) { if (_keyboard == null || _shift_key == null) return; if (state) - _pointers.add_fake_pointer(_shift_kv, _shift_key); + _pointers.add_fake_pointer(_shift_kv, _shift_key, lock); else _pointers.remove_fake_pointer(_shift_kv, _shift_key); invalidate(); diff --git a/srcs/juloo.keyboard2/Pointers.java b/srcs/juloo.keyboard2/Pointers.java index 2ac55bb..35299ab 100644 --- a/srcs/juloo.keyboard2/Pointers.java +++ b/srcs/juloo.keyboard2/Pointers.java @@ -75,13 +75,14 @@ public final class Pointers implements Handler.Callback } /** Fake pointers are latched and not lockable. */ - public void add_fake_pointer(KeyValue kv, KeyboardData.Key key) + public void add_fake_pointer(KeyValue kv, KeyboardData.Key key, boolean locked) { - // Avoid adding a fake pointer to a key that is already down. - if (isKeyDown(key)) - return; + remove_fake_pointer(kv, key); Pointer ptr = new Pointer(-1, key, kv, 0.f, 0.f, Modifiers.EMPTY); - ptr.flags = ptr.flags & ~(KeyValue.FLAG_LATCH | KeyValue.FLAG_LOCK | KeyValue.FLAG_FAKE_PTR); + ptr.flags &= ~KeyValue.FLAG_LATCH; + ptr.flags |= KeyValue.FLAG_LOCK | KeyValue.FLAG_FAKE_PTR; + if (locked) + ptr.flags = (ptr.flags & ~KeyValue.FLAG_LOCK) | KeyValue.FLAG_LOCKED; _ptrs.add(ptr); } diff --git a/srcs/special_font/12.svg b/srcs/special_font/12.svg new file mode 100644 index 0000000..80b0480 --- /dev/null +++ b/srcs/special_font/12.svg @@ -0,0 +1,2 @@ + + diff --git a/srcs/special_font/result.ttf b/srcs/special_font/result.ttf index defef369dba18c2b41e4d40aea45e3b44465c0d6..1227f27850c14435fb2ef1f891ad5951733754f0 100644 GIT binary patch delta 539 zcmaE0e!`-jfsuiMfrp`iftkU?qZdN!01Ct3*EGoII zM1et(sgi+#c>++LB|WjY;QxQ1P6inVAfF>Wr!uYh(eo6b{2c}c(SVH9#FWP955YjW zGeB&X0Tf_A%6toG77LKCl95{yS&{3;@f#?x0w~avlb@XEw#UZ+XuuR8-y=7%qJW`{ zVLeb@1ISm%OUzA8s8sZ0V35=SI!dx2zqsT}rRiY?25FFke}Fv$^w1GQOM!_u{MnVk z0?L#17-bn>Qk2+&sK|O#A|ZLc){hGuiTsh>D3z zNJ>e|$jZqpC@M|<$TVm20Va;gz05lDD_DeB8d!d?rmUkXY{9gcfsH|oK?-P-xU#6SsWPLYlA5WYiJ7sYk(j8U2%EZ~ zq9EhJ3$@E?8NdA9p=4;N#N+`Y|L$P?b7A@Nf1L;cCBtAQkH0$@HlN|L6<}1J%q6YH a#3(%3Kzf+~dud*#fq|hB&|{1s?*ahS9el(9 delta 431 zcmX?M@xZ*EfsuiMfrp`iftkUYpD8PP{`6kdT79d|GBex{7BJ&8xMxek7pg>1XesZG61?NLR1113ZZn=pS1q`JO z>w)qbK)ym=Vs2_erJ^4Lg9Ok(Cdq>Q;*u#R_lh$xNWB2czXN*)=%M9>{V@}7__Hg4 z1(YW1G0HMJP4;12G5H6he@qzA#UNkHFt9LK0cj2(WCGGW41x@CK>q-3W8h^70J4Ch z{||%JvH?YbHZt%t2mnp4SXZzKu=TNXu$QoZ;E3Qj#c9FC!Bxe;u=x)2 cSGLW%+%^J?N|Ups)h17pUd9Esml5O^0J_;=Q~&?~