如何将密钥重复率提高到操作系统限制以外?

Fra*_*ger 55 windows keyboard macos visual-studio

我习惯使用键盘上的光标键来导航源代码.这是我15年来所做的事情,这当然意味着我的导航速度受到键盘速度的限制.在Vista和OS X(我双启动MacBook)上,我的密钥重复率一直在上升.但是在Visual Studio和其他应用程序中,速率仍然比我想要的要慢得多.

如何在Visual Studio和其他文本编辑器中更快地提高键重复率?

Mud*_*Mud 78

在Windows中,您可以使用系统调用(SystemParametersInfo(SPI_SETFILTERKEYS,...))进行设置.

我为自己写了一个实用工具:keyrate <delay> <repeat>.

Github存储库.

链接消失的完整源代码:

#include <windows.h>
#include <stdlib.h>
#include <stdio.h>

BOOL parseDword(const char* in, DWORD* out)
{
   char* end;
   long result = strtol(in, &end, 10);
   BOOL success = (errno == 0 && end != in);
   if (success)
   {
       *out = result;
   }
   return success;
}


int main(int argc, char* argv[])
{
   FILTERKEYS keys = { sizeof(FILTERKEYS) };

   if (argc == 1)
   {
      puts ("No parameters given: disabling.");
   }
   else if (argc != 3)
   {
      puts ("Usage: keyrate <delay ms> <repeat ms>\nCall with no parameters to disable.");
      return 0;
   }
   else if (parseDword(argv[1], &keys.iDelayMSec) 
         && parseDword(argv[2], &keys.iRepeatMSec))
   {
      printf("Setting keyrate: delay: %d, rate: %d\n", (int) keys.iDelayMSec, (int) keys.iRepeatMSec);
      keys.dwFlags = FKF_FILTERKEYSON|FKF_AVAILABLE;
   }

   if (!SystemParametersInfo (SPI_SETFILTERKEYS, 0, (LPVOID) &keys, 0))
   {
      fprintf (stderr, "System call failed.\nUnable to set keyrate.");
   }

   return 0;
}
Run Code Online (Sandbox Code Playgroud)

  • 哇,这很棒.我一直在寻找这样的东西.它在Win 64上适用于我.想知道为什么没有人赞成这一点.我也想知道这是如何在内部工作的.看起来您可以在系统设置中更改"正常"设置,您可以使用这些设置覆盖它们.但"正常"价值仍然存在.不知怎的,它是按设计分层的?!? (9认同)
  • @Mud谢谢你,这是2018年最好的解决方案!其他想要使用此技巧的提示:(1)打开命令提示符(2)输入`&lt;file_location&gt; \ keyrate.exe &lt;delay int&gt; &lt;repeat int&gt;`例如“ C:\ Users \ Me \ Downloads \ keyrate.exe 200 7`(3)完成! (2认同)

chu*_*ckf 30

很多时候我想把一个功能集中在我的窗口中.滚动是唯一的方法.此外,在有很多非单词字符的代码中,Ctrl-left/right仍然很慢.我也使用键盘.不过,它有几个问题.一,它有时使用默认速度而不是我设置的实际值.另一种有时它会忽略最初的延迟.我仍觉得它非常有用.他们说4年前他们会在6个月内发布消息来源...... :(

好的,根据有人修改HCU\... \键盘响应的建议,这对我很有用.

[HKEY_CURRENT_USER\Control Panel\Accessibility\Keyboard Response]
"AutoRepeatDelay"="250"
"AutoRepeatRate"="13"
"BounceTime"="0"
"DelayBeforeAcceptance"="0"
"Flags"="59"
Run Code Online (Sandbox Code Playgroud)

Windows标准AutoRepeat延迟.13毫秒(77焦耳/秒)重复率.标志打开FilterKeys?这些值在登录时读取.请记住注销并重新登录以使其生效.

  • 更改这些值似乎对Windows 7 64位没有任何影响. (3认同)
  • 优秀。我唯一调整的是将 DelayBeforeAcceptance 设置为 0。我发现这对于使用 Ctrl+Shift 等键盘组合(用于设置/取消设置书签)是必要的。随着延迟到 6,同时按下这些键,通常会“丢失”第二个键,导致没有设置书签。 (2认同)
  • @ marc40000您必须打开过滤器密钥,注销并再次登录才能正常工作.刚刚在Win7 64位上确认. (2认同)

hyp*_*gic 29

在Mac OS X上,打开"全局首选项"plist

open ~/Library/Preferences/.GlobalPreferences.plist
Run Code Online (Sandbox Code Playgroud)

然后更改KeyRepeat字段.较小的数字将加快您的光标速率.设置对话框仅将其设置为最小值2,因此如果转到0或1,您将获得更快的光标.

我必须重新启动才能生效.


Jak*_*ake 8

对于Windows,打开regedit.exe并导航到HKEY_CURRENT_USER\Control Panel\Keyboard.根据自己的喜好更改KeyboardSpeed.

  • 这甚至有用吗?MSDN声明最大值为31,您可以在控制面板中将其设置为正常值. (5认同)

小智 8

Visual Assist可以选择将Visual Studio中的有效键移动加倍,我一直在使用它.


小智 8

我在我的电脑上使用KeyboardKing.它是免费软件,它可以将重复率提高到200,这已经足够了.我建议将进程优先级设置为"高",以便进行更平滑的移动,减少"重复锁定",这种情况有时会发生并且非常烦人.优先级高,效果很好.

没有人理解我们为什么用箭头导航.这很有趣.


exi*_*tus 6

键盘首选项窗口

正如hyperlogic所提到的,在Mac OS X上,内部有两个参数来处理键盘速度:KeyRepeatInitialKeyRepeat.在"系统偏好设置"中,它们将映射到滑块Key Repeat RateDelay Until Repeat滑块.滑块范围和相关的内部参数值(括号内)如下所示.它们似乎是15 ms键盘采样间隔的乘数.

Key Repeat Rate (KeyRepeat)                 Delay Until Repeat (InitialKeyRepeat)
|--------------------------------|          |----------------------|-----------------|
slow (120)                      fast (2)    off (30000)            long (120)        short (25)
0.5 char/s                      33 char/s       
Run Code Online (Sandbox Code Playgroud)

幸运的是,这些参数可以直接在~/Library/Preferences/.GlobalPreferences.plist文件中设置超出预定义的限制.我发现以下值对我自己最方便:

KeyRepeat = 1         --> 1/(1*15 ms) = 66.7 char/s
InitialKeyRepeat = 15 --> 15*15 ms = 225 ms
Run Code Online (Sandbox Code Playgroud)

请注意,在最新的Mac OS X版本中,滑块的命名略有不同.