C
キーボード入力の処理
システムにキーボードが搭載されている場合、`PlatformInterface::handleKeyEvent()` 関数に `Qul::EventQueue` を指定することで、キーイベントをアプリケーションに送信できます。Qt Quick のUltraliteエンジンは、キーイベントを解釈することなく、さらなる処理のためにアプリケーションにキーイベントを転送します。アプリケーション内の任意の視覚的なQMLアイテムはキーイベントを受け取ることができます。詳細については、Keys QML Type を参照してください。
以下に、キー選択イベントを送信する例を示します:
struct KeyboardEvent { uint64_t timestamp; Qul::PlatformInterface::KeyEventType type; int key; unsigned int nativeScanCode; unsigned int modifiers; uint32_t ucs4; bool autorepeat; }; class PlatformKeyboardEventQueue : public Qul::EventQueue<KeyboardEvent> { void onEvent(const KeyboardEvent &event) QUL_DECL_OVERRIDE { // Use the information stored in the custom struct shown above // to transfer the information into the Qul engine Qul::PlatformInterface::handleKeyEvent(event.timestamp, event.type, event.key, event.nativeScanCode, event.modifiers, NULL, event.autorepeat, event.ucs4); } }; static PlatformKeyboardEventQueue keyboardEventQueue; void keyboardISR() { // Here would be platform specific code to fetch data from the keyboard. static KeyboardEvent event; event.timestamp = Qul::Platform::getPlatformInstance()->currentTimestamp(); event.type = Qul::PlatformInterface::KeyPressEvent; event.key = Qul::PlatformInterface::Key_A; event.nativeScanCode = 0; event.modifiers = Qul::PlatformInterface::NoKeyboardModifier; event.ucs4 = 0x61; event.autorepeat = false; keyboardEventQueue.postEventFromInterrupt(event); }
注: Qt Quick Ultraliteは、キーイベントの種類、キーコード、およびネイティブのスキャンコードのみをアプリケーションに転送します。この例に示されている追加の引数は転送されません。
特定のQtライセンスの下で利用可能です。
詳細はこちら。