私は、ルートウィンドウでタッチイベント(TOUCH_BEGIN、TOUCH_UPDATE、TOUCH_END、TOUCH_OWNERSHIP)を待ち受けようとしています。
タッチイベントはXCBに直接統合されていないため、入力拡張(libxcb-xinput)を使用する必要があります。libxcb-xinputを使ってイベントを登録するには
入力拡張機能からのイベントのイベントリスナーを既に設定していましたが、聞きたいイベントを登録する方法がわかりません。
私はxcb_input_xi_select_eventsを()イベントマスクを含むenumがxcb_input_ XI _event_mask_tのタイプがあり、それらをキャストする明白な方法はありませんが、しかし、その機能は、タイプxcb_input_event_mask_tのパラメータを取ります使用してみました。私はxcb_input_xi_select_events()が間違った機能だと思っていますが、代わりに何の機能を使うべきか分かりません。
私の非作業コードは、現在のようになります(ヌル)、(ヌル:
xcb_input_event_mask_t mask[] = {
XCB_INPUT_XI_EVENT_MASK_TOUCH_BEGIN
| XCB_INPUT_XI_EVENT_MASK_TOUCH_END
| XCB_INPUT_XI_EVENT_MASK_TOUCH_UPDATE
| XCB_INPUT_XI_EVENT_MASK_TOUCH_OWNERSHIP
};
xcb_input_xi_select_events(dpy, root, 4, mask);
コアは、コンパイル時に警告「unsigned型に暗黙的に切り捨て大きな整数」とばかり」失敗したリクエストを投げます):0x000000D5 "エラーが発生しました。
(私はCと特にXCBにはかなり新しいですので、任意の明白な誤差はご容赦ください)
リンクした例のコメント(「XInputを使用して非侵襲的に入力イベントを取得する」)から、私は目標がイベントを取得する間に、他のウィンドウを受信することを防ぐことなくタッチイベントを登録すると思います他のウィンドウはイベントを拒否したときにしか表示されません(申し訳ありませんが、私の質問ではそれを明確にしていません)。 今まで私は別の解決策を見つけました。 xcb-xinputのコードは読めません。私が知っている限り、何とかプロトコル仕様から自動生成されているからです)。 – freundTech