回答:
私はこの問題の解決策を探していましたが、見つけました!
CTRL+ ALT+ HOMEリモートデスクトップの場合、キーボードフォーカスをホストに戻します。
その後、WIN+ CTRL+ LEFTまたはRIGHT仮想デスクトップを切り替えることができます。
理想的ではありませんが、これら2つのショートカットをオートホットキーで処理する可能性があります。
stackoverflow
場合、私はあなたに賞金を贈りますが、ここではできません。+1ありがとう!
最初に、Windowsキーをリモートコンピューターで動作させる(Alt-Tab
たとえば)ため、「Windowsキーの組み合わせを適用する」設定に「フルスクリーン使用時のみ」があります。
次に、フルスクリーンのときにリモートデスクトップから抜け出すことができるキーの組み合わせはほとんどないためCTRL-ALT-HOME
、接続バーを表示するだけでなく、ローカルコンピューターに制御を戻すリモートデスクトップを使用する必要があります。
そこで、このautohotkeyスクリプトを作成しました:switchVirtualDesktopWithRD.ahk。このスクリプトに完全に基づいているため、私は信用しません。必要に応じて変更しました。あなたにそれを調整することができます...
私の場合、仮想デスクトップは2つしかありません。1つ目はメインデスクトップで、2つ目はフルスクリーンリモートデスクトップクライアントを実行する場所です。
を押したときのスクリプトの動作CTRL-ALT-HOME
:
フルスクリーンのリモートデスクトップクライアントを実行している2番目の仮想デスクトップを使用している場合、最初に接続バーが表示されます。私は押しHOME
(と再びキーをCTRL
し、ALT
まだ押し)と私は戻って最初に、メインのデスクトップに思います。2番目のデスクトップで全画面セッションが実行されていない場合、最初の組み合わせはすぐに最初のデスクトップに切り替わります。
最初のデスクトップにいる場合、すぐに2番目のデスクトップに切り替わります。
つまり、CTRL-ALT-HOME
デスクトップを切り替えるために常に使用します。
CTRL-WIN-LEFT
てCTRL-ALT-HOME
トリガーできるかどうか疑問に思います。次に、CTRL-WIN-LEFT
デスクトップを切り替えるために2回押すだけです。
オフの構築electrotypeの答えを私が可能になりますAHKスクリプト持ってCtrl+ Win+ LeftとCtrl+ Win+ Rightすなわち-スイッチにホットキーがRDPセッション内の任意の他のキーを犠牲にすることなく、フルスクリーンのRDPセッション内から、ローカルコンピュータ上のデスクトップAlt+ Tabすべてのまだおよび類似RDPセッション内で通常どおり動作します。
通常のショートカットキーをリモートコンピューターで機能させるには、RDPセッションを開始するときに[Windowsキーの組み合わせを適用する]設定に[フルスクリーン使用時のみ]が必要です。
実際に、AHKフォーラムで見つけた別のスクリプトからスクリプトを作成しました。
それが何をする:
C:\users\<user>\documents\AutoHotkey.ahk
引数を指定せずにahkを起動すると実行されるように、私のものを貼り付けました。注: 2つ以上の仮想リモートデスクトップ(たとえば、1つのローカル仮想デスクトップ、それぞれにフルスクリーンRDPウィンドウを持つ2つの仮想デスクトップ)を使用すると、少しバグが発生しますが、もう作業する時間はありません。問題は、ある仮想リモートデスクトップから別のデスクトップに切り替えると、ホットキーのバインドを解除して再バインドする必要があり、これを検出するのに問題があることです(ただし、RDPタイトルバーには異なるウィンドウクラスがありますが、そうではありません) tは常にこれを拾います)。
Ahkスクリプト:
;setTimer, windowwatch, 500
#persistent
#usehook
SLEEP_VAL := 500
DEBUG := false
keys_bound := false
while true {
;Debug("Waiting")
sleep, SLEEP_VAL
keys_bound := WaitBind()
}
WaitBind() {
WinWaitActive, ahk_class TscShellContainerClass
Debug("bind")
hotkey LWin & Left, ctrl_win_left_key, on
hotkey LWin & Right, ctrl_win_right_key, on
return true
}
WaitUnbind() {
WinWaitNotActive, ahk_class TscShellContainerClass
Debug("unbind")
hotkey LWin & Left, ctrl_win_left_key, off
hotkey LWin & Right, ctrl_win_right_key, off
return false
}
Debug(msg) {
global DEBUG
if (DEBUG) {
tooltip %msg%
settimer, TooltipClear, 2000
}
}
return
z_key:
; simple script for testing - change the z to 'he'
send, he
Debug("done z")
return
j_key:
; testing if we can activate the RDP title bar
send {Ctrl down}{Alt down}{Home}{Alt up}{Ctrl up}
Debug("done j")
Return
ctrl_win_left_key:
; we are intercepting all Win+Left combinations so we have to do Win+Shift+Left and Win+Left manually to preserve them inside the RDP
GetKeyState, shiftState, Shift
GetKeyState, ctrlState, Ctrl
if (shiftState = "D") {
; by default in windows Ctrl+Shift+Win+Left will act like Shift+Win+Left - shift takes precedence
Debug("done shift win left")
send {Shift down}{LWin down}{Left}{LWin up}{Shift up}
} else if (ctrlState = "D") {
Debug("done ctrl win left")
; the magic happens here
send {Ctrl down}{Alt down}{Home}{Alt up}{Ctrl up}
keys_bound := WaitUnbind()
;Sleep, SLEEP_VAL ;give the OS time to focus on the title bar
send {Ctrl down}{LWin down}{Left}{LWin up}{Ctrl up}
} else {
Debug("done win left")
send {LWin down}{Left}{LWin up}
}
Return
ctrl_win_right_key:
; we are intercepting all Win+Right combinations so we have to do Win+Shift+Right and Win+Right manually to preserve them inside the RDP
GetKeyState, shiftState, Shift
GetKeyState, ctrlState, Ctrl
if (shiftState = "D") {
; by default in windows Ctrl+Shift+Win+Left will act like Shift+Win+Left - shift takes precedence
Debug("done shift win right")
send {Shift down}{LWin down}{Right}{LWin up}{Shift up}
} else if (ctrlState = "D") {
Debug("done ctrl win right")
; the magic happens here
send {Ctrl down}{Alt down}{Home}{Alt up}{Ctrl up}
keys_bound := WaitUnbind()
;Sleep, SLEEP_VAL ;give the OS time to focus on the title bar
send {Ctrl down}{LWin down}{Right}{LWin up}{Ctrl up}
} else {
Debug("done win right")
send {LWin down}{Right}{LWin up}
}
Return
TooltipClear:
; just a routine to turn off tooltip after x milliseconds
tooltip
settimer, TooltipClear, off
Return
windowwatch:
ifwinactive ahk_class TscShellContainerClass
{
Debug("bind")
hotkey LWin & Left, ctrl_win_left_key, on
hotkey LWin & Right, ctrl_win_right_key, on
}
else
{
Debug("unbind")
hotkey LWin & Left, ctrl_win_left_key, off
hotkey LWin & Right, ctrl_win_right_key, off
}
Return
Ctrl+Win
ローカルデスクトップからリモートに、またはその逆に移動するときに、時々キーを放して再度押す必要があります。それは働いていない場合ことを試してみてください、または送信の間の遅延を高めるために、スクリプトの先頭にSLEEP_VALを増やすCtrl+Alt+Home
とCtrl+Win+Left
タッチパッドを使用している場合は、4本指ジェスチャーを試すことができます。
Microsoftサポートから-Windows 10のタッチパッドジェスチャ
仮想デスクトップの切り替え:4本の指をタッチパッドに置き、左右にスワイプします。
Windows 10で2つの仮想デスクトップを使用しています。これらのデスクトップの1つで、フルスクリーンモードのリモートデスクトップを介してWin 7にアクセスしています。
この1つのジェスチャーで2つの仮想デスクトップを切り替えることができます。わたしにはできる。
実行時にホットキーをバインドし、バインドを解除しないようにスクリプトを変更して、ホットキーを押して放さなければならないという問題を回避しました。