ahk脚本需求

需求:
我自身有一个v2的ahk脚本, 主要是实现 按键映射, 比如#a >!w !f capslock & a等等之类的.

现在有一个新的需求: 当按下f的时候 如果同时
1.按下了i,则向上选中一行
2.按下了k 则向下选中一行.
3.按下了j 则向左多选中一个字符
另外还有 u/o/n/ml

要求:
1.能够做到 按下f保持不释放, 然后按下i则向上选中一行,再次按下i又可以继续向上选中一行,这种连续性的操作.
2.不能影响我现有的脚本,或者修正现有的脚本.且保证 原有的 f的功能不受影响, 比如ctrl+f/alt+f/win+f等都不要受到影响
3.最好不管当前是中文输入还是en输入都能实现上述功能, 或者退一步只在英文输入法下有效

实现的脚本内容如下

#Requires AutoHotkey v2.0
#SingleInstance force
InstallKeybdHook

KeyHistory

SetNumLockState "AlwaysOff"
SetCapsLockState "AlwaysOff"
DetectHiddenWindows true

~LWin:: Send "{Blind}{vkE8}"
~Alt:: Send "{Blind}{vkE8}"

f & u:: {
    Send "+{Home}"
    Send "^{c}"
}
f & i:: {
    Send "+{Up}"
}
f & o:: {
    Send "+{End}"
    Send "^{c}"
}

f & k:: {
    send "+{Down}"
}
f & j:: {
    Send "+{Left}"
}
f & l:: {
    Send "+{Right}"
}
f & n:: {
    Send '^+{Left}'
}
f & m:: {
    Send '^+{Right}'
}

上面这段脚本存在的问题:会使得的f按键失去原本的功能.

因此我尝试了~,波浪号 ~ 允许按键的默认功能继续执行
~f & i:: {
Send “+{Up}”
}

这样虽然 能够保证f的功能正常, 但是在 按下f和i 实现向上选中行的时候会多输出一个f. 因为~f & i 会使得f按键本身的功能透传给窗口

而且在中文输入 "方法"这个汉字的时候 会出现输入字符错乱的清空. 具体的原因是 因为 定义了 f & n 这个hotkey 在快速输入fang这个词组的时候触发了热键 f&n. 这个可以从keyhistory中看到

4 03F u 0.03 F5
53 01F d 2.83 s AHK v2 组合键行为 - Google Chrome
53 01F u 0.16 s
48 023 d 0.03 h
49 017 d 0.03 i
46 021 h d 0.05 f ----------------------->这里也触发了hotkey
48 023 u 0.02 h
49 017 u 0.00 i
41 01E d 0.05 a
4E 031 h d 0.06 n -------------------------->看到这里触发了hotkey
A2 01D i d 0.00 LControl
A0 02A i d 0.00 LShift
25 14B i d 0.00 Left
25 14B i u 0.00 Left
A2 01D i u 0.00 LControl
A0 02A i u 0.00 LShift
41 01E u 0.06 a
4E 031 s u 0.03 n
47 022 # d 0.01 g
47 022 u 0.09 g
74 03F d 8.66 F5 D:\program\AutoHotkey\ahk_scripts\demoLearn.ahk - AutoHotkey v2.0.19

综上而言 :
1.不加~ ,会使得f失去原本的功能.
2.加了f, 热键f&n 中的f会透传给窗口,而且 键盘在快速输入 词组 'fang’的时候会出现 触发热键 f&n的bug 导致输入存在问题.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值