特定のキーに対してのみバウンスキーを有効にできますか?


8

私のラップトップでは、スペースバーのキーストロークが繰り返されるという永続的な問題があります。多くの交換を経て、複数のオペレーティングシステムを試しましたが、問題はソフトウェアではなくハードウェアにあると判断しました。

幸いにも、Ubuntuにはバウンスキーと呼ばれる機能があり、繰り返されるキーストロークがフィルタリングされるため、この問題に対処できることを知りました。

ただし、すべてのキーに対してソリューションを有効にすると、フィルタリングしたくないキーがフィルタリングされることがあります。たとえば、helloと入力すると、2つのlを連続して押すことがよくありますが、lの1つがフィルター処理される場合があり、これは非常に煩わしい場合があります。そんなにすばやく連続してスペースバーを2回押す必要はないことはわかっています。スペースバーに問題があるだけなので、スペースバーのバウンスキーだけを有効にしたいのです。

では、 スペースバーでバウンスキーのみを有効にすることは可能ですか?


何回繰り返しましたか?毎回発生しますか?
daltonfury42 2015

毎回発生するわけではありませんが、かなり煩わしいだけで十分です。私はそれが段落の約3倍に起こると思います。戻って余分なスペースを編集しなければならないことは非常にイライラすることがあります。
Faiz Saleem 2015

1
スペースは通常約2回繰り返されます。あなたは私のオリジナルのポストのソースが表示された場合、私は意図的にそれらを残してきたとして、あなたは簡単に、繰り返しスペースを見ることができるはずです。
ファイズサリーム

私は私の答えを更新しましたが、それを読む前に、を読んできた
daltonfury42 2015

ありがとう、後で試してみます-私は本当に忙しいので、チャンスがありませんでした。
Faiz Saleem 2015

回答:


3

xset-Xのユーザー設定ユーティリティ

rはオートリピートを制御するためのものです。

xset -r 10

「1」キーのオートリピートを無効にします。

xset r 10

「1」キーのオートリピートを有効にします。

xset r [キーコード]

私の場合、スペースバーのキーコードは65です。コードであなたのものを確認してください: xev | grep -A2 --line-buffered '^KeyRelease' | sed -n '/keycode /s/^.*keycode \([0-9]*\).* (.*, \(.*\)).*$/\1 \2/p'

それでもキーの速度を変更する必要がある場合は、それにrateパラメータを使用することもできます。

また、このコマンドをセッション開始スクリプトファイルに追加します。


でオートリピートが有効になってxset qいるキーの現在のリストを取得できます。これは、16進数でダンプされた256ビットの配列であり、非常に読みにくいものです。
15

私は間違いなくこれを試してみるでしょう。ありがとう!
Faiz Saleem、2015

1
私にとってはうまくいきました。+100担当者をお楽しみください!
Faiz Saleem 2015

4

私はあなたのための解決策を見つけましたが、それはバウンスキーを含みません。ここでは、スペースキーを押すたびに、スペースキー/キーボードを少しの間無効にします。だからここに行く:

私たちは使用xbindkeys(この場合、リリースの)スペースバーを押してキャプチャするとxdotoolスペースを挿入します。システムにインストールしていない場合は、インストールします。

sudo apt-get install xbindkeys xdotool

xbindkeys構成ファイルは、ホームフォルダーに名前で表示されているはず.xbindkeysrcです。それ以外の場合は、次のように作成します。

xbindkeys -d > ~/.xbindkeysrc

スニペットをコピーして、.xbindkeysrcファイルに貼り付けます。

"xdotool key KP_Space; xinput set-int-prop <kbd-id> "Device Enabled" 8 0; sleep .05 ; xinput set-int-prop <kbd-id> "Device Enabled" 8 1"
     m:0x0 + c:65 + Release
    space

ここ<kbd-id>で知ることができるキーボードのIDでxinputコマンドが。次に、コンピュータを起動するたびにxbindkeysが起動するように設定します。

/etc/rc.localの行を開いて追加します。xbindkeysexit 0

完了です。ターミナルを開き、タイプxbindkeysして今のところ起動します。それが仕事をするかどうか見てください。スペースが不足している後にダブルスペースまたは文字をキャッチできなかった場合delayは、コマンドのを~/.xbindkeysrc適宜調整して再起動します。

参照:


この回答にはいくつか問題がありました。リンクした xinputコマンドはキーボードを無効にしません。タッチスクリーンを無効にします。コマンドを変更してキーボードを無効にしようとしましたが、それも機能しませんでした。正しいコマンドは次のとおりですxinput float 13 ; sleep .1 ; xinput reattach 13 3、これはない仕事を。ただし、ソリューション自体は機能しません。このコマンドでxbindkeysを起動すると、スペースバーがスペースに入りません。キーボードを一時的に無効にしますが、スペース文字は入力されません。私は何か間違ったことをしていますか?
Faiz Saleem、2015

スペースキーだけを無効にする方法も見つけました。それはxmodmapに依存します:xmodmap -e 'keycode 65=NoSymbol' ; sleep .1; xmodmap -e 'keycode 65=KP_Space
Faiz Saleem

@FaizSaleem、私は最初の問題についてすみません、それは私の間違いでした。私はキーボードIDを10に指定しましたxinput。しかし、それは必要ありません。スペースだけを無効にする方法を見つけました。
daltonfury42 2015

2番目の問題についても、キーボードが非アクティブになっている場合にのみテストしました。を使用して手動でスペースを挿入しようとしましたxdotool getactivewindow key KP_Spaceが、機能しません。
daltonfury42 2015

xdotool key spaceまた、機能せず、スペースを挿入しようとした他のすべての方法が失敗しました。
Faiz Saleem 2015
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.