使用Autohotkey重新映射CapsLock后,Emacs键盘快捷键序列

时间:2013-12-04 09:49:27

标签: windows emacs keyboard-shortcuts autohotkey

我已经使用autohotkey简单地将CapsLock重新映射到Control:

Capslock::Control   ; make Caps Lock the control button

这样可以正常工作,但在Emacs中,如果我需要执行像Ctrl-x Ctrl-f这样的键序列,而连续持有CapsLock键,注册的是Ctrl-x f。为了获得正确的序列,我现在必须在像Ctrl-x <release> Ctrl-f这样的击键之间释放CapsLock,这非常不方便。

有没有办法进行重新绑定,以便按住CapsLock完全按住控制按钮?

我还尝试了以下代码段但没有成功:

#IfWinActive ahk_class Emacs
{
CapsLock::
Sendinput {Ctrl Down}
KeyWait, CapsLock
Sendinput {Ctrl Up}
return
}

使用上面的SendSendplay代替Sendinput也无法解决我的问题。

我的系统:

Windows 7 32位 AHK v1.1.13.01 Emacs 24.3

谢谢!

3 个答案:

答案 0 :(得分:2)

我不确定为什么它不适合你。我将您的重新映射添加到我现有的脚本中,它似乎工作正常。你能发布更多你拥有的东西吗?我在我的顶部有以下命令,但我认为它们不会影响你的问题。

#Persistent
#SingleInstance, Force

命令GetKeystateSetKeyDelay可能会有所帮助。

答案 1 :(得分:1)

这是我使用的,它的工作原理:

*Capslock::LCtrl

星号记录在键盘控制&gt;下的帮助中。热键和热弦:

  

通配符:即使按下额外的修改器,也要触发热键。这通常与重新映射键或按钮结合使用。例如:

     
    

* #c ::运行Calc.exe; Win + C,Shift + Win + C,Ctrl + Win + C等都将触发此热键。

         

* ScrollLock :: Run Notepad;即使modifer键已关闭,按Scrolllock也会触发此热键。

  
     

在Windows 95/98 / ME上忽略此符号。

我实际上也有这个, Win + 大写锁定,如果我真的想要大写锁定:

<#Capslock::Capslock

答案 2 :(得分:0)

试试这个;

SetCapsLockState, AlwaysOff
CapsLock:: SendInput, {LCtrl Down}
Capslock Up:: SendInput, {LCtrl Up}