1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

bluetoothキーボードを再接続したときキーリピートがデフォルトに戻ってしまう問題

Last updated at Posted at 2020-01-22

はじめに

年末Bluetooth版のThinkPad Keyboardに買い替えたのですが、bluetoothを再接続するたびにキー反応速度がデフォルトに戻ってしまう現象が発生しました。xsetの設定を.xprofileやi3confに入れて起動時に走らせても全く改善しなかったのですが、あれやこれやをやっているうちに昨日ふとできたので、忘れないうちに書き留めておきます。

使用環境

  • Lenovo ThinkPad X1 Carbon Gen 6
  • Linux 5.4.12-1-MANJARO x86_64 GNU/Linux
  • i3wm

bluetoothの自動接続設定

既に出来ている方は飛ばしてください。Arch wikiに書いているように/etc/bluetooth/main.confを編集します。
AutoEnable=trueのコメントアウトを外すか、新しく追加してください。

参考:起動後に自動で有効にする

起動時・スリープ復帰後にキーリピートを設定する

デバイスの絞り込み:udevの設定

udevを使います。/etc/udev/rules.d/に移動して、95-xset-input-rulesファイルを作成し、以下を入力します。

KERNEL=="js0", ACTION=="add", RUN+="/bin/sh -c '/usr/local/sbin/lenovo-keyrepeat'"

最初のKERNELやACTIONなど「==」が付いたものは、検索条件で、ここでデバイスを限定します。これには色々な絞り込み方があると思うので、udevadm monitorudevadm infoを使って絞り込んでください。

参考サイト:
デバイス名を固定するのにudevのルールを書いてみた
udevルールの書き方

ちなみに絞り込みがちゃんとできているかのログの見方がわからなかったので、以下のコマンドをスクリプトで実行していました。

echo 'test' >> /home/<user>/log

再接続時にtestが一行だけなら絞り込み成功、二個以上なら絞り込みが不十分、という原始的な判別方法です。

コマンドの実行

RUN+=以下のスクリプトを記述します。場所は他のところでも大丈夫だと思いますが実行可能にしておく必要はあります。


#!/bin/bash

sleep 1
export XAUTHORITY="/home/<user>/.Xauthority"
export DISPLAY=:0

/usr/bin/xset -display :0 r rate 200 100

sleep 1は即時実行すると反応しない場合があるので少し待ちます。3とかにしておくと確実で、徐々に減らしてみると良いかもしれません。
export XAUTHORITY=これを入れないだけで一週間以上悩みました。下記リンクが参考になりました。

udev rule to turn on keyboard backlight

正直これとexport DISPLAY=:0はなぜ必要なのかはっきりわかっていません。udevの実行は親権限なのでその辺が関係しているのかな、と想像します。

実践!

下記のコマンドをrootで実行します。

udevadm control --reload && udevadm trigger

udevadm control --reload-rulesでも良さそうです。

bluetoothを再接続して少し待つとスピードが変わっています。
内蔵キーボードに比べると即座に打てないのが玉に瑕ですが、そこまで気にはならないので良しとします。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?