メディアキーの繰り返しキー押下を無効にする

メディアキーの繰り返しキー押下を無効にする

キーの繰り返し押下に関する問題があります。キーボードのメディア キー (一時停止など) を使用すると (実際には 2 つのキー (Alt キーの右側のキー (修飾キーとして扱います) と F7)、メディア プレーヤーに送信される一時停止コマンドが繰り返され、一時停止/再生のループが発生します。これは明らかに望ましくありません。キーを非常に速く押すと繰り返しを回避できますが、タイミングが常に正確であるとは限りません。これは、修飾キーが繰り返され、コマンドが送信された後に解放されないことに何らかの関係があると思います。出力は次のとおりですxev

Outer window is 0x5200001, inner window is 0x5200002

...

MappingNotify event, serial 37, synthetic NO, window 0x0,
    request MappingKeyboard, first_keycode 8, count 248

KeyRelease event, serial 37, synthetic NO, window 0x5200001,
    root 0x506, subw 0x0, time 16607317, (714,467), root:(864,619),
    state 0x10, keycode 248 (keysym 0x0, NoSymbol), same_screen YES,
    XLookupString gives 0 bytes: 
    XFilterEvent returns: False

FocusOut event, serial 37, synthetic NO, window 0x5200001,
    mode NotifyGrab, detail NotifyAncestor

FocusIn event, serial 38, synthetic NO, window 0x5200001,
    mode NotifyUngrab, detail NotifyAncestor

KeymapNotify event, serial 38, synthetic NO, window 0x0,
    keys:  6   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   
           0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   

KeyPress event, serial 38, synthetic NO, window 0x5200001,
    root 0x506, subw 0x0, time 16607493, (714,467), root:(864,619),
    state 0x10, keycode 248 (keysym 0x0, NoSymbol), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

KeyRelease event, serial 38, synthetic NO, window 0x5200001,
    root 0x506, subw 0x0, time 16607995, (714,467), root:(864,619),
    state 0x10, keycode 248 (keysym 0x0, NoSymbol), same_screen YES,
    XLookupString gives 0 bytes: 
    XFilterEvent returns: False

KeyPress event, serial 38, synthetic NO, window 0x5200001,
    root 0x506, subw 0x0, time 16607995, (714,467), root:(864,619),
    state 0x10, keycode 248 (keysym 0x0, NoSymbol), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

KeyRelease event, serial 38, synthetic NO, window 0x5200001,
    root 0x506, subw 0x0, time 16608025, (714,467), root:(864,619),
    state 0x10, keycode 248 (keysym 0x0, NoSymbol), same_screen YES,
    XLookupString gives 0 bytes: 
    XFilterEvent returns: False

KeyPress event, serial 38, synthetic NO, window 0x5200001,
    root 0x506, subw 0x0, time 16608025, (714,467), root:(864,619),
    state 0x10, keycode 248 (keysym 0x0, NoSymbol), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

KeyRelease event, serial 38, synthetic NO, window 0x5200001,
    root 0x506, subw 0x0, time 16608056, (714,467), root:(864,619),
    state 0x10, keycode 248 (keysym 0x0, NoSymbol), same_screen YES,
    XLookupString gives 0 bytes: 
    XFilterEvent returns: False

...

そして、別のキーを押すまで KeyPress/KeyRelease が繰り返されます。

では、通常のキーの繰り返しを有効にしたまま、これを修正するにはどうすればよいでしょうか? 私はUbuntu 19.04を使用しています

答え1

遅延と速度をカスタマイズする可能性個別のキーただし、可能な限り、ユーザーには公開されません。ただし、キーボードの遅延と速度の一般的な設定は、「設定」の「ユニバーサル アクセス」にあります。「キーの繰り返し」をクリックします。ダイアログが表示され、「遅延」(キーの繰り返しを開始するまでにキーを押し続ける時間) と速度 (キーの繰り返し速度) を調整できます。

「遅延」のデフォルトは 500 ミリ秒、つまり 0.5 秒です。障害のない人にとっては、繰り返しをトリガーせずに一時停止キーを押して放すのに十分な時間です。おそらく、あなたの場合は、ある時点で非常に低い値に設定されている可能性があります。ただし、デフォルトの時間が機能しないという能力上の問題がある場合は、遅延値を増やすか、完全にオフにしてみてください。

関連情報