web-dev-qa-db-ja.com

Ctrl + Alt + F1(およびその他の特別なキーストローク)をXウィンドウに送信するにはどうすればよいですか?

押すと Ctrl+Alt+F{1..12}、他の仮想端末に切り替えます。

xte "keydown Control_L" "keydown Alt_L" "key F1" "keyup Alt_L" "keyup Control_L"は、フォーカスされたウィンドウにそのキーを送信する代わりに、vtに切り替えることにつながります。

このユースケースには、ホストシステムではなくクリネット/ゲストシステムによって処理されるVNCまたは仮想化クライアントへの特別なキーストロークの送信が含まれます(ただし、これらに限定されません)。時々(VirtualBoxのように)アプリケーションはいくつかの特別な代替キーストロークをその特別なものに明示的にマップします( Ctrl+Alt+Del または Ctrl+Alt+Backspace VirtualBoxで)、しかし私はクリーンで普遍的なソリューションが欲しいです。

4
Vi.

電話しましょう Ctrl+Alt+Fx (どこ Fx 機能ボタンの1つです: F1、 F2、 F3...)srvrキー。
srvrキーをその場で無効/有効にする方法があります。無効にするということは、X11がそれらを飲み込むのではなく、ウィンドウマネージャー(kdeのkwin)に渡すことを意味します。

srvrキーをダイヤルするには、setxkbmap -option srvrkeys:noneを実行します
srvrキーを有効にするには、setxkbmap -optionを実行します
srvr_ctrl(no_srvr_keys)フラグが有効になっているかどうかを確認するには、setxkbmap -print | grep xkb_symbolsを実行します。

Kdeでは、ウィンドウアクションを実行する可能性があります(たとえば、ウィンドウがフォーカスを取得または失ったときにコマンドを実行します)。そのため、特別なアプリケーションウィンドウがフォーカスされたときにsrvrキーを自動的に無効にし、フォーカスが失われたときに自動的に有効に戻すことができます。それは普遍的な解決策です。 TeamViewer、VirtualBox、Chromeリモートデスクトップ、ipkvmビューア、krdcなどのアプリケーションに役立ちます。
興味があれば、これが私がこのことに使用する私のスクリプトです: https://github.com/Ashark/aten-ip8000/blob/master/srvrkeys

3
Ashark

VirtualBoxの場合は、キーの組み合わせ[〜#〜] rel [〜#〜] + F1を試してください。ここで、[〜#〜] rel [〜#〜]は、VirtualBoxウィンドウでマウスグラブを解放するために使用されるキーです。通常は右CtrlキーまたはAltキーです。

1
maxelost

仮想端末はVNCが接続されているデスクトップから分離されているため、Ctrl + Alt + F [1..12]を送信することはできません。

0
TheDoctor