@@ -117,172 +117,54 @@ public void keyDown(@NonNull FlutterKeyEvent keyEvent) {
117
117
}
118
118
119
119
private void encodeKeyEvent (
120
- @ NonNull FlutterKeyEvent event , @ NonNull Map <String , Object > message ) {
121
- message .put ("flags" , event .flags );
122
- message .put ("plainCodePoint" , event .plainCodePoint );
123
- message .put ("codePoint" , event .codePoint );
124
- message .put ("keyCode" , event .keyCode );
125
- message .put ("scanCode" , event .scanCode );
126
- message .put ("metaState" , event .metaState );
127
- if (event .complexCharacter != null ) {
128
- message .put ("character" , event .complexCharacter .toString ());
120
+ @ NonNull FlutterKeyEvent keyEvent , @ NonNull Map <String , Object > message ) {
121
+ message .put ("flags" , keyEvent . event .getFlags () );
122
+ message .put ("plainCodePoint" , keyEvent . event .getUnicodeChar ( 0x0 ) );
123
+ message .put ("codePoint" , keyEvent . event .getUnicodeChar () );
124
+ message .put ("keyCode" , keyEvent . event .getKeyCode () );
125
+ message .put ("scanCode" , keyEvent . event .getScanCode () );
126
+ message .put ("metaState" , keyEvent . event .getMetaState () );
127
+ if (keyEvent .complexCharacter != null ) {
128
+ message .put ("character" , keyEvent .complexCharacter .toString ());
129
129
}
130
- message .put ("source" , event .source );
131
- message .put ("vendorId" , event .vendorId );
132
- message .put ("productId" , event .productId );
133
- message .put ("deviceId" , event .deviceId );
134
- message .put ("repeatCount" , event .repeatCount );
130
+ message .put ("source" , keyEvent .event .getSource ());
131
+ InputDevice device = InputDevice .getDevice (keyEvent .event .getDeviceId ());
132
+ int vendorId = 0 ;
133
+ int productId = 0 ;
134
+ if (device != null ) {
135
+ if (Build .VERSION .SDK_INT >= Build .VERSION_CODES .KITKAT ) {
136
+ vendorId = device .getVendorId ();
137
+ productId = device .getProductId ();
138
+ }
139
+ }
140
+ message .put ("vendorId" , vendorId );
141
+ message .put ("productId" , productId );
142
+ message .put ("deviceId" , keyEvent .event .getDeviceId ());
143
+ message .put ("repeatCount" , keyEvent .event .getRepeatCount ());
135
144
}
136
145
137
146
/** A key event as defined by Flutter. */
138
147
public static class FlutterKeyEvent {
139
- /**
140
- * The id for the device this event came from.
141
- *
142
- * @see <a
143
- * href="https://developer.android.com/reference/android/view/KeyEvent?hl=en#getDeviceId()">KeyEvent.getDeviceId()</a>
144
- */
145
- public final int deviceId ;
146
- /**
147
- * The flags for this key event.
148
- *
149
- * @see <a
150
- * href="https://developer.android.com/reference/android/view/KeyEvent?hl=en#getFlags()">KeyEvent.getFlags()</a>
151
- */
152
- public final int flags ;
153
- /**
154
- * The code point for the Unicode character produced by this event if no meta keys were pressed
155
- * (by passing 0 to {@code KeyEvent.getUnicodeChar(int)}).
156
- *
157
- * @see <a
158
- * href="https://developer.android.com/reference/android/view/KeyEvent?hl=en#getUnicodeChar(int)">KeyEvent.getUnicodeChar(int)</a>
159
- */
160
- public final int plainCodePoint ;
161
- /**
162
- * The code point for the Unicode character produced by this event, taking into account the meta
163
- * keys currently pressed.
164
- *
165
- * @see <a
166
- * href="https://developer.android.com/reference/android/view/KeyEvent?hl=en#getUnicodeChar()">KeyEvent.getUnicodeChar()</a>
167
- */
168
- public final int codePoint ;
169
- /**
170
- * The Android key code for this event.
171
- *
172
- * @see <a
173
- * href="https://developer.android.com/reference/android/view/KeyEvent?hl=en#getKeyCode()">KeyEvent.getKeyCode()</a>
174
- */
175
- public final int keyCode ;
176
- /**
177
- * The character produced by this event, including any combining characters pressed before it.
178
- */
179
- @ Nullable public final Character complexCharacter ;
180
- /**
181
- * The Android scan code for the key pressed.
182
- *
183
- * @see <a
184
- * href="https://developer.android.com/reference/android/view/KeyEvent?hl=en#getScanCode()">KeyEvent.getScanCode()</a>
185
- */
186
- public final int scanCode ;
187
- /**
188
- * The meta key state for the Android key event.
189
- *
190
- * @see <a
191
- * href="https://developer.android.com/reference/android/view/KeyEvent?hl=en#getMetaState()">KeyEvent.getMetaState()</a>
192
- */
193
- public final int metaState ;
194
- /**
195
- * The source of the key event.
196
- *
197
- * @see <a
198
- * href="https://developer.android.com/reference/android/view/KeyEvent?hl=en#getSource()">KeyEvent.getSource()</a>
199
- */
200
- public final int source ;
201
- /**
202
- * The vendorId of the device that produced this key event.
203
- *
204
- * @see <a
205
- * href="https://developer.android.com/reference/android/view/InputDevice?hl=en#getVendorId()">InputDevice.getVendorId()</a>
206
- */
207
- public final int vendorId ;
208
- /**
209
- * The productId of the device that produced this key event.
210
- *
211
- * @see <a
212
- * href="https://developer.android.com/reference/android/view/InputDevice?hl=en#getProductId()">InputDevice.getProductId()</a>
213
- */
214
- public final int productId ;
215
- /**
216
- * The repeat count for this event.
217
- *
218
- * @see <a
219
- * href="https://developer.android.com/reference/android/view/KeyEvent?hl=en#getRepeatCount()">KeyEvent.getRepeatCount()</a>
220
- */
221
- public final int repeatCount ;
222
148
/**
223
149
* The Android key event that this Flutter key event was created from.
224
150
*
225
151
* <p>This event is used to identify pending events when results are received from the
226
152
* framework.
227
153
*/
228
154
public final KeyEvent event ;
155
+ /**
156
+ * The character produced by this event, including any combining characters pressed before it.
157
+ */
158
+ @ Nullable public final Character complexCharacter ;
229
159
230
160
public FlutterKeyEvent (@ NonNull KeyEvent androidKeyEvent ) {
231
161
this (androidKeyEvent , null );
232
162
}
233
163
234
164
public FlutterKeyEvent (
235
165
@ NonNull KeyEvent androidKeyEvent , @ Nullable Character complexCharacter ) {
236
- this (
237
- androidKeyEvent .getDeviceId (),
238
- androidKeyEvent .getFlags (),
239
- androidKeyEvent .getUnicodeChar (0x0 ),
240
- androidKeyEvent .getUnicodeChar (),
241
- androidKeyEvent .getKeyCode (),
242
- complexCharacter ,
243
- androidKeyEvent .getScanCode (),
244
- androidKeyEvent .getMetaState (),
245
- androidKeyEvent .getSource (),
246
- androidKeyEvent .getRepeatCount (),
247
- androidKeyEvent );
248
- }
249
-
250
- public FlutterKeyEvent (
251
- int deviceId ,
252
- int flags ,
253
- int plainCodePoint ,
254
- int codePoint ,
255
- int keyCode ,
256
- @ Nullable Character complexCharacter ,
257
- int scanCode ,
258
- int metaState ,
259
- int source ,
260
- int repeatCount ,
261
- KeyEvent event ) {
262
- this .deviceId = deviceId ;
263
- this .flags = flags ;
264
- this .plainCodePoint = plainCodePoint ;
265
- this .codePoint = codePoint ;
266
- this .keyCode = keyCode ;
166
+ this .event = androidKeyEvent ;
267
167
this .complexCharacter = complexCharacter ;
268
- this .scanCode = scanCode ;
269
- this .metaState = metaState ;
270
- this .source = source ;
271
- this .repeatCount = repeatCount ;
272
- this .event = event ;
273
- InputDevice device = InputDevice .getDevice (deviceId );
274
- if (device != null ) {
275
- if (Build .VERSION .SDK_INT >= Build .VERSION_CODES .KITKAT ) {
276
- this .vendorId = device .getVendorId ();
277
- this .productId = device .getProductId ();
278
- } else {
279
- this .vendorId = 0 ;
280
- this .productId = 0 ;
281
- }
282
- } else {
283
- this .vendorId = 0 ;
284
- this .productId = 0 ;
285
- }
286
168
}
287
169
}
288
170
}
0 commit comments