webdevqa.jp.net

OSの制限を超えてキーリピート率を上げるにはどうすればよいですか?

キーボードのカーソルキーを使用してソースコードをナビゲートするという習慣があります。それは私が15年間やってきたことであり、もちろんこれは私のナビゲーション速度がキーボードの速度によって制限されることを意味します。 VistaとOS X(MacBookをデュアルブート)の両方で、キーのリピートレートを完全に上げました。しかし、Visual Studioや他のアプリでは、レートは私が好むよりもはるかに遅いです。

Visual Studioやその他のテキストエディターでキーのリピートレートを速くするにはどうすればよいですか?

54
Frank Krueger

Mac OS Xでは、Global Preferences plistを開きます

open ~/Library/Preferences/.GlobalPreferences.plist

次に、KeyRepeatフィールドを変更します。数字が小さいほどカーソル速度が速くなります。設定ダイアログでは、最小2にのみ設定されるため、0または1に移動すると、カーソルが速くなります。

これを有効にするには、再起動する必要がありました。

29
hyperlogic

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;
}
76
Mud

多くの場合、関数をウィンドウの中央に配置します。スクロールが唯一の方法です。また、多くの非Word文字が存在するコードでは、Ctrl-左/右は依然として遅くなる可能性があります。私もキーボードを使います。私にはいくつかの問題があります。 1つは、実際に設定した値の代わりにデフォルトの速度を使用する場合があることです。もう1つは、初期遅延を無視する場合があります。それでも私はそれが非常に便利だと思います。彼らは4年前に6ヶ月でソースをリリースすると言っていました... :(

わかりました、HCU\...\Keyboard Responseを変更した人の提案で、これは私のためにうまくいきます。

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

Windows標準のAutoRepeat遅延。 13ミリ秒(77文字/秒)の繰り返し率。フラグはFilterKeysをオンにしますか?これらの値はログイン時に読み取られます。これを有効にするには、必ずログアウトしてからログインし直してください。

30
chuckf

Windowsの場合、regedit.exeを開き、HKEY_CURRENT_USER\Control Panel\Keyboard。 KeyboardSpeedをお好みに変更します。

8
Jake

PCでKeyboardKingを使用しています。フリーウェアであり、リピートレートを最大200まで増やすことができます。これで十分です。さらにスムーズな移動と、いつか発生する非常に迷惑な「繰り返しロック」を減らすために、プロセスの優先順位を「高」に設定することをお勧めします。優先度が高いと、完全に機能します。

なぜ矢印でナビゲートするのか、誰にもわかりません。それはおかしいです。

8
dkellner

Visual Assistには、私がいつも使用しているVisual Studioでの効果的なキーの動きを2倍にするオプションがあります。

7
Colin Day

Keyboard preferences window

hyperlogicで述べたように、Mac OS Xには、内部的に、キーボード速度を処理する2つのパラメーターがあります:KeyRepeatInitialKeyRepeat。システム環境設定では、それらはKey Repeat Rate そしてその Delay 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       

幸いなことに、これらのパラメーターは、~/Library/Preferences/.GlobalPreferences.plistファイル。次の値が自分にとって最も便利であることがわかりました。

KeyRepeat = 1         --> 1/(1*15 ms) = 66.7 char/s
InitialKeyRepeat = 15 --> 15*15 ms = 225 ms

最新のMac OS Xリビジョンでは、スライダーの名前が若干異なることに注意してください。

6
exinocactus

OS Xの場合、カーネル拡張機能のKeyRemap4MacBookを使用すると、あらゆる種類のキーボードパラメーターを微調整できます。その中でも、キーの繰り返し率(私は15µmsに設定し、うまく動作します)。

3
David

限界を超えて加速する方法はわかりませんが、1回のプレスでさらにスキップする方法は知っています。これを行うMacがないので、私の知識はWindowsのみです。Ctrl+矢印はWordをスキップします。エディターによっては、空白の次のセクションにスキップする場合があります。 Ctrl + Shift +矢印を使用して、任意の方向のWordを選択することもできます。

3
Robert K

キーボードだけで作業するのが好きです。どうして?あなたがマウスを使うとき、あなたはそれをつかまなければならないので。時間のロス。

一方、時には、すべてのアプリケーションに独自のキーボードタイプレートが組み込まれているように見える場合があります。BIOSプロパティやOS設定から話をするのではありません。だから私はかなり速いことができるショートキーを集めました(つまり、あなたはより速いタイピングです Ctrl +右(矢印)-右-右(指を右(矢印)キーに保持するよりも:)。

ここに、私が最も価値があると思ういくつかのキーボードショートカットを示します(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

これらはすべてシフトキーと組み合わせることができ、そうすることでテキストが選択されます。それでは、もっと奇妙なものを探しましょう。

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 Firefox this accesses the URL-entry-field to simply
             type URLs (does not work on Stack Overflow :)
ctrl-tab,
ctrl-pageup
ctrl-pagedwn Navigate through tabs (even in your development environment)

したがって、これらは、プログラミング中に必要な最も使用されるショートカットです。

3
Georgi

質問は数年前のものですが、いくつかの異なる開発者サイトで時々同じ問題に出くわします。そのため、私は代替ソリューションを提供するかもしれないと考えました。これは、日々の開発者の仕事に使用します(Windowsレジストリ設定が役に立たなかったため)。

以下は、AutoHotkey_Lを介して実行できる小さなAutorepeat-Script(〜125行)です(欠点は、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
            }
        }
    }
  1. たとえば「AutorepeatScript.ahk」という名前のテキストファイル(UTF-8)に上記のコードを保存します
  2. AutoHotkey_Lをインストールする
  3. [AutorepeatScript.ahk]をダブルクリックして、非常に高速の矢印キーを使用します(または、ファイルをautostart-folderに入れます)

(スクリプトで繰り返しの遅延とレートを調整できます。「;ユーザーによる構成可能」を参照してください)。

お役に立てれば!

1
It's Leto

Macでは、Wordをスキップするためのoption-arrowと、選択するためのoption + shift + arrowです。 Command +矢印は、行の末尾または先頭、またはドキュメントの末尾または先頭にスキップします。ページアップ、ページダウン、ホームキー、終了キーもあります;)シフトを保持すると、それらも選択されます。

1
wprl

これはWindows 7では簡単にできないようです。

ボタンを押したままにすると、速度はWindowsレジストリキー(HCU->コントロールパネル->キーボード->キーボード遅延)によって制御されます。

このパラメーターを0に設定すると、最大繰り返し率が得られます。ドラマは、繰り返し速度がまだ遅い場合は0未満にできないということです。 0遅延は、繰り返し遅延が250ミリ秒であることを意味します。しかし、250msの遅延は依然として遅いです。これを参照してください: http://technet.Microsoft.com/en-us/library/cc978658.aspx

それでもアクセシビリティにアクセスできますが、これらのオプションは、障害のある人がキーボードを使用するのを支援するものであり、オタクをすばやく入力するのに役立つものではないことを知っておく必要があります。彼らは助けにはなりません。 Linuxを使用してください。

Windowsのソリューションはハードウェア制御にあると思います。キーボード用の特別なドライバーを探すか、既存のドライバーを調整してみてください。

1
head_thrash

まあ、それは明らかかもしれませんが、:

  • 水平ナビゲーションの場合、Home(行開始)、End(行終了)、Ctrl-Left(左ワード)、Ctrl-Right(右ワード)は、私が知っているすべてのエディターで動作します

  • 垂直ナビゲーションの場合、Page Up、Page Down、Ctrl-Home(テキスト開始)、Ctrl-End(テキスト終了)も行います

また(補足)、BackspaceキーとDeleteキーを強制的に非反復にしたいので、テキストを削除(または置換)する唯一の方法はfirstマークすることです- then削除(または置換テキストを入力)。

0
tzot