diff --git a/src/main/java/org/kde/kdeconnect/Plugins/MousePadPlugin/MousePadActivity.java b/src/main/java/org/kde/kdeconnect/Plugins/MousePadPlugin/MousePadActivity.java
index 31985083..610e6ca5 100644
--- a/src/main/java/org/kde/kdeconnect/Plugins/MousePadPlugin/MousePadActivity.java
+++ b/src/main/java/org/kde/kdeconnect/Plugins/MousePadPlugin/MousePadActivity.java
@@ -1,8 +1,11 @@
package org.kde.kdeconnect.Plugins.MousePadPlugin;
import android.app.Activity;
+import android.content.Context;
import android.os.Bundle;
import android.view.GestureDetector;
+import android.view.inputmethod.InputMethodManager;
+import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
@@ -56,6 +59,9 @@ public class MousePadActivity extends Activity implements GestureDetector.OnGest
case R.id.menu_middle_click:
sendMiddleClick();
return true;
+ case R.id.menu_show_keyboard:
+ showKeyboard();
+ return true;
default:
return super.onOptionsItemSelected(item);
}
@@ -205,6 +211,56 @@ public class MousePadActivity extends Activity implements GestureDetector.OnGest
return true;
}
+ @Override
+ public boolean onKeyDown(int keyCode, final KeyEvent event) {
+ String character = new String(new char[] {(char) event.getUnicodeChar(0)});
+ int modifier = 0;
+ if (keyCode == KeyEvent.KEYCODE_DEL) {
+ modifier = 1;
+ } else if (keyCode == KeyEvent.KEYCODE_ENTER) {
+ modifier = 1 << 1;
+ } else if (keyCode == KeyEvent.KEYCODE_TAB) {
+ modifier = 1 << 1 | 1;
+ }
+ // Add space for Home, End, Page Up, and Page Down
+
+ if (event.isShiftPressed()) {
+ modifier |= 1 << 3;
+ }
+ if (android.os.Build.VERSION.SDK_INT >= 11) {
+ if (event.isCtrlPressed()) {
+ modifier |= 1 << 4;
+ }
+ }
+ if (character.charAt(0) == 0 && modifier == 0) {
+ return super.onKeyDown(keyCode, event);
+ }
+ final String characterToSend;
+ if (character.charAt(0) == 0) {
+ characterToSend = "";
+ } else {
+ characterToSend = character;
+ }
+ BackgroundService.RunCommand(this, new BackgroundService.InstanceCallback() {
+ @Override
+ public void onServiceStart(BackgroundService service) {
+ Device device = service.getDevice(deviceId);
+ MousePadPlugin mousePadPlugin = (MousePadPlugin)device.getPlugin("plugin_mousepad");
+ if (mousePadPlugin == null) return;
+ mousePadPlugin.sendKey(characterToSend, 0);
+ }
+ });
+ return true;
+ }
+
+ @Override
+ public boolean onKeyUp(int keyCode, KeyEvent event) {
+ if (event.getUnicodeChar() == 0) {
+ return super.onKeyDown(keyCode, event);
+ }
+ return true;
+ }
+
private void sendMiddleClick() {
BackgroundService.RunCommand(this, new BackgroundService.InstanceCallback() {
@Override
@@ -228,4 +284,9 @@ public class MousePadActivity extends Activity implements GestureDetector.OnGest
}
});
}
+
+ private void showKeyboard() {
+ InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
+ imm.toggleSoftInput(InputMethodManager.SHOW_IMPLICIT, 0);
+ }
}
diff --git a/src/main/java/org/kde/kdeconnect/Plugins/MousePadPlugin/MousePadPlugin.java b/src/main/java/org/kde/kdeconnect/Plugins/MousePadPlugin/MousePadPlugin.java
index 756e5e09..21c548a2 100644
--- a/src/main/java/org/kde/kdeconnect/Plugins/MousePadPlugin/MousePadPlugin.java
+++ b/src/main/java/org/kde/kdeconnect/Plugins/MousePadPlugin/MousePadPlugin.java
@@ -95,6 +95,13 @@ public class MousePadPlugin extends Plugin {
device.sendPackage(np);
}
+ public void sendKey(String key, int modifier) {
+ NetworkPackage np = new NetworkPackage(NetworkPackage.PACKAGE_TYPE_MOUSEPAD);
+ np.set("key", key);
+ np.set("modifier", modifier);
+ device.sendPackage(np);
+ }
+
@Override
public Button getInterfaceButton(final Activity activity) {
Button button = new Button(activity);
diff --git a/src/main/res/menu/menu_mousepad.xml b/src/main/res/menu/menu_mousepad.xml
index 294eba4b..ce472768 100644
--- a/src/main/res/menu/menu_mousepad.xml
+++ b/src/main/res/menu/menu_mousepad.xml
@@ -9,4 +9,8 @@ xmlns:kdeconnect="http://schemas.android.com/apk/res-auto/android">
-
\ No newline at end of file
+
+
+
diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml
index 4ca395b8..bec4a221 100644
--- a/src/main/res/values/strings.xml
+++ b/src/main/res/values/strings.xml
@@ -57,6 +57,7 @@
Reconnect
Send Right Click
Send Middle Click
+ Show Keyboard
Device not paired
Request pairing
Accept