我在校园内使用计算机来访问我办公室中的Windows 7桌面计算机,而我在更换CapsLock
和Ctrl
密钥时遇到问题。
问题是,我的办公室机器上只有管理员权限,我通过添加适当的内容来交换CapsLock
和Ctrl
来编辑注册表(regedit
) "扫描码地图"。
但是,这对任何远程访问会话都没有帮助,因为本地计算机上的CapsLock
保持不变。
我使用AHK,但在两台机器上运行的脚本中设置CapsLock::LControl
并不能解决问题。通过AHK指定密钥交换后,按CapsLock
确实会向RDP会话发送Ctrl
- 键击。然而,在本地机器上,灯光为" CapsLock"也应该打开(或关闭)!这表明,虽然AHK正在将CapsLock
的按下转换为Ctrl
,但本地计算机将其视为CapsLock
的原始按压。此外,按Ctrl
几次将使AHK感到困惑并最终终止该过程。
我还尝试在本地计算机上运行的脚本中设置以下内容,但它没有帮助。
SetTitleMatchMode 2
#IfWinActive, Remote Desktop
SetCapsLockState, off
#IfWinActive
; or
#IfWinActive, ahk_class TscShellContainerClass
SetCapsLockState, off
#IfWinActive
如果我没有在本地计算机上拥有管理员权限,我应该怎么做才能始终指定远程访问的计算机上CapsLock
和Ctrl
之间的密钥交换?在我自己的笔记本电脑上,我还通过注册表交换了CapsLock
和Ctrl
,在远程访问会话中交换这些密钥没有问题。
一切顺利,
-Linfeng
答案 0 :(得分:2)
我设法与uncap
一起使用AutoHotKey
来解决此问题。
uncap的GitHub:https://github.com/susam/uncap
AutoHotKey
脚本uncap
path\to\uncap.exe 0x14:0x14 0x14:0xa2
这将覆盖默认行为,因此不会使Esc变得无用
有关详细信息,请参见here
实际上,可以将以下三个文件放入拇指驱动器中并随身携带。 (鉴于当前的StayHome订单,UCA尚未经过测试。某些学校计算机可能会禁止*.exe
文件完全运行吗?)
uncap.exe
,是从here下载的。或者,请参考Github repo for uncap最新的安装程序。Swap_Capslock_and_Ctrl.bat
。然后,输入以下内容:.\uncap.exe 0x14:0xa2 0xa2:0x14
StopScript.bat
,内容:.\uncap.exe -k
答案 1 :(得分:1)
在如何交换 CapsLock 和 Ctrl 挣扎数小时后,我发现可能没有一个理想的解决方案。 (非常适合使用管理员权限创建scancode
映射。)
我最后买了一个带DIP开关的机械键盘,这解决了我所有的困难,通过AHK脚本轻轻地重新映射键。 DIP开关排序"重新连接"键盘 CapsLock 表现为 Ctrl 。
答案 2 :(得分:0)
此AutoHotkey脚本使用变通方法提供了非常好的键盘功能,使 CapsLock 的行为类似于 Ctrl ,没有按钮闪烁。基本上 Ctrl + C / Ctrl + V 等成为一个两阶段的过程,按住大写字母,然后按下字母,但它可以变得相当流畅。
;===============
;workaround script, pretty good functionality, no capslock blinking
CapsLock::
vIsCtrlOn := 1
Return
$a::
$b::
$c::
$d::
$e::
$f::
$g::
$h::
$i::
$j::
$k::
$l::
$m::
$n::
$o::
$p::
$q::
$r::
$s::
$t::
$u::
$v::
$w::
$x::
$y::
$z::
vLetter := SubStr(A_ThisHotkey, 1-1)
if vIsCtrlOn
SendInput ^%vLetter%
else
SendInput %vLetter%
vIsCtrlOn := 0
Return
;===============
我提供了一些可能有助于OP和其他AutoHotkey用户的测试说明:
;===============
;script with just these 3 lines, no capslock blinking
CapsLock::
SendInput {Enter}
Return
;===============
;===============
;script with just these 7 lines, capslock blinking
CapsLock::
SendInput {Enter}
Return
CapsLock & c::
SendInput ^c
Return
;===============
[编辑:]
这个额外的AutoHotkey脚本将显示大写开启/关闭状态:
vFormat := "zh0 b1 c0 fs18 x1000 y100 w150"
Loop
{
if GetKeyState("CapsLock", "T")
vText := "capslock on"
else
vText := "capslock off"
if !(vText = vText2)
Progress, %vFormat%, %vText%
vText2 := vText
Sleep 100
}
Return