Skip to content

Commit c5940ea

Browse files
committed
fix: use release key mapper relay service when sending key events TO key mapper
1 parent 96661db commit c5940ea

2 files changed

Lines changed: 14 additions & 7 deletions

File tree

app/src/main/java/io/github/sds100/keymapper/inputmethod/latin/KeyEventRelayServiceWrapper.kt

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,13 @@ import android.content.Intent
66
import android.content.ServiceConnection
77
import android.os.DeadObjectException
88
import android.os.IBinder
9+
import android.os.RemoteException
910
import android.util.Log
1011
import android.view.KeyEvent
1112
import io.github.sds100.keymapper.api.IKeyEventRelayService
1213
import io.github.sds100.keymapper.api.IKeyEventRelayServiceCallback
1314

15+
1416
/**
1517
* This handles connecting to the relay service and exposes an interface
1618
* so other parts of the app can get a reference to the service even when it isn't
@@ -38,16 +40,17 @@ class KeyEventRelayServiceWrapperImpl(
3840
) {
3941
synchronized(keyEventRelayServiceLock) {
4042
keyEventRelayService = IKeyEventRelayService.Stub.asInterface(service)
41-
Log.e(LatinIME.TAG, "Register callback")
43+
Log.d(LatinIME.TAG, "Register with key event relay service")
4244
keyEventRelayService?.registerCallback(callback)
4345
}
4446
}
4547

4648
override fun onServiceDisconnected(name: ComponentName?) {
4749
synchronized(keyEventRelayServiceLock) {
4850
try {
51+
Log.d(LatinIME.TAG, "Unregister with key event relay service")
4952
keyEventRelayService?.unregisterCallback()
50-
} catch (_: DeadObjectException) {
53+
} catch (_: RemoteException) {
5154
} finally {
5255
keyEventRelayService = null
5356
}
@@ -79,7 +82,11 @@ class KeyEventRelayServiceWrapperImpl(
7982
val component =
8083
ComponentName(servicePackageName, "io.github.sds100.keymapper.api.KeyEventRelayService")
8184
relayServiceIntent.setComponent(component)
82-
ctx.bindService(relayServiceIntent, serviceConnection, 0)
85+
val isSuccess = ctx.bindService(relayServiceIntent, serviceConnection, 0)
86+
87+
if (!isSuccess) {
88+
ctx.unbindService(serviceConnection)
89+
}
8390
} catch (e: SecurityException) {
8491
Log.e(LatinIME.TAG, e.toString())
8592
}

app/src/main/java/io/github/sds100/keymapper/inputmethod/latin/LatinIME.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1936,8 +1936,8 @@ private HardwareEventDecoder getHardwareKeyEventDecoder(final int deviceId) {
19361936
@Override
19371937
public boolean onKeyDown(final int keyCode, final KeyEvent keyEvent) {
19381938

1939-
if (mKeyEventRelayServiceWrapperDebug != null) {
1940-
if (mKeyEventRelayServiceWrapperDebug.sendKeyEvent(keyEvent, "io.github.sds100.keymapper")) {
1939+
if (mKeyEventRelayServiceWrapperRelease != null) {
1940+
if (mKeyEventRelayServiceWrapperRelease.sendKeyEvent(keyEvent, "io.github.sds100.keymapper")) {
19411941
return true;
19421942
}
19431943
}
@@ -1968,8 +1968,8 @@ public boolean onKeyDown(final int keyCode, final KeyEvent keyEvent) {
19681968

19691969
@Override
19701970
public boolean onKeyUp(final int keyCode, final KeyEvent keyEvent) {
1971-
if (mKeyEventRelayServiceWrapperDebug != null) {
1972-
if (mKeyEventRelayServiceWrapperDebug.sendKeyEvent(keyEvent, "io.github.sds100.keymapper")) {
1971+
if (mKeyEventRelayServiceWrapperRelease != null) {
1972+
if (mKeyEventRelayServiceWrapperRelease.sendKeyEvent(keyEvent, "io.github.sds100.keymapper")) {
19731973
return true;
19741974
}
19751975
}

0 commit comments

Comments
 (0)