abouttreesummaryrefslogcommitdiff
diff options
context:
space:
mode:
-rw-r--r--res/xml/bottom_row.xml2
-rw-r--r--srcs/juloo.keyboard2/ExtraKeyCheckBoxPreference.java3
-rw-r--r--srcs/juloo.keyboard2/KeyEventHandler.java2
-rw-r--r--srcs/juloo.keyboard2/KeyValue.java3
-rw-r--r--srcs/juloo.keyboard2/Keyboard2.java22
-rw-r--r--srcs/special_font/15.svg8
-rw-r--r--srcs/special_font/result.ttfbin8660 -> 8732 bytes
7 files changed, 39 insertions, 1 deletions
diff --git a/res/xml/bottom_row.xml b/res/xml/bottom_row.xml
index 93ce287..56493dc 100644
--- a/res/xml/bottom_row.xml
+++ b/res/xml/bottom_row.xml
@@ -3,6 +3,6 @@
<key width="1.7" key0="ctrl" key1="loc switch_greekmath" key2="loc meta" key4="switch_numeric"/>
<key width="1.1" key0="fn" key1="loc alt" key2="change_method" key3="switch_emoji" key4="config"/>
<key width="4.4" key0="space" key7="switch_second" key5="left" key6="right" slider="true"/>
- <key width="1.1" key7="up" key6="right" key5="left" key8="down"/>
+ <key width="1.1" key0="loc voice_typing" key7="up" key6="right" key5="left" key8="down"/>
<key width="1.7" key0="enter" key2="action"/>
</row>
diff --git a/srcs/juloo.keyboard2/ExtraKeyCheckBoxPreference.java b/srcs/juloo.keyboard2/ExtraKeyCheckBoxPreference.java
index 8938d2d..8f7471a 100644
--- a/srcs/juloo.keyboard2/ExtraKeyCheckBoxPreference.java
+++ b/srcs/juloo.keyboard2/ExtraKeyCheckBoxPreference.java
@@ -16,6 +16,7 @@ public class ExtraKeyCheckBoxPreference extends CheckBoxPreference
{
"alt",
"meta",
+ "voice_typing",
"accent_aigu",
"accent_grave",
"accent_double_aigu",
@@ -56,6 +57,8 @@ public class ExtraKeyCheckBoxPreference extends CheckBoxPreference
{
switch (name)
{
+ case "voice_typing":
+ return true;
default:
return false;
}
diff --git a/srcs/juloo.keyboard2/KeyEventHandler.java b/srcs/juloo.keyboard2/KeyEventHandler.java
index 1a591c8..70b54b9 100644
--- a/srcs/juloo.keyboard2/KeyEventHandler.java
+++ b/srcs/juloo.keyboard2/KeyEventHandler.java
@@ -59,6 +59,7 @@ class KeyEventHandler implements Config.IKeyEventHandler
case SWITCH_SECOND_BACK: _recv.set_layout(Layout.Primary); break;
case SWITCH_GREEKMATH: _recv.set_layout(Layout.Greekmath); break;
case CAPS_LOCK: _recv.set_shift_state(true, true); break;
+ case SWITCH_VOICE_TYPING: _recv.switch_voice_typing(); break;
}
break;
case Keyevent:
@@ -182,6 +183,7 @@ class KeyEventHandler implements Config.IKeyEventHandler
{
public void switchInputMethod();
public void switchToPrevInputMethod();
+ public void switch_voice_typing();
public void setPane_emoji();
public void setPane_normal();
public void showKeyboardConfig();
diff --git a/srcs/juloo.keyboard2/KeyValue.java b/srcs/juloo.keyboard2/KeyValue.java
index 3e84ce8..9f4d985 100644
--- a/srcs/juloo.keyboard2/KeyValue.java
+++ b/srcs/juloo.keyboard2/KeyValue.java
@@ -19,6 +19,7 @@ final class KeyValue
SWITCH_SECOND_BACK,
SWITCH_GREEKMATH,
CAPS_LOCK,
+ SWITCH_VOICE_TYPING,
}
// Must be evaluated in the reverse order of their values.
@@ -343,6 +344,7 @@ final class KeyValue
case "change_method_prev": return eventKey(0x09, Event.CHANGE_METHOD_PREV, FLAG_SMALLER_FONT);
case "action": return eventKey("Action", Event.ACTION, FLAG_SMALLER_FONT); // Will always be replaced
case "capslock": return eventKey(0x12, Event.CAPS_LOCK, 0);
+ case "voice_typing": return eventKey(0x15, Event.SWITCH_VOICE_TYPING, FLAG_SMALLER_FONT);
case "esc": return keyeventKey("Esc", KeyEvent.KEYCODE_ESCAPE, FLAG_SMALLER_FONT);
case "enter": return keyeventKey(0x0E, KeyEvent.KEYCODE_ENTER, 0);
@@ -451,6 +453,7 @@ final class KeyValue
/* Keys description is shown in the settings. */
addKeyDescr("capslock", "Caps lock");
addKeyDescr("switch_greekmath", "Greek & math symbols");
+ addKeyDescr("voice_typing", "Voice typing");
}
// Substitute for [assert], which has no effect on Android.
diff --git a/srcs/juloo.keyboard2/Keyboard2.java b/srcs/juloo.keyboard2/Keyboard2.java
index c41a22f..e5bd726 100644
--- a/srcs/juloo.keyboard2/Keyboard2.java
+++ b/srcs/juloo.keyboard2/Keyboard2.java
@@ -399,6 +399,28 @@ public class Keyboard2 extends InputMethodService
Keyboard2.this.switchToPreviousInputMethod();
}
+ public void switch_voice_typing()
+ {
+ if (VERSION.SDK_INT < 11) // Due to InputMethodSubtype
+ return;
+ InputMethodManager imm = (InputMethodManager)getSystemService(INPUT_METHOD_SERVICE);
+ for (InputMethodInfo im : imm.getEnabledInputMethodList())
+ {
+ for (InputMethodSubtype imst : imm.getEnabledInputMethodSubtypeList(im, true))
+ {
+ // Switch to the first IM that has a subtype of this mode
+ if (imst.getMode().equals("voice"))
+ {
+ // Best-effort. Good enough for triggering Google's voice typing
+ if (VERSION.SDK_INT < 28)
+ Keyboard2.this.switchInputMethod(im.getId());
+ else
+ Keyboard2.this.switchInputMethod(im.getId(), imst);
+ }
+ }
+ }
+ }
+
public void setPane_emoji()
{
if (_emojiPane == null)
diff --git a/srcs/special_font/15.svg b/srcs/special_font/15.svg
new file mode 100644
index 0000000..a966f26
--- /dev/null
+++ b/srcs/special_font/15.svg
@@ -0,0 +1,8 @@
+<?xml version="1.0" standalone="no"?>
+<!-- Google's Material Icons "Mic" (modified) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" viewBox="-10 0 1010 1000">
+ <path fill="currentColor"
+d="M500 583.333q-51.875 0 -88.4375 -36.5625t-36.5625 -88.4375v-250q0 -51.875 36.5625 -88.4375t88.4375 -36.5625t88.4375 36.5625t36.5625 88.4375v250q0 51.875 -36.5625 88.4375t-88.4375 36.5625zM708.333 458.333h83.334q0 109.513 -71.6299 191.209
+q-71.6289 81.6963 -178.37 97.125v128.333h-83.334v-128.333q-106.741 -15.4287 -178.37 -97.125q-71.6299 -81.6963 -71.6299 -191.209h83.334q0 86.25 61.042 147.292q61.041 61.042 147.291 61.042t147.291 -61.042q61.042 -61.042 61.042 -147.292z" />
+</svg>
diff --git a/srcs/special_font/result.ttf b/srcs/special_font/result.ttf
index c7a8ca0..429006b 100644
--- a/srcs/special_font/result.ttf
+++ b/srcs/special_font/result.ttf
Binary files differ