diff --git a/app/build.gradle b/app/build.gradle
index 58f5b82d7..5d9e089a0 100755
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -81,6 +81,7 @@ dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.5.1" // why not working with 1.6.0?
implementation 'com.github.martin-stone:hsv-alpha-color-picker-android:3.1.0'
+ implementation 'com.joaomgcd:taskerpluginlibrary:0.4.10'
testImplementation 'junit:junit:4.13.2'
testImplementation 'org.mockito:mockito-core:3.12.4'
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 4501ee583..16a980f1f 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -21,6 +21,9 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/KeyboardSwitcher.java b/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/KeyboardSwitcher.java
index 0e29645fd..12f9cba27 100644
--- a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/KeyboardSwitcher.java
+++ b/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/KeyboardSwitcher.java
@@ -33,6 +33,7 @@
import org.dslul.openboard.inputmethod.latin.define.ProductionFlags;
import org.dslul.openboard.inputmethod.latin.settings.Settings;
import org.dslul.openboard.inputmethod.latin.settings.SettingsValues;
+import org.dslul.openboard.inputmethod.latin.tasker.GlobalKeyboardListener;
import org.dslul.openboard.inputmethod.latin.utils.CapsModeUtils;
import org.dslul.openboard.inputmethod.latin.utils.LanguageOnSpacebarUtils;
import org.dslul.openboard.inputmethod.latin.utils.RecapitalizeStatus;
@@ -543,6 +544,7 @@ public View onCreateInputView(@NonNull Context displayContext,
mEmojiPalettesView.setKeyboardActionListener(mLatinIME);
mClipboardHistoryView.setHardwareAcceleratedDrawingEnabled(isHardwareAcceleratedDrawingEnabled);
mClipboardHistoryView.setKeyboardActionListener(mLatinIME);
+ GlobalKeyboardListener.INSTANCE.setListener(mLatinIME);
return mCurrentInputView;
}
diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/tasker/GlobalKeyboardListener.kt b/app/src/main/java/org/dslul/openboard/inputmethod/latin/tasker/GlobalKeyboardListener.kt
new file mode 100644
index 000000000..eb07b6215
--- /dev/null
+++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/tasker/GlobalKeyboardListener.kt
@@ -0,0 +1,7 @@
+package org.dslul.openboard.inputmethod.latin.tasker
+
+import org.dslul.openboard.inputmethod.keyboard.KeyboardActionListener
+
+object GlobalKeyboardListener{
+ var listener: KeyboardActionListener? = null
+}
diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/tasker/SendTextAction.kt b/app/src/main/java/org/dslul/openboard/inputmethod/latin/tasker/SendTextAction.kt
new file mode 100644
index 000000000..c3f2e34ed
--- /dev/null
+++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/tasker/SendTextAction.kt
@@ -0,0 +1,69 @@
+package org.dslul.openboard.inputmethod.latin.tasker
+
+import android.app.Activity
+import android.content.Context
+import android.os.Bundle
+import android.widget.EditText
+import androidx.appcompat.app.AlertDialog
+import com.joaomgcd.taskerpluginlibrary.action.TaskerPluginRunnerActionNoOutput
+import com.joaomgcd.taskerpluginlibrary.config.TaskerPluginConfig
+import com.joaomgcd.taskerpluginlibrary.config.TaskerPluginConfigHelperNoOutput
+import com.joaomgcd.taskerpluginlibrary.input.TaskerInput
+import com.joaomgcd.taskerpluginlibrary.input.TaskerInputField
+import com.joaomgcd.taskerpluginlibrary.input.TaskerInputRoot
+import com.joaomgcd.taskerpluginlibrary.runner.TaskerPluginResult
+import com.joaomgcd.taskerpluginlibrary.runner.TaskerPluginResultSucess
+
+
+@TaskerInputRoot
+data class TaskerText @JvmOverloads constructor(@field:TaskerInputField("text") var text: String = "")
+
+class SendTextAction : Activity(), TaskerPluginConfig {
+
+ var text: String = ""
+ lateinit var editText: EditText
+ private val helper by lazy { SendTextActionHelper(this) }
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ editText = EditText(this)
+ // simple edit text ui
+ val a = AlertDialog.Builder(this)
+ .setTitle("Send Text")
+ .setView(editText)
+ .setPositiveButton("OK") { _, _ ->
+ text = editText.text.toString()
+ helper.finishForTasker()
+ }
+ .setNegativeButton("Cancel") { _, _ ->
+ helper.onBackPressed()
+ }.create()
+ editText.requestFocus()
+ a.show()
+
+
+ helper.onCreate()
+ }
+
+ override val context: Context
+ get() = applicationContext
+ override val inputForTasker: TaskerInput
+ get() {
+ return TaskerInput(TaskerText(text))
+ }
+
+ override fun assignFromInput(input: TaskerInput) {
+ text = input.regular.text
+ }
+}
+
+class SendTextActionHelper(config: TaskerPluginConfig) :
+ TaskerPluginConfigHelperNoOutput(config) {
+ override val inputClass: Class = TaskerText::class.java
+ override val runnerClass: Class = SendTextActionRunner::class.java
+}
+
+class SendTextActionRunner : TaskerPluginRunnerActionNoOutput() {
+ override fun run(context: Context, input: TaskerInput): TaskerPluginResult =
+ GlobalKeyboardListener.listener?.onTextInput(input.regular.text)
+ ?.let { TaskerPluginResultSucess() } ?: TaskerPluginResultSucess()
+}