web-dev-qa-db-ja.com

アプリケーション固有のショートカットのシステム全体のショートカットをオーバーライドする

アプリケーションで定義されたキーボードショートカットを、同じキーバインドのシステム全体のショートカットよりも優先させる方法はありますか?

望ましい動作:いくつかのキーが押された場合、フォーカスされたアプリケーションが何かをしたいかどうかを確認します(そうであれば、それを行います) )。そうでない場合は、一部のキーのシステムショートカットがあるかどうかを確認してから実行します。

現在何が起こっているか:私が持っている F11 キーボードショートカットの設定メニューで「フルスクリーンの切り替え」として設定します。 Chrome F11 Chrome自体のフルスクリーンモードを有効にする必要がありますが、代わりにシステム全体のショートカットによってオーバーライドされます。つまり、Chromeはフルスクリーンになり(GNOMEパネルとタイトルバーは消えます)、Chromeのフルスクリーンモード(タブ、アドレスバーブックマークバーも消えます)。

(補足:Firefoxには同じ問題はありませんが、FFフルスクリーンはウィンドウマネージャーのフルスクリーンと同じである/トリガーされるためです)

11
fred

免責事項:これはあなたが望むものではありませんが、投稿しないようにこれに多くの時間を費やしており、他の誰かがそれを使用できる可能性があります。

Ctrl + F11はどこでもフルスクリーンですが、ChromiumはChromiumのフルスクリーンです!

  1. 思考の列車

xdotoolを使用し、コマンドをchromeウィンドウに直接送信すると、ウィンドウマネージャーをだませる可能性があると思いました。

それから私はグーグルクロームのキーボードショートカットを変更できるかもしれないと思ったが、それはハードコードされているようだ-もう一つの行き止まり。

  1. これで私たちを去る

xdotoolをインストールして、キーボードの押下をシミュレートします

Sudo apt-get install xdotool

ubuntuキーボードショートカットを任意の何かに再構成します。これは入力することはありませんが、スクリプトでは使用できます。

設定->デバイス->キーボード

下にスクロールして編集フルスクリーンモードCtrl + Alt + 1に切り替えてから+を押し、カスタムキーボードショートカットを追加します

keyboard shortcuts - fullscreen

+を押して、カスタムキーボードショートカットを追加します

dialog of custom shortcut

スクリプトを編集する

nano /home/user/fullscreen.sh


#!/bin/bash
export DISPLAY=:0
windowname=$(xdotool getactivewindow getwindowname | cut -d "-" -f 2)
if [[ $windowname != *"Chromium"* ]]
then
xdotool keydown Ctrl keydown Alt key 1 keyup Alt keyup Ctrl
else
xdotool search --onlyvisible --class "Chromium" windowfocus 
sleep 0.2
xdotool key F11
fi

実行可能にする

chmod +x /home/user/fullscreen.sh

  1. 結論

ウィンドウマネージャーをだましてキーストロークを密輸することは不可能に思えますが、回避策は確かにあります。この場合、Googleはフルスクリーンキーボードショートカットを構成できないようにしているため、マークに達しません。

これで、Ctrl + F11を使用して、ウィンドウマネージャーがクロムを除くフルスクリーン動作を制御します。

2
Robert Riedl