@@ -117,172 +117,54 @@ public void keyDown(@NonNull FlutterKeyEvent keyEvent) {
117117 }
118118
119119 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 ());
129129 }
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 ());
135144 }
136145
137146 /** A key event as defined by Flutter. */
138147 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 ;
222148 /**
223149 * The Android key event that this Flutter key event was created from.
224150 *
225151 * <p>This event is used to identify pending events when results are received from the
226152 * framework.
227153 */
228154 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 ;
229159
230160 public FlutterKeyEvent (@ NonNull KeyEvent androidKeyEvent ) {
231161 this (androidKeyEvent , null );
232162 }
233163
234164 public FlutterKeyEvent (
235165 @ 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 ;
267167 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- }
286168 }
287169 }
288170}
0 commit comments