問題タブ [xcb]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
707 参照

x11 - XCB イベント ループがイベントを取得しない

私は Firefox でアドオンを作成しているので、特権 WebWorker である ChromeWorker があります。これは、メインスレッド以外の単なるスレッドです。

ここにはコードはありませんが、これです(js-ctypes [アドオンの言語]ではないように見えるように変更されています)

起動時にこのコードを実行します。これconnはグローバル変数です。

次に、これを 200ms 間隔で実行します。

ただしevt、常にnullイベントが発生することはありません。私の目標は、システム上のすべてのイベントを取得することです。

非常に単純なことが機能しない原因を知っている人はいますか?

私が試してみました

しかし、これはそれを修正しませんでした:(

それを機能させる唯一の方法は実行することですがxcb_create_window xcb_map_window 、この作成されたウィンドウで発生するイベントのみを取得します。

0 投票する
1 に答える
2153 参照

c++ - Qt5 で X11 イベントを処理する

アプリケーションを Qt4 から Qt5 に移植しています。

私の知る限り、Qt5 は Xlib イベントの処理をサポートしておらず、XCB イベントを使用しています (イベント ハンドラーはxcb_generic_event_tオブジェクトを取得します)。ただしspnav、私が使用しているライブラリは X11 イベントのみをサポートしています (XEventオブジェクトを解析して必要な情報を取得します)。Qt5でX11イベントを処理したり、変換xcb_generic_event_tしたりすることは可能XEventですか?

Qt4 コードでは次のようになります。

0 投票する
1 に答える
511 参照

x11 - XkbSetDetectableAutoRepeat に相当する XCB

別のスレッドからコードを実行していたため、Xlib 関数を呼び出すことができず、XCB しか呼び出せませんでした。私は何に相当するのだろうかと思っていましたXkbSetDetectableAutoRepeatか?

ありがとう

0 投票する
1 に答える
1939 参照

xcb - XCB はすべてのモニターを取得し、それらの x、y 座標を取得します

これまでのところ、私はすべてのモニターを持っています。モニターはスクリーンです。だから私がしたことは:

これにより、幅と高さが得られます。ただし、x と y を取得することが重要です。xとyを取得する途中ですかxcb_get_window_attributes_cookie_tscreen->root

私はここを読んでいました - http://www.linuxhowtos.org/manpages/3/xcb_get_window_attributes_unchecked.htm - しかし、与えられたx/y座標はありませんでした。

0 投票する
1 に答える
200 参照

xcb - すべての画面をカバーするウィンドウ - ストラットを含む - フルスクリーンの失敗

2 つのモニターを作成しました。2 つのウィンドウを作成しました。それらを別のモニターに移動して、フルスクリーンにしました。ウィンドウにフォーカスがある間、すべての予約済みの「ストラット」(呼び出されていると思います) がカバーされます。ただし、ウィンドウにフォーカスがない場合、背面からの「支柱」がウィンドウの上に表示されます。

とにかく、ウィンドウを一時的に一番上にする方法はありますか (すべての支柱の上であっても)。ウィンドウが常に一番上になるように設定しています。

0 投票する
1 に答える
44 参照

xcb - reply_t と request_t - それらを交換可能に渡しますか?

XCB に問題があります。*_reply_t*_request_tタイプの違いがわかりません。

*_reply_tの代わりに が渡されているように見えますが*_response_t、構造は大きく異なります。

例えば:

だから今replyはのタイプです*_reply_t。しかし今、私は最初の引数がここのドキュメントに従ってxcb_randr_get_screen_resources_current_outputs型であることを期待するものを使用する必要があります:xcb_randr_get_screen_resources_current_request_t

http://www.linuxhowtos.org/manpages/3/xcb_randr_get_screen_resources_current_outputs.htm

ただし、最初の呼び出しからの応答のタイプはxcb_randr_get_screen_resources_current_reply_t( *_reply_t) です。これをキャストせずに出力呼び出しに渡すにはどうすればよいですか? ドキュメントごとに構造が完全に異なります。

そして、の構造体*_request_tはドキュメントにはありません。ここのソースコードから取得しました:

https://xcb.freedesktop.org/manual/randr_8h_source.html#l00896

私は ctypes を行うので、メソッドの署名のために事前に渡すタイプを宣言する必要があります。replyそのため、まったく異なる構造 ( ) の何かが、 の構造を持つ 2 番目の呼び出しにどのように入るのかについて、私は非常に混乱していrequestます。

0 投票する
2 に答える
931 参照

c - Wayland、Xlib、XCB、MIR ウィンドウ システムのプリプロセッサ シンボル

Vulkan のドキュメントには、WSI プラットフォームに関する次の記述があります。

Vulkan API は、どのタイプのプラットフォーム オブジェクトも定義しません。プラットフォーム固有の WSI 拡張機能が定義されています。これには、WSI を使用するためのプラットフォーム固有の機能が含まれています。これらの拡張機能の使用は、プリプロセッサ シンボルによって保護されています。

• VK_USE_PLATFORM_ANDROID_KHR - Android

• VK_USE_PLATFORM_MIR_KHR - ミール

• VK_USE_PLATFORM_WAYLAND_KHR - ウェイランド

• VK_USE_PLATFORM_WIN32_KHR - Microsoft Windows

• VK_USE_PLATFORM_XCB_KHR - XCB ライブラリを使用した X Window System

• VK_USE_PLATFORM_XLIB_KHR - Xlib ライブラリを使用した X ウィンドウ システム

プラットフォームまたはウィンドウ システムを選択し、コンパイル前に正しいシンボルを定義する必要があることを理解しています。Android または Windows に対してコンパイルする場合、次のように記述できます。

これまでのところ、OK。Android と Windows には独自のウィンドウ システムがあり、これで十分です。しかし、Linuxにはいくつかのウィンドウシステムがあります-Xlib、XCB、Wayland、およびMIRです。

どのウィンドウ システムがその環境で使用されているかを知るのに役立つ可能性がある C/C++プリプロセッサ シンボルがあるかどうかを知りたいので、混乱することなく各 API を処理できる汎用コードを記述できます。

0 投票する
1 に答える
1126 参照

qt - クラスまたは名前を使用して xcb からウィンドウ ID を取得する

QWindow::fromWinIDQt の関数を使用して、ウィジェットを外部ウィンドウに描画したいと考えています (これでうまくいくことを願っています)。

残念ながら、特定の名前/クラスを持つウィンドウに描画する必要があります (xwininfo と xprop を使用して表示できます)。これを行うための唯一のコードは xwininfo と xprop のソース内にありますが、単純なことを行うには不要なコードの集まりのように思えます: 特定のプロパティが文字列に等しいウィンドウを見つけ、そのウィンドウ ID を返します。 Qtが使用するため。残念ながら、私は XCB に非常に精通しておらず、開始方法がわかりません。

200行のコードなしでこれを行うにはどうすればよいですか?