私はX.orgプログラミングの新人です。私はXキーボードレイアウトスイッチに反応する小さなアプリケーションを構築したいと思います。私は検索しましたが、kbのレイアウトが切り替わったときに、どのイベントが発生するのか見つけられませんでした。私に正しいイベントを教えてください。ありがとうX.orgでkbのレイアウトを切り替えるときに起きるイベント
答えて
X Keyboard Extensionの一部であるXkbStateNotify
イベントタイプがあります。 (XKBlib.h
で宣言された)XkbQueryExtension()
関数を呼び出し、xkbEventType
を取得するには
void x11Events(XEvent* evt)
{
if(evt->type == xkbEventType) {
XkbEvent* xkbevt = (XkbEvent*)evt;
if (xkbevt->any.xkb_type == XkbStateNotify) {
int lang = xkbevt->state.group;
// Some code using lang here.
}
}
}
:あなたはこのようにそれからレイアウト言語をつかむことができます。
ただし、レイアウト変更だけでなく、XkbStateNotify
が発生します。これは、上記で参照仕様からのものである:
報告の変更がキーボード 状態のいずれかの態様の変更が挙げられる:修飾子が設定または解除され、現在のグループ 変更、またはポインタボタンが押され又はリリースされました。このため
は、あなたがどこかlang
の値を保存する必要がありますし、その後、新しいイベントが到着したときに、以前に保存したものにlang
の新しい値を比較します。
NB。 XkbMapNotifyEvent
イベントもあり、レイアウトの切り替え自体ではなく、キーボードマッピングの変更について通知します。あなたもそれを調べたいかもしれません。
プログラマーへの注意点は、GTKなどの最新のツールキットを使用してこのイベントを取得する方法のヒントかもしれません。 – user4815162342
GTKでは、[gdk events](https://developer.gnome.org/pygtk/stable/class-html)があるので、通常は生の 'XEvents'を処理する必要はありません(少なくともレイアウト変更を検出するためではありません) gdkevent.html)を使用して、現在のキーボードグループを取得することもできます。さらに、GTKアプリケーションのXイベント処理に干渉すると、独自のイベント処理ループが存在するため、ツールキットを弱体化させる可能性があります。私はQtについてはあまりよくありませんが、私は事がそこに似ていると思っています。 – shakurov
これはまさに私が参照していたものです。上のコードと同じコードですが、GDKイベントを使用しています。少なくともキーボードインジケータアプレットはスイッチを検出する必要があるため、GTK/GDKからXkbレイアウトスイッチイベントにアクセスできる必要があります。 – user4815162342
- 1. レイアウトを切り替えるときのスワイプのアニメーション
- 2. ユーザーがブラウザのタブを切り替えるときのイベント
- 3. Androidのレイアウトを条件付きで切り替える
- 4. xmlレイアウトを切り替えるには?
- 5. アンドロイドのレイアウトを切り替える
- 6. レイアウトをポートレートモードからランドスケープモードに切り替えるときの問題
- 7. CKEditorフック/イベントがソースビューとの切り替え時に起動する
- 8. UITextFieldでUITextBorderStyleNoneとRoundRectを切り替えるときのEXC_BAD_ACCESS
- 9. フルスクリーンに切り替えるときにデータをキャッシュする
- 10. 別のビューに切り替えるときにキーボードを隠す
- 11. scalespagetofit = NOのときにUIWebViewテキストを切り替えるには?
- 12. タブ&フェードアウトスキンのスキニングを次のタブに切り替えるとき
- 13. サーバーを切り替えるときにMysqlがクロールする
- 14. Linuxでスイングフレームを切り替えるときの白い画面
- 15. UITabBarControllerでビューを切り替えるときのエラー
- 16. MVVMアプリケーションでViewModelsを切り替えるときのBindingExpressionパスエラー
- 17. Dozeモードに切り替えることができません
- 18. トランクに切り替えることができません
- 19. デバッグモードに切り替えるときにVisual Studioがフリーズする
- 20. Android:ボタンをクリックしたときにカメラを切り替える
- 21. 他のビューの切り替えに切り替えるapp xcode
- 22. アンドロイドアクティビティで2つのレイアウトを切り替える
- 23. ブランチを切り替えることができません
- 24. アニメーションが完了したときにビューを切り替える
- 25. System.DirectoryServicesからDirectoryServices.Protocolsに切り替えるときの認証タイプ
- 26. Androidで1つのレイアウトから別のレイアウトに切り替える方法
- 27. ラジオボタン間で切り替えることができません
- 28. タイマーでイベントを生成中に値を切り替える
- 29. Excel VBAでワークブックを開き、別のワークシートに切り替える
- 30. iPhone - VIEWを切り替えるときの空白の画面
キーボードのレイアウトを切り替えるために何をしていますか? GUIクライアントを使用していますか?または設定ファイルを編集しますか?変更はいつまで有効ですか?これらは、私たちがどこを見なければならないかを知るのに役立つかもしれない手がかりです。 –
言語レイアウト(en、cs、...)を切り替える。 kbスイッチをリッスンするGUIクライアント(たとえば、キーボードレイアウトを切り替えるために両方のシフトを設定しています。このスイッチは、捕捉して何らかの操作を行うイベントを生成します)。 C/C++コードでなければなりません。 – Pat
いくつかのコードを投稿できますか? – JoRouss