答案1
热键 Ctrl++Alt和Left Arrow++ 被远程桌面客户端占用Ctrl。Alt它们Right Arrow 唯一的作用是将您切换回主机。
看起来这是某个从未完全编程和完成的预期功能,但没有办法关闭它。微软甚至没有在其官方文档中列出这些热键 远程桌面服务快捷键。
解决方案 1:使用 Microsoft Store 版本
可以在 Microsoft Store 中找到另一个版本的 RDP,网址为 微软远程桌面。
此版本没有此半实现功能,因此可以毫无问题地通过这些热键。这已在 Windows 10 版本 1903 上得到验证。
解决方案 2:翻译客户端和服务器上的热键
该解决方案将使用自动热键 安装在客户端和服务器上,以便:
- 在客户端上,将上述热键转换为其他不会被 RDP 拦截的热键
- 在服务器上,将这些键转换回上述热键。
例如,您可以在客户端上使用以下 AutoHotkey 脚本“rdp hotkeys_slave.ahk”将
Ctrl+ Alt+转换arrow为
Alt+ Win+ arrow:
#SingleInstance Force
#IfWinActive, ahk_exe mstsc.exe
;Send Alt+Win+Left when user types Ctrl+Alt+Left
^!Left::
send !#{Left}
return
;Send Alt+Win+Right when user types Ctrl+Alt+Right
^!Right::
send !#{Right}
return
该脚本仅限于使用 mstsc.exe 进程 #如果胜利[不]有效 / #如果胜利[不]存在。
不幸的是,Autohotkey 脚本只有在重新启动后才能在全屏 RDP 中工作激活全屏后(看这里:如何修复 AHK 以将按键发送到 RDP 全屏?)所以我们需要第二个脚本“rdp hotkeys_master.ahk”来实现这一点:
#Persistent
SetTimer, ReloadOnRDPMaximized, 500
return
ReloadOnRDPMaximized:
If WinActive("ahk_class TscShellContainerClass")
{
WinGet, maxOrMin, MinMax, ahk_class TscShellContainerClass
if (maxOrMin = 0) {
WinGetPos, PosX, PosY, WinWidth, WinHeight, ahk_class TscShellContainerClass
if (PosY = 0) {
; it is fully maximized therefore reload "script.ahk"
Run "autohotkey" "rdp hotkeys_slave.ahk"
; wait until window gets deactivated so you don't reload it again.
WinWaitNotActive, ahk_class TscShellContainerClass
}
}
}
您可以在服务器上使用以下 AutoHotkey 脚本将
Alt+ Win+转换arrow为
Ctrl+ Alt+ arrow:
;Send Ctrl+Alt+Left when user types Ctrl+Win+Left
!#Left::
send !^{Left}
return
;Send Ctrl+Alt+Right when user types Ctrl+Win+Right
!#Right::
send !^{Right}
return
要使脚本在启动时运行,请将它们全部放在相应设备的自动启动文件夹中(键入 Win+R 和 shell:startup)
答案2
感谢海报和迄今为止的答案;这些帮助我解决了类似的问题:我的台式电脑的文本编辑器上有使用的键盘快捷键Ctrl+Alt+...,我希望能够在远程访问机器时使用它们。
使用此 AHK 脚本,我输入Win而不是Alt,并且能够完成下面注释的命令。现在,无论我使用哪台 PC 访问远程桌面 PC(即在家或旅行时),我都可以使用我的快捷方式(并且 Win 非常接近 Alt)。这是我的 AHK 脚本:
;Send Ctrl+Alt+Left keys when user types Ctrl+Win+Left
^#Left::
send !^{Left}
return
;Send Ctrl+Alt+Right keys when user types Ctrl+Win+Right
^#Right::
send !^{Right}
return
;Send Ctrl+Alt+Up keys when user types Ctrl+Win+Up
^#Up::
send !^{Up}
return
;Send Ctrl+Alt+Down keys when user types Ctrl+Win+Down
^#Down::
send !^{Down}
return
;Send Ctrl+Alt+Shift+Left keys when user types Ctrl+Win+Shift+Left
^#+Left::
send !^+{Left}
return
;Send Ctrl+Alt+Shift+Right keys when user types Ctrl+Win+Shift+Right
^#+Right::
send !^+{Right}
return
;Send Ctrl+Alt+Shift+Up keys when user types Ctrl+Win+Shift+Up
^#+Up::
send !^+{Up}
return
;Send Ctrl+Alt+Shift+Down keys when user types Ctrl+Win+Shift+Down
^#+Down::
send !^+{Down}
return
注意,我在远程桌面连接中使用“在远程计算机上应用 Windows 组合键...”,因此我运行此脚本在远程计算机上。
虽然可能有更有效的 AHK 方法来做到这一点,但上面的方法对我来说是有效的。希望这也能帮助别人。
答案3
我想分享一个更短的Autohotkey
脚本来修复全部 Alt
RDP 拦截的组合。
该脚本不会重新映射依赖于#
密钥的常见组合,因此几乎不会产生冲突,因为与之组合的密钥AppsKey
非常罕见。
客户
*^LAlt::^AppsKey
return
服务器
*^AppsKey::^LAlt
return