我有两台主机(Windows-7)并排运行。我使用无边界鼠标使用单个鼠标/键盘(使用协同作用我有同样的问题,所以这里的所有内容也适用)。
在每个主机中,我都运行一些提供一些键盘快捷键的 AHK 脚本。因此,如果我的设置如下:
- 主机A-AHK脚本A-键盘A
- 主机 B - AHK 脚本 B - 键盘 A (通过无边框鼠标/协同作用)
输入时:
- 主机 A:我的热键(例如 CapsLock-S 总是由 AHK-script-A 处理(显然)
- 主机 B:这就是问题所在……在此主机中输入时,我的 CapsLock-S 关键字有时由 AHK-script-B 处理(所需输出)有时由 AHK-script-A 提供。
在主机 B 中输入时,仅应触发 AHK B 快捷键,而不是 AHK A 快捷键(在主机 A 中)。
这可能取决于某些程序(ahk 等)在每个主机上运行的顺序,或者最后获得焦点的应用程序等,但我不知道。
有人知道该如何实现吗?或者如何找到为什么有时有效有时无效的确定性?
答案1
我不太熟悉您提到的程序,但我想我了解设置。我可能会通过查看击键是否到达 AHK 脚本以及哪个脚本正在拦截它们来调试它。
我可能会从两个简单的工具开始......
1) 在热键定义前面放置一个波浪符号,使按键可以通过。用一个简单的工具提示替换代码以显示正在执行的内容。查看哪些按键可以通过,哪些按键被阻止。查看在两个系统上添加波浪符号是否允许按键通过原本不执行的系统。
2) 打开 A 和 B 上的脚本窗口,然后转到每个窗口的击键日志。发送似乎不起作用的键,看看它们是否进入了感兴趣的脚本(假设它们没有)。
您提到的不确定性很有趣。在远程桌面和 VNC 中,系统 A 可能会拦截您试图进入系统 B 的按键,或者可能反过来,这种行为是相当确定的,或者可以在软件设置中更改哪些键可以传递到远程主机,哪些键不能。
如果您遇到某些无法正常工作但至少是确定性的事物,那么还有其他方法可以解决这个问题,如果您的两个盒子可以通信,或者检查鼠标的位置,例如,如果它在边缘或超出一个显示器的边缘,则不要执行。
答案2
也许可以使用 #If 命令并为每个主机设置特定的热键,假设可以通过使用操作系统的内置变量来区分每个主机https://www.autohotkey.com/docs/Variables.htm#os(A_ComputerName 或 A_UserName)
更多关于#If的信息请点击这里https://autohotkey.com/docs/commands/_If.htm