标准韩国键盘上的空格键旁边有两个键(每侧一个),我想将其重新映射为Control或Alt修饰符 – 所以我可以使用比我的小指更强的手指来替代(我是一个emacs用户) .
我猜测问题是它们似乎没有生成KeyUp事件,并且它们不像其他键那样重复.我有一个hacky解决方案,涉及使用autohotkey的循环很糟糕.还用另一个非自由程序KeyManager做了类似的事情.我希望有一些更高级的技巧或解决方法(AutoHotkey,驱动程序或其他).
;Scan Code for Hanja Key sc1F1:: Loop 10000 { SetKeyDelay,-1 Send {Blind}{LCtrl DownTemp} } SetKeyDelay,-1 Send {Blind}{LCtrl Up} Return
你可以看到没有重复和没有上升事件.
VK SC Type Up/Dn Elapsed Key Window 74 03F u 0.08 F5 19 1F1 d 0.66 Hanja 74 03F d 9.58 F5
更新:
尝试:
sc1F1& t ::发送{Blind} {LCtrl DownTemp} {t} {LCtrl Up}
结果:
按下Hanja后,热键会激活,但随后仅按下ONLY t就会执行相同的动作. LCtrl Up似乎没有出现.
虽然安倍的基于SetTimer的重置很不错!感觉就像我的原始代码更优雅的版本.然而,捕获是延迟 – 我必须调整我的输入速度以匹配延迟.
其他测试方案:
GetKeyState(“vk19”,“p”)总是在脚本加载和初始按下后报告PRESSED.它永远不会打破这种状态 – 甚至在我释放钥匙后很久.
KeyWait也无法按预期工作.
解决方法
设备与供应,
我还没有完成这个想法,但这会是另一种方法吗?
它将显示按下哪些键(在这种情况下按下一个输入),但您可以创建自己的“完成”条件,然后“组合”按键以创建Alt或Ctrl组合.
sc038:: ; Start when (in this case) the left Alt is pressed,{LAlt} is NOT listed in the input list.... input:="" Loop { Input,in,L1,{Enter}{LControl}{RControl}{RAlt}{LShift}{RShift}{LWin}{RWin}{AppsKey}{F1}{F2}{F3}{F4}{F5}{F6}{F7}{F8}{F9}{F10}{F11}{F12}{Left}{Right}{Up}{Down}{Home}{End}{PgUp}{PgDn}{Del}{Ins}{BS}{Capslock}{Numlock}{PrintScreen}{Pause} EL=%ErrorLevel% ToolTip,%EL% and %in% and %A_ThisHotkey% if EL = EndKey:Enter { ToolTip Sleep,5000 Break } } Return