1616
1717package io .github .sds100 .keymapper .inputmethod .latin ;
1818
19- import android .Manifest .permission ;
2019import android .app .AlertDialog ;
2120import android .content .BroadcastReceiver ;
2221import android .content .Context ;
@@ -138,10 +137,8 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
138137 private static final String KEY_MAPPER_INPUT_METHOD_ACTION_INPUT_UP = "io.github.sds100.keymapper.inputmethod.ACTION_INPUT_UP" ;
139138 private static final String KEY_MAPPER_INPUT_METHOD_ACTION_TEXT = "io.github.sds100.keymapper.inputmethod.ACTION_INPUT_TEXT" ;
140139
141- private static final String KEY_MAPPER_INPUT_METHOD_EXTRA_KEYCODE = "io.github.sds100.keymapper.inputmethod.EXTRA_KEYCODE" ;
142- private static final String KEY_MAPPER_INPUT_METHOD_EXTRA_METASTATE = "io.github.sds100.keymapper.inputmethod.EXTRA_METASTATE" ;
143140 private static final String KEY_MAPPER_INPUT_METHOD_EXTRA_TEXT = "io.github.sds100.keymapper.inputmethod.EXTRA_TEXT" ;
144- private static final String KEY_MAPPER_INPUT_METHOD_EXTRA_DEVICE_ID = "io.github.sds100.keymapper.inputmethod.EXTRA_DEVICE_ID " ;
141+ private static final String KEY_MAPPER_INPUT_METHOD_EXTRA_KEY_EVENT = "io.github.sds100.keymapper.inputmethod.EXTRA_KEY_EVENT " ;
145142
146143 /**
147144 * The name of the scheme used by the Package Manager to warn of a new package installation,
@@ -216,22 +213,15 @@ public void onReceive(Context context, Intent intent) {
216213
217214 switch (action ) {
218215 case LatinIME .KEY_MAPPER_INPUT_METHOD_ACTION_INPUT_DOWN_UP : {
219- int keyCode = getKeyCode (intent );
220- if (keyCode == -1 ) return ;
221-
222- long eventTime = SystemClock .uptimeMillis ();
223-
224- KeyEvent downEvent = new KeyEvent (eventTime , eventTime ,
225- KeyEvent .ACTION_DOWN , keyCode , 0 , getMetaState (intent ), getDeviceId (intent ), 0 );
216+ KeyEvent downEvent = intent .getParcelableExtra (KEY_MAPPER_INPUT_METHOD_EXTRA_KEY_EVENT );
226217
227218 InputConnection ic = mIms .getCurrentInputConnection ();
228219
229220 if (ic != null ) {
230221 ic .sendKeyEvent (downEvent );
231222 }
232223
233- KeyEvent upEvent = new KeyEvent (eventTime , SystemClock .uptimeMillis (),
234- KeyEvent .ACTION_UP , keyCode , 0 , getMetaState (intent ), getDeviceId (intent ), 0 );
224+ KeyEvent upEvent = KeyEvent .changeAction (downEvent , KeyEvent .ACTION_UP );
235225
236226 if (ic != null ) {
237227 ic .sendKeyEvent (upEvent );
@@ -241,13 +231,9 @@ public void onReceive(Context context, Intent intent) {
241231 }
242232
243233 case LatinIME .KEY_MAPPER_INPUT_METHOD_ACTION_INPUT_DOWN : {
244- int keyCode = getKeyCode (intent );
245- if (keyCode == -1 ) return ;
246-
247- long eventTime = SystemClock .uptimeMillis ();
234+ KeyEvent downEvent = intent .getParcelableExtra (KEY_MAPPER_INPUT_METHOD_EXTRA_KEY_EVENT );
248235
249- KeyEvent downEvent = new KeyEvent (eventTime , eventTime ,
250- KeyEvent .ACTION_DOWN , keyCode , 0 , getMetaState (intent ), getDeviceId (intent ), 0 );
236+ downEvent = KeyEvent .changeAction (downEvent , KeyEvent .ACTION_DOWN );
251237
252238 InputConnection ic = mIms .getCurrentInputConnection ();
253239
@@ -259,13 +245,9 @@ public void onReceive(Context context, Intent intent) {
259245 }
260246
261247 case LatinIME .KEY_MAPPER_INPUT_METHOD_ACTION_INPUT_UP : {
262- int keyCode = getKeyCode (intent );
263- if (keyCode == -1 ) return ;
248+ KeyEvent upEvent = intent .getParcelableExtra (KEY_MAPPER_INPUT_METHOD_EXTRA_KEY_EVENT );
264249
265- long eventTime = SystemClock .uptimeMillis ();
266-
267- KeyEvent upEvent = new KeyEvent (eventTime , SystemClock .uptimeMillis (),
268- KeyEvent .ACTION_UP , keyCode , 0 , getMetaState (intent ), getDeviceId (intent ), 0 );
250+ upEvent = KeyEvent .changeAction (upEvent , KeyEvent .ACTION_UP );
269251
270252 InputConnection ic = mIms .getCurrentInputConnection ();
271253
@@ -291,18 +273,6 @@ public void onReceive(Context context, Intent intent) {
291273 }
292274 }
293275 }
294-
295- private int getKeyCode (Intent intent ) {
296- return intent .getIntExtra (KEY_MAPPER_INPUT_METHOD_EXTRA_KEYCODE , -1 );
297- }
298-
299- private int getMetaState (Intent intent ) {
300- return intent .getIntExtra (KEY_MAPPER_INPUT_METHOD_EXTRA_METASTATE , 0 );
301- }
302-
303- private int getDeviceId (Intent intent ){
304- return intent .getIntExtra (KEY_MAPPER_INPUT_METHOD_EXTRA_DEVICE_ID , 0 );
305- }
306276 }
307277
308278 final KeyMapperBroadcastReceiver mKeyMapperBroadcastReceiver = new KeyMapperBroadcastReceiver (this );
@@ -1479,8 +1449,7 @@ public void onMovePointer(int steps) {
14791449 if (steps < 0 ) {
14801450 int availableCharacters = mInputLogic .mConnection .getTextBeforeCursor (64 , 0 ).length ();
14811451 steps = availableCharacters < -steps ? -availableCharacters : steps ;
1482- }
1483- else if (steps > 0 ) {
1452+ } else if (steps > 0 ) {
14841453 int availableCharacters = mInputLogic .mConnection .getTextAfterCursor (64 , 0 ).length ();
14851454 steps = Math .min (availableCharacters , steps );
14861455 } else
0 commit comments