web-dev-qa-db-ja.com

Ubuntuはキーボードショートカットの構成をどこに保存しますか?

「Ubuntu」には、どのキー/組み合わせ/ショートカットが何にバインドされているかの完全なリストを保存する場所がありますか?

nityのキーボードとマウスのショートカットは何ですか? ダッシュ、ランチャーなどへの「Unity」ショートカットをいくつかリストします。 使用中のCompizキーバインドをリストする方法は? compizバインディングですが、それ以上のものを探しています(UnityまたはCompizのみに制限されているキーバインディングのいくつかだけではありません)。

使用中のキーバインディング/キーの組み合わせ/キーボードショートカットのグローバルリストはありますか?Ubuntuのどこかに保存されていますか、それらをコンパイルして一覧表示する方法はありますか? Ubuntuとその中で実行されるもの(Unity、Compiz、プログラムへのショートカットなど)に適用されるもの。

確かに、Ubuntuは、キーボードで押されたキーの組み合わせが接続先に向けられるように、これをどこかに保存する必要がありますか? Ubuntuにそのような場所がない場合は、回答として投稿してください。そうすれば、将来のユーザーがその検索で知ることができます。

33
James

ウィンドウマネージャは、アプリケーションが実行する前にキーイベントを取得するため、それらのイベントを消費したい場合は取得し、アプリケーションはそれらを受信しません。ウィンドウマネージャがキーイベント自体に反応したくない場合は、それらをアプリケーションに渡します。

これは、次の方法で自分で確認できます。

  1. ターミナルを起動します。
  2. Xイベントビューアーであるxev | grep KeyPressを起動します。
  3. Altを押します。xevは、ターミナルウィンドウでキーイベントを取得したことを示します。
  4. Ctrlを押します。再びxevがイベントを取得したことに注意してください。ターミナルウィンドウが現在どのように表示されているかに注意してください。
  5. Left arrowを押して、別のワークスペースに移動します。 (私はあなたがウィンドウマネージャのショートカットキーとしてそれを持っていると仮定しています。)
  6. Right arrowを押して、実行中の場所xevに戻ります。左矢印キーと右矢印キーを使用してワークスペースを切り替えるためのキーイベントを受信しなかったことに注意してください。出力はステップ4と同じです。

したがって、ウィンドウマネージャは実際にはすべての主要なイベントを取得し、それらをキャプチャしたくない場合は、それらをアプリケーションに渡します。その後、アプリケーションは独自のウィジェットに対して同じことを行います(WebブラウザでEnterを1日中押すことができますが、アドレスバーまたはフィールドにカーソルを置くまで何もしません。テキストを入力できます)。

独自のショートカットを設定するのはアプリケーション次第であり、アプリケーションは互いに独立して構成されます。

KDE 3.xでは、正しく思い出せば、KDEコントロールセンターでデフォルトのショートカット(保存用のCtrl-sなど)を設定でき、Qtツールキットで作成されたすべてのアプリケーションに適用できますが、 KDE 4への切り替え以来、それがまだ可能かどうかを知る。

10
Lakritsbollar

Ubuntu 17.10以降

このパス上

dconf dump /org/gnome/desktop/wm/keybindings/
dconf dump /org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/  # Custom

dconf-editor(GUI)またはgsettings(CLI)も使用できます。

Ubuntu 12.10-17.04以降

~/.config/dconf/user(dconf-editor内:org.gnome.settings-daemon.plugins.media-keys.custom-keybindings(カスタムショートカット)

~/.config/compiz-1/compizconfig

Ubuntu 12.04まで

ショートカットは、使用している魔女のデスクトップ(gnome/unity、kde、xfce、lxdeなど)によって異なります。

ノームの場合、彼らは
~/.gconf/desktop/gnome/keybindings(カスタムショートカット)

そして下
~/.gconf/apps/metacity

20
desgua

いいえ、すべてのショートカットが保存される単一の場所はありません。アプリケーションは、選択した場所に構成を保存することを選択できます。

つまり、主に2つのレベルを見ています:アプリケーションレベル(FirefoxでのコピーのCtrl-Cなど)とウィンドウマネージャーレベル(デスクトップを表示するWin + Dなど)。 Compizはgconfを使用して構成を保存します

アプリケーションの場合、ツールキットで大まかに分けることができます。つまり、GTKアプリもgconfを使用します。

確かに、Ubuntuは、キーボードで押されたキーの組み合わせが接続先に向けられるように、これをどこかに保存する必要がありますか?

そうでもない。フォーカスされたアプリケーションはXキーボードイベントで最初にキックされますが、そうでない場合は、他のアプリケーション、つまりウィンドウマネージャーにバブルアップします。したがって、Alt + F4をキャプチャし、ウィンドウを閉じないゲームを作成できます(ジェームズタウン!)。中央のイベントルーターに送られ、データベースと照合されて、その宛先にルーティングされると考えていると思います。それは、飲み物のボトルを渡すようなものです。パス、必要に応じて一口飲み、残りを渡す、またはすべてを取得して欲張りになります。

Linux/FOSS環境(お気づきかもしれませんが)はかなり民主的であり、すべてのアプリケーションを単一の中央キーボード構成リポジトリに同意させるのはばかげています。一つには、ずっと前に書かれていて、それについて知らない、メンテナンスされていないアプリケーションがあります。

更新: 主題に関するXlibドキュメント :によると

ソースウィンドウから開始して、Xサーバーは、これらのイベントに関心があるとクライアントが指定した最初のウィンドウを見つけるまで、ウィンドウ階層を上に検索します。介入するウィンドウの1つで、イベントタイプの生成を禁止するためにdo-not-propagate-maskが設定されている場合、それらのタイプのイベントは抑制されます。

また、

KeyPress、KeyRelease、ButtonPress、およびButtonReleaseイベントを受け取るには、ウィンドウのイベントマスク属性でKeyPressMask、KeyReleaseMask、ButtonPressMask、およびButtonReleaseMaskビットを設定します。

そして 伝播を無効にする属性を設定できます

問題は、Xwhichキーをリッスンするように指示しないので、事前にを伝えることができないことです。 アプリケーションがリッスンするキー(何をするかは言うまでもありません)、または実際にリッスンしている場合に実際に伝播するかどうか。したがって、中央レジストリはXレベルでは不可能であるため、ツールキットレベルで行う必要がありますが、実際には不可能です。 :D

4
nfirvine

アプリケーションはショートカットを個別に保存するため、保存される中心的な場所はありません。

インタラクションキーボードのプロセス全体を理解していません-OS-カーネル-X11-ウィンドウマネージャー-デスクトップ環境-アプリケーション入力そのものであり、そうします。

1
user unknown