abouttreesummaryrefslogcommitdiff
path: root/srcs/juloo.keyboard2/Keyboard2View.java
diff options
context:
space:
mode:
authorJules Aguillon2023-06-03 09:37:59 +0200
committerJules Aguillon2023-06-03 09:37:59 +0200
commit22d407c46a56231efc3d1192616d7923c9228bf1 (patch)
tree7513d162d0e5152dba1547c7760275651069d0a2 /srcs/juloo.keyboard2/Keyboard2View.java
parentd2a92795e982151da66ca700168f4fbc946aa4b3 (diff)
downloadunexpected-keyboard-22d407c46a56231efc3d1192616d7923c9228bf1.tar.gz
unexpected-keyboard-22d407c46a56231efc3d1192616d7923c9228bf1.zip
Per-layout shift modmap
Specify the behavior of shift for a layout. This is intended for locales that use the same alphabet but have different capital letters (eg. Bengali). The modmap is defined like this: <keyboard> <modmap> <shift a="a" b="A"/> </modmap> </keyboard>
Diffstat (limited to 'srcs/juloo.keyboard2/Keyboard2View.java')
-rw-r--r--srcs/juloo.keyboard2/Keyboard2View.java13
1 files changed, 11 insertions, 2 deletions
diff --git a/srcs/juloo.keyboard2/Keyboard2View.java b/srcs/juloo.keyboard2/Keyboard2View.java
index cb93b3a..65098d0 100644
--- a/srcs/juloo.keyboard2/Keyboard2View.java
+++ b/srcs/juloo.keyboard2/Keyboard2View.java
@@ -123,6 +123,15 @@ public class Keyboard2View extends View
public KeyValue modifyKey(KeyValue k, Pointers.Modifiers mods)
{
+ if (_keyboard.modmap != null)
+ {
+ if (mods.has(KeyValue.Modifier.SHIFT))
+ {
+ KeyValue km = _keyboard.modmap.shift.get(k);
+ if (km != null)
+ return km;
+ }
+ }
return KeyModifier.modify(k, mods);
}
@@ -372,7 +381,7 @@ public class Keyboard2View extends View
private void drawLabel(Canvas canvas, KeyValue kv, float x, float y, float keyH, boolean isKeyDown)
{
- kv = KeyModifier.modify(kv, _mods);
+ kv = modifyKey(kv, _mods);
if (kv == null)
return;
float textSize = scaleTextSize(kv, _config.labelTextSize, keyH);
@@ -388,7 +397,7 @@ public class Keyboard2View extends View
{
Paint.Align a = LABEL_POSITION_H[sub_index];
Vertical v = LABEL_POSITION_V[sub_index];
- kv = KeyModifier.modify(kv, _mods);
+ kv = modifyKey(kv, _mods);
if (kv == null)
return;
float textSize = scaleTextSize(kv, _config.sublabelTextSize, keyH);