matrix1001 / capslock-plus-plus

⌨Amazing, extendable, readable autohotkey scripts framework utilized by Capslock.
90 stars 10 forks source link

need help for full-function arrow keys #4

Closed JunYong1024 closed 4 years ago

JunYong1024 commented 4 years ago

嗨,大佬

我现在想加强一下capslock+hjkl的方向键功能,可以跟shift ctrl alt这些任意组合使用,实现跟原来方向键一样的效果,如shift+capslock+h实现向左选中一个字符,但是我对autohotkey语法不太熟悉,改了一下原来的代码(还是复制别人写好的一段代码,可以单独使用),发现不起作用,麻烦帮忙看看或者指导一下实现的思路,谢谢!

MoveLeft()
{
if GetKeyState("Shift")
    if GetKeyState("Ctrl")
        Send, +^{Left}
    else if GetKeyState("Alt")
        Send, +!{Left}
    else
        Send, +{Left}
else if GetKeyState("Alt")
    if (GetKeyState("Ctrl"))
        Send, !^{Left}
    else
        Send, !{Left}
else if GetKeyState("Ctrl")
    Send, ^{Left}
else
    Send, {Left}
}
matrix1001 commented 4 years ago

在文件capslock++.ahk的205行开始,有这几行代码

;------------Key to func-------
#If Hyper = 1
lalt::
HyperAlt := 1
return
lwin::
HyperWin := 1
return

所以我写代码的时候,已经做了caps+alt/win的模式,但是如果你要自己修改,可能就需要认真学一学ahk了,而且得把我这些代码弄懂,挺麻烦的

但是如果你想就用着我已经有的,加你说的几个功能,是不需要修改原有代码的,只需要把你所说的几个功能,一个对应一个函数写上,然后放到一个新的文件里,丢到libs文件夹,然后在HyperSettings.ini添加上几行就行了

[Keymap]
hyper_1=WindowC(1)
hyper_2=WindowC(2)
hyper_3=WindowC(3)
hyper_4=WindowC(4)
hyper_5=WindowC(5)
hyper_alt_1=switchDesktopByNumber(1)
hyper_alt_2=switchDesktopByNumber(2)
hyper_alt_3=switchDesktopByNumber(3)
hyper_alt_a=WindowMove(A, left)
......

上面是配置文件的一部分,按照你的意思,直接hyper_alt_h=chooseleftchar就可以了

matrix1001 commented 4 years ago

@JunYong1024

JunYong1024 commented 4 years ago

soga,懂了,再次感谢!