問題タブ [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 に答える
608 参照

qt - Qt vs XCB: Qt は低レベルのタスクを実行するのにどれくらい強力ですか?

独自の認証メカニズムを使用してロックを解除する Linux OS を搭載したコンピューターの画面をロックするプログラムを作成しようとしています。Qtだけでできますか(ロック画面、ロック画面に切り替える機能...)、またはXCBまたは関連する何かを学ぶ必要がありますか?

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

gtk - X11 と XCB はどこで学べますか?

X11 レンダー ウィンドウを必要とし、上部にスタックされ、キーボードとマウス (スクリーン ロッカーのように) を取得するソフトウェアを作成したいのですが、見つけたのは、例がほとんどない浅いドキュメントだけでした。どうすればいいですか?

0 投票する
0 に答える
973 参照

c++ - グローバルな alt+space ホットキー グラブ - 奇妙なキーボード フォーカス動作

次のように、を使用してAlt+Spaceグローバルホットキーを取得しxcb_grab_keyています。

次に、Qt の QAbstractNativeEventFilter サブクラスでそれを処理し、キーが一致する場合に Qt シグナルを送信しますAlt+Space

VLCからのコピペGetModifierですが、Altキーは正しくマッチしているのでこの部分は関係ないと思います)

私が抱えている問題はshow()、ホットキーが押されたときにメインウィンドウを表示した後、ほとんどの場合、キーボードが適切にフォーカスされていないことです。入力できますが、カーソルが表示されず、入力の境界線が強調表示されず、Ctrl+Qdesn を終了するためのショートカットが機能しません。ウィンドウを移動するか、スペースを押すことで回避できます-その後、フォーカスが復元されます-カーソル+境界線が再び表示され、Ctrl+Q機能します。この動作の原因は何ですか?

Qt 5.0.0 と xcb 1.8.1 を使用しています。完全なアプリケーションは、コンパイル用に github からダウンロードできます。

1は、問題が再現できない場合があることを意味します。ウィンドウの非表示/表示を繰り返してもフォーカスが正しく設定されますが、非表示/表示の連続で複数回発生する場合もあります。全体的に頻繁に発生します。

(編集:(非常に醜い...)回避策を実装したため、githubプロジェクトの問題を再現するには、次のコードを削除する必要があります)

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

haskell - XHBを使用した偽のキー押下

このサンプルコードを参照として、XHBとXTestを使用してキーの押下をシミュレートしようとしています。残念ながら、私が何をしても、結果のプログラムは効果がありません。例外も警告もありません。

何か案は?

Ubuntu12.04でGHC7.4.1とともにXHB0.5.2012.11.23を使用しています。

これが私がこれまでに得たものです:

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

c - XCB での XEventsQueued(display, QueuedAfterReading) の必要性

CYBOI の一部のコードを Xlib から XCB に移行しています。

CYBOI は、serial_port、ターミナル、ソケット、x_window_system などのさまざまな通信チャネルにいくつかのスレッドを使用します。ただし、これらのスレッドはシグナル/イベント/データの検出にのみ使用されます。アドレス空間のマルチスレッド競合を避けるために、実際の送受信はメインスレッドで行われます。

x_window_system チャネルについては、以前にスレッドでイベントを検出しました。

イベントの検出時に、「割り込みフラグ」が設定されました。その後、メインスレッドは以下を使用して実際のイベントを読み取っていました。

使用可能なイベントがなくなると、メイン スレッドはイベントの受信を停止し、x_window_system チャネル スレッドは XEventsQueued を再びリッスンし始めました。

現在、コードを XC Binding (XCB) に移行しています。イベントの読み取りに適したブロッキング関数「xcb_wait_for_event」があります。私が見逃しているのは、保留中のイベントがある場合、実際にキューからイベントを返したり削除したりせずに、「先を覗く」機能です。

私は数時間ウェブを読んでいましたが、そのような機能を見つけることができません. 「xcb_poll_for_event」は役に立ちません。イベント検出は独自のスレッドで実行されるため、ブロッキングは問題ありません。3 番目の入力関数としての「xcb_request_check」は、私が望むものではないようです。

誰か助けてくれませんか?

ありがとう、クリスチャン

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

x11 - XInitThreads によってロックが非再帰的にアクティブ化されるのはなぜですか?

次のコール フローを検討してください。

関数 A はXCheckIfEventを呼び出し、述語パラメーターで関数 B へのポインターを渡します。関数 B はXGetWindowPropertyを呼び出します。

XLib がXInitThreads関数で初期化されている場合、上記の呼び出しフローはXGetWindowPropertyへの呼び出しでハングします。XInitThreadsが呼び出されたときにアクティブ化されるロックは再帰的ではないように思えます。本当なら、なぜですか?再帰的にする方法はありますか?それとも、XLib 関数に渡されたコールバック内から XLib 関数を呼び出すことは正式に禁止されていますか?

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

xorg - xcb: アプリケーションを起動してウィンドウに表示する方法

xcb ライブラリを使用して基本的なウィンドウ マネージャーを実装しようとしています。

X サーバーに接続していくつかのイベントを取得できましたが、アプリケーションを起動して現在の X セッション内に表示する方法がわかりません。

xcb チュートリアルに従おうとしています: http://xcb.freedesktop.org/tutorial/

基本的に、セッションが開始されたら、「windowmanager」を使用して、アプリケーションを起動したい場合は、それをフォークしてアプリケーションを起動するだけでよいと思いました (そしておそらく間違っています)。たとえば、次のようになります。

しかし、うまくいかなかったようです。

上に貼り付けたチュートリアルのコードを変更しようとしているだけなので、表示するコードはあまりありません(無限ループを追加し、他にいくつかのものを追加しました)。

では、xterm、pcmanfm などの x アプリケーションを起動して、現在の x セッションで表示するにはどうすればよいでしょうか?

また、新しいウィンドウ内にアプリケーションを描画するにはどうすればよいですか?

最後の質問: X チュートリアルの hello world ウィンドウの例をコピーして貼り付けようとしましたが、ウィンドウが読み込まれないようです。コードはこちら: http://www.x.org/releases/X11R7.7/doc/libxcb/tutorial/index.html#helloworld