# 如何修改ahk里面按j，k键光标的移动速度

**URL:** <https://meta.appinn.net/t/topic/50888>\
**Category:** 问题求助\
**Tags:** autohotkey, windows, total-commander\
**Created:** [2023 年12 月 29 日 07:15 UTC](https://meta.appinn.net/t/topic/50888 "2023-12-29T07:15:42Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

作者： ![zoe545452](https://meta-edge.appinn.com/letter_avatar_proxy/v4/letter/z/e68b1a/32.png) [@zoe545452](https://meta.appinn.net/u/zoe545452)\
发布日期： [2023 年12 月 29 日 07:15 UTC](https://meta.appinn.net/t/topic/50888/1 "2023-12-29T07:15:42Z")

</div>

如题，用vimdesktop和totalcommand，映射了j键和k键为向上移动和向下移动，但是在文件多的时候，要一下下按，也可以长按，但是始终觉得略有停顿。请问有没有ahk大佬知道怎么修改呢

---

<div class="post-metadata">

作者： ![dog](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/dog/32/18667_2.png) [@dog](https://meta.appinn.net/u/dog)\
发布日期： [2023 年12 月 29 日 07:51 UTC](https://meta.appinn.net/t/topic/50888/2 "2023-12-29T07:51:54Z")

</div>

我知道怎么弄  
停顿的原因是长按时，键盘按键按下的第一个0.5s，只会发送一次按键。  
这是因为要键盘区分点按和长按，如果不区分的话，因为你每次按键都不是瞬间的，会导致按一下出好几个键的问题  
修改代码的方法是不要直接映射，而是设置循环

通过i触发循环  
通过i up终止循环

---

<div class="post-metadata">

作者： ![zoe545452](https://meta-edge.appinn.com/letter_avatar_proxy/v4/letter/z/e68b1a/32.png) [@zoe545452](https://meta.appinn.net/u/zoe545452)\
发布日期： [2023 年12 月 29 日 08:58 UTC](https://meta.appinn.net/t/topic/50888/3 "2023-12-29T08:58:28Z")

</div>

还得是你（假装听懂了

---

<div class="post-metadata">

作者： ![Gotten2021](https://meta-edge.appinn.com/letter_avatar_proxy/v4/letter/g/e495f1/32.png) [@Gotten2021](https://meta.appinn.net/u/Gotten2021)\
发布日期： [2023 年12 月 29 日 09:24 UTC](https://meta.appinn.net/t/topic/50888/4 "2023-12-29T09:24:45Z")

</div>

我现在用的是这样实现的，试试吧！

```auto
 InstallKeybdHook
 ProcessSetPriority "High" ;更改第一个匹配进程的优先级.
 SendMode "Input" ;让 Send 与 SendInput 同义. 由于其卓越的速度和可靠性, 推荐新脚本使用.
 #SingleInstance Force ;跳过对话框并自动替换旧实例, 效果类似于 Reload 命令.
 #UseHook ;强制使用钩子实现全部或部分键盘热键.
 A_MaxHotkeysPerInterval := 2000 ; 不触发警告对话框情况下可以按下的热键最大数目.

 ~LAlt:: {
     Sendinput "{Blind}{vkE8}"
     KeyWait "LAlt" ; 这是为了让key被释放。这样它就不会不停地发送SC0E9的垃圾信息
     Sendinput "{Blind}{vkFF}"
     return
 }
 ~RAlt:: {
     Sendinput "{Blind}{vkE8}"
     KeyWait "RAlt" ; 这样它就不会不停地发送SC0E9的垃圾信息
     Sendinput "{Blind}{vkFF}"
     return
 }
 Lalt & Ralt:: suspend

 ;Alt + jkli 实现对方向键的映射
 !j::
 {
     Send "{l,Up}"
     Send "{k,Up}"
     Send "{i,Up}"
     Send "{left}"
 }

 !l::
 {
     Send "{j,Up}"
     Send "{k,Up}"
     Send "{i,Up}"
     Send "{right}"
 }

 !i:: {
     Send "{j,Up}"
     Send "{k,Up}"
     Send "{l,Up}"
     Send "{up}"
 }

 !k:: {
     Send "{j,Up}"
     Send "{i,Up}"
     Send "{l,Up}"
     Send "{down}"
 }

```
