2011-08-12 23 views
6

Tôi không thể tìm cách gửi kết hợp khóa meta (ví dụ: CTRL) và mã phím (ví dụ: RETURN) bằng Android (Tôi đang sử dụng Cấp API 11 = phiên bản 3.0).Gửi tổ hợp phím (khóa meta và mã khóa) qua API Android

Các tài liệu của lớp KeyEvent đề cập hằng như META_CTRL_ON và cũng hỗ trợ hằng keycode (ví dụ KEYCODE_CTRL_LEFT) cho các phím meta.

Tôi đang sử dụng Javascript Key Event Tester để kiểm tra kết quả được tạo bởi Trình soạn thảo phương thức nhập (IME) của tôi. BTW, mục tiêu của tôi là phát triển một bàn phím phần mềm.

Nếu tôi hiểu được những tài liệu chính xác, nó sẽ là đủ để thực thi mã sau đây để gửi CTRL key chỉ:

this.sendDownUpKeyEvents(KeyEvent.KEYCODE_CTRL_RIGHT); 

Nhưng khi điều này được thực hiện chống lại Javascript chính tổ chức sự kiện Tester (xem ở trên), chẳng có gì xảy ra.

Vì vậy, tôi cần tìm hiểu cách gửi các khóa meta chỉ để gửi các khóa meta kết hợp với một khóa khác. Tôi cũng đã thử các sau đây để gửi SHIFT + ENTER (một ví dụ cụ thể):

private void _sendShiftEnter() { 
    this.sendDownKeyEvent(KeyEvent.KEYCODE_SHIFT_LEFT); 
    final long eventTime = SystemClock.uptimeMillis(); 
    this.getCurrentInputConnection().sendKeyEvent(
     new KeyEvent(
      eventTime, // The time (in uptimeMillis()) at which this key code originally went down. 
      eventTime, // The time (in uptimeMillis()) at which this event happened. 
      KeyEvent.ACTION_DOWN, // Action code: either ACTION_DOWN, ACTION_UP, or ACTION_MULTIPLE. 
      KeyEvent.KEYCODE_ENTER, // The key code. 
      0, // A repeat count for down events (> 0 if this is after the initial down) or event count for multiple events. 
      KeyEvent.META_SHIFT_ON, // Flags indicating which meta keys are currently pressed. 
      0, // The device ID that generated the key event. 
      0, // Raw device scan code of the event. 
      KeyEvent.FLAG_SOFT_KEYBOARD | KeyEvent.FLAG_KEEP_TOUCH_MODE, // The flags for this key event. 
      InputDevice.SOURCE_KEYBOARD // The input source such as SOURCE_KEYBOARD. 
     ) 
    ); 
} 

Vấn đề tương tự như trên xảy ra ở đây, quá: Chìa khóa công nhận duy nhất là ENTER.

Tôi đã tìm kiếm Internet trong vài giờ để xem ví dụ, cách sử dụng lớp KeyEvent với các khóa meta và/hoặc tổ hợp phím, nhưng không thể tìm thấy ít nhất một ví dụ về mã. Vì vậy, trong kết luận: Có ai có kinh nghiệm với lớp học KeyEvent và có thể chứng minh cho tôi cách gửi một tổ hợp phím đơn giản (ví dụ: SHIFT + ENTER) qua API Android không? Không.

Cảm ơn bạn trước!

Trả lời

0

tôi chỉ cần đặt cả hai bổ chìa khóa meta cùng một lúc, và nó làm việc ...

ví dụ KeyEvent.META_SHIFT_LEFT_ON | KeyEvent.META_SHIFT_ON.