Подтвердить что ты не робот

Как увеличить частоту повторения клавиш за пределы ОС?

У меня плохая привычка использовать клавиши курсора на клавиатуре для перехода к исходному коду. Это то, что я делал в течение 15 лет, и это, конечно же, означает, что моя скорость навигации ограничена скоростью клавиатуры. Как на Vista, так и на OS X (я дважды загружаю MacBook), у меня есть моя скорость повторения ключа, которая полностью изменилась. Но в Visual Studio и других приложениях скорость все еще намного медленнее, чем я бы предпочел.

Как ускорить скорость повторения клавиш в Visual Studio и других текстовых редакторах?

4b9b3361

Ответ 1

В Mac OS X откройте вкладку Глобальные настройки

open ~/Library/Preferences/.GlobalPreferences.plist

Затем измените поле KeyRepeat. Меньшие числа ускорят вашу скорость курсора. В диалоговом окне настроек будет установлено не менее 2, поэтому, если вы перейдете к 0 или 1, вы получите более быстрый курсор.

Мне пришлось перезагрузиться, чтобы это вступило в силу.

Ответ 2

В 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;
}

Ответ 3

Много раз я хочу центрировать функцию в моем окне. Прокрутка - единственный способ. Кроме того, Ctrl-left/right все еще может быть медленным в коде, где много символов, отличных от слова. Я также использую клавиатуру. У меня есть несколько вопросов для меня. Один, он иногда использует скорость по умолчанию вместо фактического значения, которое я установил. Другой иногда игнорирует начальную задержку. Я все еще считаю это очень полезным. Они сказали, что 4 года назад они выпустили источник через 6 месяцев...: (

Хорошо, по предложению кого-то, что изменило HCU \...\Keyboard Response, это хорошо работает для меня.

[HKEY_CURRENT_USER\Control Panel\Accessibility\Keyboard Response]
"AutoRepeatDelay"="250"
"AutoRepeatRate"="13"
"BounceTime"="0"
"DelayBeforeAcceptance"="0"
"Flags"="59"

Стандартная задержка AutoRepeat Windows. 13 мс (77 char/сек). флаги включаются FilterKeys? Эти значения читаются при входе в систему. Не забудьте выйти и вернуться, чтобы это вступало в силу.

Ответ 4

В Windows откройте regedit.exe и перейдите к HKEY_CURRENT_USER\Control Panel\Keyboard. Измените KeyboardSpeed ​​по своему вкусу.

Ответ 5

Я использую KeyboardKing на своем ПК. Это бесплатная программа, и она может увеличить скорость повторения до 200, что вполне достаточно. Я рекомендую установить приоритет процесса High для еще более плавных ходов и меньше "повторных блокировок", которые происходят когда-то и очень раздражают. С высоким приоритетом он отлично работает.

Никто не понимает, почему мы перемещаемся по стрелкам. Это смешно.

Ответ 6

Для того, что стоит, Visual Assist имеет возможность удвоить эффективные движения клавиш в Visual Studio, которые я использую все время.

Ответ 7

Как уже упоминалось выше, на Mac OSX внутренне есть два параметра, касающихся частоты повторения клавиатуры: "KeyRepeat" и "InitialKeyRepeat". Обычно они управляются из системных настроек, где они называются "Ключевой коэффициент повторения" и "Задержка до повторения".

Диапазоны, доступные из системных настроек, следующие:

InitialKeyRepeat 
|--------------|-----------------|
off (30000)    long (120)        short (25)  

KeyRepeat 
|-------------------------------|
slow (120)                      fast (2)  
0.5 char/s                      33 char/s

Числовые значения, по-видимому, составляют множители 15 мс. К счастью, они могут быть установлены за пределы предопределенных пределов в "GlobalPreferences.plist". Я нашел следующие удобные для себя значения:

InitialKeyRepeat = 15 --> 225 ms
KeyRepeat = 1         -->  15 ms or 66 chars/s

Ответ 8

Я не знаю, как ускориться за пределом, но я знаю, как пропустить дальше в одной прессе. Мои знания только в Windows, так как у меня нет Mac для этого. Ctrl + Arrow пропускает слово, и в зависимости от редактора он может просто перейти к следующему разделу пробелов. Вы также можете использовать Ctrl + Shift + Arrow для выбора слова в любом направлении.

Ответ 9

Мне нравится работать только на клавиатуре. Зачем? Потому что, когда вы используете мышь, вы должны ее схватить. Потеря времени.

С другой стороны, иногда кажется, что в каждом приложении есть встроенные встроенные клавиатуры. Не говорить о свойствах BIOS или настройках ОС. Поэтому я собрал короткие клавиши, которые могут быть довольно быстрыми (т.е. Вы быстрее набираете ctrl-right (стрелка) прямо справа, чем удерживаете палец справа (стрелка):).

Вот некоторые сочетания клавиш, которые я считаю наиболее ценными (работает в Windows, я не уверен в OSX):

ctrl-right: Go to the end of the previous/the next word (stated before)
ctrl-left:  Go to the beginning of the previous/the word before (stated before)
ctrl-up:    Go to the beginning of this paragraph 
            (or to the next paragraph over this)
ctrl-down:  Go to the end of this paragraph 
            (or to the next paragraph after this)
ctrl-pos1:  Go to the beginning of the file
ctrl-end:   Go to the end of the file

Все это может быть объединено с клавишей shift, так что при выборе текста будет выбран текст. Теперь отпустите более странные вещи:

alt-esc:     Get the actual application into the background
ctrl-esc:    This is like pressing the "start-button" in Windows: You can
             navigate with arrow keys or shortcuts to start programs from here
ctrl-l:      While using Firefos this accesses the URL-entry-field to simply
             type URLs (does not work on stackoverflow :)
ctrl-tab,
ctrl-pageup  
ctrl-pagedwn Navigate through tabs (even in your development environment)

Так что это самые используемые ярлыки, которые мне нужны во время программирования.

Ответ 10

Для OSX расширение ядра KeyRemap4MacBook позволит вам точно настраивать всевозможные параметры клавиатуры, среди которых частота повторения клавиш (я установил минус 15 мс, работает хорошо).

Ответ 11

На Mac это опция-стрелка для пропущения слова и опции + сдвиг + стрелка для выбора. Команда + стрелка пропускается до конца или начала строки или конца или начала документа. Существуют также кнопки вверх, вниз, вниз, в начало и конец;) Также удерживается shift shift.

Ответ 12

Кажется, вы не можете сделать это легко в Windows 7.

Когда вы нажимаете и удерживаете кнопку, скорость контролируется ключом реестра Windows: HCU- > Control Panel- > Keyboard- > Keyboard Delay.

Установив этот параметр в 0, вы получите максимальную скорость повтора. Драма заключается в том, что вы не можете опускаться ниже 0, если скорость повторения по-прежнему медленная для вас. 0-delay означает, что повторная задержка составляет 250 мс. Но задержка в 250 мс все еще медленная, как черт. Смотрите это: http://technet.microsoft.com/en-us/library/cc978658.aspx

Вы по-прежнему можете перейти на "Доступность", но вы должны знать, что эти параметры помогут инвалидам использовать их клавиатуру, а не помогают быстро набирать вундеркиндов. Они НЕ помогут. Используйте Linux, они вам говорят.

Я использую решение для Windows в аппаратном управлении. Найдите специальные драйверы для ваших клавиатур или попробуйте изменить существующие.

Ответ 13

Хотя вопрос несколько лет, я все равно сталкиваюсь с тем же вопросом время от времени на нескольких разных сайтах разработчиков. Поэтому я подумал, что могу внести альтернативное решение, которое я использую для своей повседневной работы с разработчиками (поскольку настройки реестра Windows никогда не работали для меня).

Ниже приведен мой небольшой Autorepeat- Script (~ 125 строк), который можно запустить с помощью AutoHotkey_L (недостатком является то, что он работает только под Windows, по крайней мере Vista, 7, 8.1):

; ====================================================================
; DeveloperTools - Autorepeat Key Script
;
; This script provides a mechanism to do key-autorepeat way faster
; than the Windows OS would allow. There are some registry settings
; in Windows to tweak the key-repeat-rate, but according to widely 
; spread user feedback, the registry-solution does not work on all 
; systems.
;
; See the "Hotkeys" section below. Currently (Version 1.0), there
; are only the arrow keys mapped for faster autorepeat (including 
; the control and shift modifiers). Feel free to add your own 
; hotkeys.
;
; You need AutoHotkey (http://www.autohotkey.com) to run this script.
; Tested compatibility: AutoHotkey_L, Version v1.1.08.01
; 
; (AutoHotkey Copyright © 2004 - 2013 Chris Mallet and 
; others - not me!)
;
; @author   Timo Rumland <timo.rumland ${at} gmail.com>, 2014-01-05
; @version  1.0
; @updated  2014-01-05
; @license  The MIT License (MIT)
;           (http://opensource.org/licenses/mit-license.php)
; ====================================================================

; ================
; Script Settings
; ================

#NoEnv
#SingleInstance     force
SendMode            Input 
SetWorkingDir       %A_ScriptDir%


; Instantiate the DeveloperTools defined below the hotkey definitions
developerTools      :=  new DeveloperTools()


; ========
; Hotkeys
; ========

    ; -------------------
    ; AutoRepeat Hotkeys
    ; -------------------

    ~$UP::
    ~$DOWN::
    ~$LEFT::
    ~$RIGHT::
        DeveloperTools.startAutorepeatKeyTimer( "" )
    return

    ~$+UP::
    ~$+DOWN::
    ~$+LEFT::
    ~$+RIGHT::
        DeveloperTools.startAutorepeatKeyTimer( "+" )
    return

    ~$^UP::
    ~$^DOWN::
    ~$^LEFT::
    ~$^RIGHT::
        DeveloperTools.startAutorepeatKeyTimer( "^" )
    return

    ; -------------------------------------------------------
    ; Jump label used by the hotkeys above. This is how 
    ; AutoHotkey provides "threads" or thread-like behavior.
    ; -------------------------------------------------------
    DeveloperTools_AutoRepeatKey:
        SetTimer , , Off
        DeveloperTools.startAutorepeatKey()
    return


; ========
; Classes
; ========

    class DeveloperTools
    {
        ; Configurable by user
        autoRepeatDelayMs       :=  180
        autoRepeatRateMs        :=  40

        ; Used internally by the script
        repeatKey               :=  ""
        repeatSendString        :=  ""
        keyModifierBaseLength   :=  2

        ; -------------------------------------------------------------------------------
        ; Starts the autorepeat of the current captured hotkey (A_ThisHotKey). The given
        ; 'keyModifierString' is used for parsing the real key (without hotkey modifiers
        ; like "~" or "$").
        ; -------------------------------------------------------------------------------
        startAutorepeatKeyTimer( keyModifierString )
        {
            keyModifierLength := this.keyModifierBaseLength + StrLen( keyModifierString )

            this.repeatKey := SubStr( A_ThisHotkey, keyModifierLength + 1 )
            this.repeatSendString := keyModifierString . "{" . this.repeatKey . "}"

            SetTimer DeveloperTools_AutoRepeatKey, % this.autoRepeatDelayMs
        }

        ; ---------------------------------------------------------------------
        ; Starts the loop which repeats the key, resulting in a much faster 
        ; autorepeat rate than Windows provides. Internally used by the script
        ; ---------------------------------------------------------------------
        startAutorepeatKey()
        {
            while ( GetKeyState( this.repeatKey, "P" ) )
            {
                Send % this.repeatSendString
                Sleep this.autoRepeatRateMs
            }
        }
    }
  • Сохраните приведенный выше код в текстовом файле (UTF-8), например, с именем "AutorepeatScript.ahk"
  • Установить AutoHotkey_L
  • Дважды нажмите "AutorepeatScript.ahk", чтобы наслаждаться быстрыми клавишами со стрелками (или поместить файл в папку автозапуска).

(Вы можете отрегулировать задержку повтора и скорость в script, см. "Конфигурируемый пользователем" ).

Надеюсь, это поможет!

Ответ 14

Ну, это может быть очевидно, но:

  • Для горизонтальной навигации, Home (начало линии), End (конец строки), Ctrl-Left (слово слева), Ctrl-Right (слово справа) работают во всех редакторах, которые я знаю

  • Для вертикальной навигации также нажмите "вверх", "Вниз", "Ctrl-Home" (начало текста), Ctrl-End (конец текста).

Также (на стороне заметки), я хотел бы заставить мои клавиши Backspace и Delete не повторять, так что единственный способ удалить (или заменить) текст - это сначала пометить его, а затем удалить его (или введите текст замены).

Ответ 15

Не перемещайтесь по символу.

В Vim (см. ViEmu для Visual Studio):

  • bw - предыдущее/следующее слово
  • () - предыдущее/следующее предложение (текст с полной остановкой)
  • {} - предыдущий/следующий абзац (строки с разделителями в пустых строках)
  • /? - переместите курсор в предыдущее/следующее вхождение найденный текст (w/ set incsearch)

Кроме того, каждое из движений принимает число в качестве префикса, которое позволяет указать, сколько раз повторять команду, например:

  • 20j - прыгать на 20 строк вниз
  • 3} - три абзаца вниз
  • 4w - переместить 4 слова вперед
  • 40G - переместить в (абсолютный) номер строки 40

Наиболее вероятные эквивалентные способы навигации по тексту в вашем редакторе. Если нет, вам стоит подумать о переходе на лучший.