last update

Windowsでキーリピート設定を強制的に上書きする方法(スリープ解除で初期値に戻る場合の対策)

WindowsKeyRepeatBugDetour

最近、新しいノート PC を買ったのですが、スリープからの復帰時に必ずキーボードのキーリピート間隔が元に戻ってしまう(設定が効かない)という謎の症状に見舞われて怒髪天を衝いたので、対策方法を探してみました。

具体的には、コントロールパネルのキーボードのプロパティ(カーソル点滅速度の変更)から「表示の間隔」の設定を変更しても、スリープや電源を入れなおすとキーリピート間隔(同じキーの長押しで同じ文字が連続入力される速度)が勝手に初期値に戻ってしまう。というもの。

詳細は後半に書きますが、レジストリからアクセシビリティの設定を以下のとおり変更することで暫定的に対処できました。

※レジストリの編集はリスクを伴う作業です。自己責任でお願いします。

具体的な設定方法は以下のとおり。

  • 「Win」+「R」(ファイル名を指定して実行)→「regedit」と入力→「OK」
  • レジストリエディタが起動するので、キー「HKEY_CURRENT_USER\Control Panel\Accessibility\Keyboard Response」を開く
  • 以下のとおり値を上書きする
    AutoRepeatDelay:500(初期値 1000 )
    AutoRepeatRate:16(初期値 500 )
    DelayBeforeAcceptance:0(初期値 1000 )
    Flags:59(初期値 122 )
  • Windows を再起動する

AutoRepeatDelay はキーリピート開始までの待ち時間。AutoRepeatRate はキーリピート間隔の時間。どちらも単位は msec(ミリ秒)のようです。値は好みで変えることもできます。(上記の値は、キーリピート速度をコンパネから最速にした場合とほぼ同じくらいにしてあります。)

初期値は、私の手元のマシンでの参考値ですので、各自、レジストリ編集前に、キーを右クリック→「エクスポート」などでバックアップしておくことをおすすめします。

ここに辿り着くまで

手元の環境では、コンパネからキーリピート間隔を変更すると、レジストリ「HKEY_CURRENT_USER\Control Panel\Keyboard」以下の値に正しく反映されており、スリープや電源を入れなおしても、値は変わりませんでした。にも係わらず、実際のキーリピート速度は元に戻っている。というなかなかにバグい症状。

何が原因でこんな症状が出るのか、は、追求していないので分かりませんが、厄介そうだったので、コンパネの「キーボードのプロパティ」相当の機能ではなく、アクセシビリティの機能で上書きする方針にした。という経緯があります。

手元の環境では、Windows 8.1 でしたが、同様の設定は Windows 7 / 8 でもできそうな予感はします。

参考サイト:

windows 7 - Keyboard - Repeat Rate/Repeat Delay values in Win7 - Super User

この記事への1件のコメントがあります

  1. 通りすがる人 says:

    4年前

    こんにちは。

    私のケースだとこの方法でもキーリピートが初期値に戻ってしまいました。
    なんとなーくアカウントが怪しいのではないかと思い、

    ①初期アカウント名を変更
    ②アカウントパスワードを付与(今までPW設定しておらず)

    をしたところ、スリープ解除後もキーリピート設定が効いた状態になりました。

    当方のPCは
    FUJITSU LIFEBOOK A574/HX wndows7pro
    です。

    同じ症状の方がいるかと思い念のため投稿させていただきました。

コメントを記入