問題タブ [xlib]
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.
linux - XLib を使用して、マップされているが表示されないウィンドウを作成する方法は?
ゲーム プロジェクトで Linux ベースの I/O 検証ツールに取り組んでいます。これは C++ で書かれており、ゲームと同じ I/O モジュールを使用しているため、OIS 1.2 に基づいています。したがって、必要なのはユーザーの入力をコンソールに表示することだけですが、それでも OIS 用のウィンドウを作成する必要があります。
ここで私の質問があります: まだ表示されておらず、キーボード イベントを処理している間に、マップされたウィンドウを作成するにはどうすればよいですか?
キーボードイベントを処理しなくなるため、ウィンドウのマップを解除することはできません。ウィンドウの表示/非表示の機能も見つかりません。
私の小さなツールは、キーボードイベントを処理するためにフォーカスする必要がある愚かなトップレベルの空のウィンドウがあることを除いて、今では正常に動作します...
どんなアドバイスでも大歓迎です。
ありがとう!!!
opengl - X11 で "switch from" および "switch to" イベントを処理する方法は?
フルスクリーンの OpenGL アプリケーションを作成しています。ユーザーが切り替えたときに元のデスクトップ モードを復元し、ユーザーが切り替えたときにモードを復元したいと考えています。これは「FocusIn」および「FocusOut」イベントのように見えますが、これには適していません。ユーザーが Alt+Tab を押してウィンドウ セレクターが表示されるとすぐに、ウィンドウは "FocusOut" を取得します (この時点でウィンドウがフォーカスを失っているため)。
x11 - 子ウィンドウのイベントを取得する Xlib
xlib を使用して単純なウィンドウ マネージャーを作成しています。このコードは、フレーム ウィンドウと呼ばれるクライアント ウィンドウよりもわずかに大きいウィンドウに、クライアント ウィンドウを再親化します。クリック トゥ フォーカス ポリシーを実装しようとしています。フレームウィンドウでマウスボタンが押されたときにボタンプレスイベントを取得し、ボタンプレスでフレームウィンドウを上げることができます。ただし、クライアント ウィンドウでマウス ボタンを押してもイベントが発生しません。クライアント ウィンドウでマウス ボタンが押された場合でも、このイベントをトラップし、フレーム ウィンドウを上げるという考え方です。
linux - Xlib : CAPS LOCK ステータスを取得する方法
オンまたはオフの場合、Xlib を使用して CAPS Lock キー情報を取得する方法は?
keyboard-events - XlibでCAPSLOCKプレスをシミュレートする
Xlibを使用してCAPSLOCKのオンとオフの押下をシミュレートするにはどうすればよいですか?
linux - OpenGL 3+ 用の UI ユーティリティ ライブラリ、または Xlib は問題ありませんか?
私はいくつかの OpenGL 3.2 を書きたいと思っています。おそらく Linux で OpenGL 4 も書きたいのですが、libsdl 1.2 (最新の安定版リリース) が 2.x しかサポートしていないことがわかりました。LibSDL 1.3 (開発中) はそれをサポートするはずですが、主流のディストリビューションに入るまでにはしばらく時間がかかります。現在、選択したコンテキストで OpenGL ウィンドウを作成し、できれば入力を支援するライブラリはありますか?
そうでない場合、Xlib での苦痛を軽減する小さなライブラリはありますか? 私の OpenGL 用の Windows パスは、独自のメッセージ ポンプなどを使用して従来の WinAPI で記述されていますが、X11 はそれよりも悪いのではないでしょうか。Web をすばやく検索すると、Xlib より上位のライブラリを使用する必要があることがわかります。私は XLib をラップするだけで満足するので、XLib が本当にひどい場合は、glX を使用して自分で OpenGL コンテキストを実行できます。
x11 - X11のポータブルキーコード?
マッピングに依存しないキーコードを取得したいのですが、ドキュメントによると、XKeyEvent構造の「キーコード」はハードウェアとドライバーに依存しており、信頼できません。WindowsでVK_*のようなポータブルキーコードを取得するにはどうすればよいですか?
crash - XtDestroyWidget の呼び出し中に Motivation アプリケーションがクラッシュする
32 ビットの Motif Gui アプリケーションがあります。現在、アプリケーションを Solaris から Linux に移植しましたが、システムが頻繁にクラッシュしています。私たちの分析では、アプリケーションでフォームを閉じているときにこの問題が発生したことがわかりました。フォームが閉じられたら、フォームを削除し、関数 XtDestroyWidget() を呼び出してウィジェットを削除します。アプリケーションの浄化を実行したところ、フォームを閉じたときに Stack Array Bounds Read (SBR) が発生していることがわかりました。
XtDestroyWidget() を使用してオブジェクトを破棄するサンプル モチーフ プログラムをインターネットからダウンロードしました。このサンプルプログラムに対してもpurifyを実行したところ、同じSBRが見つかりました。
SBR: スタック配列の境界の読み取り (54 回): * これは、XtDispatchEvent [libXt.so.4] RemoveAllPMgr [libXm.so.3] XtCallCallbackList [libXt.so.4] XtPhase2Destroy [libXt.so.4] で発生しています。 _XtDoPhase2Destroy [libXt.so.4] XtDispatchEvent [libXt.so.4] XtAppMainLoop [libXt.so.4] main [popup.cc:49] _start [crt1.o] * 0xffbfe4f0 から 4 バイトを読み取ります。* フレーム ポインター 0xffbfe4d0 * アドレス 0xffbfe4f0 は、関数 XtCallCallbackList のスタック ポインターの 32 バイト上にあります。
この SBR は XtAppMainLoop() で発生しています。これらの事実から、この SBR は一般的なものであり、アプリケーションではなくモチーフに関連していると思います。
次の質問にいくつかの考えを追加していただけますか。1) XtDestroyWidget() を使用すると SBR が発生する理由。このSBRは厳しいものですか?
2) XtDestroyWidget を削除し、XtUnrealizeWidget() を使用しました。これは、SBR を削除するのに役立つため、クラッシュは発生しません。また、通常のフォームはすべて正常に削除されます。しかし、このアプローチで私が直面している問題は、この方法では POP_UP フォームが削除されないことです。HIDE オプション以外の POP_UP フォームを削除するための回避策を提案してください。
誰かがこの問題に答えたり、考えを追加したりできれば、私にとって非常に役に立ちます。
前もって感謝します、サヌーシュ・チャコ
-----サンプル プログラムの追加.. こんにちは、SBR を入手した場所からサンプル プログラムを見つけてください。
X11/StringDefs.h を含める Xm/Xm.h を含める Xm/PushB.h を含める
ウィジェットのトップレベル。
void close_window(Widget w, XtPointer client_data, XtPointer event_data) { Widget popup = (ウィジェット)client_data; XtDestroyWidget(ポップアップ); }
void pop(Widget w, XtPointer client_data, XtPointer event_data) { Widget a, button, popup;
}
main(int argc, char *argv[]) { ウィジェット ボタン; XtAppContext アプリ。XmString ラベル。
}
x11 - ウィンドウが1つのワークスペースから別のワークスペースに移動されたときのXlibイベント
Xlibを使用してあるワークスペースから別のワークスペースに移動するアプリケーションのイベント名を知りたい。
mouseevent - XI2 拡張で生のマウスイベントを取得するには?
deviceid=XIAllDevices
およびでルート ウィンドウに XISelectEvents を使用しmask=XI_RawMotion
ていますが、イベントが発生しません。どうしたの?