何の記事か
あるときからWeb会議をしていても急に音が聞こえなくなったり、聞こえるようになったり...
よく観察すると、ワイヤレスキーボードのEnterキーを押すと同時にMuteボタンを押した動作になってしまうようになってしまっている。ググるとロジクールで同様の問題だと思われる事例はいくつかあるのですが、トラブルシュートに至っている事例が無かったので、調査・暫定対応方法について書きたいと思います。
環境
Keybord : Logicool K275(かなーり古いもの。バッテリー入れ替え済み)
OS : Kubuntu22.0.4.1
まとめ
原因
そのままですが、「Enter」キーを押すと、同時に「Mute」キーのキーコードEventも上がっていました。(現象そのままなのですが明確に問題がわかった。)
対処
「Mute」のキーコードを書き換えて、何も設定されていないように修正。
Kubuntu側ではxmodmapで対応。他に使っているWin側はAHK(AutoHotKey)で対応。
実際の調査・対応方法
発行されるKeyイベントの調査
KubuntuなどXベースでGUIが立ち上がっている状態で、Xのeventを調べることができるxevを立ち上げる。
$ xev
この状態で、実際にEnterを押すと、ターミナルに以下のようにKeyイベントが出力される。(実際はKeyPress eventとKeyRelease event。以下はKeyRelease eventだけを抜きだしています。)
KeyRelease event, serial 40, synthetic NO, window 0x5a00001,
root 0x7b6, subw 0x0, time 85080177, (524,569), root:(1850,644),
state 0x0, keycode 36 (keysym 0xff0d, Return), same_screen YES,
" XLookupString gives 1 bytes: (0d) "
XFilterEvent returns: False
KeyRelease event, serial 40, synthetic NO, window 0x5a00001,
root 0x7b6, subw 0x0, time 85080197, (524,569), root:(1850,644),
state 0x0, keycode 121 (keysym 0x1008ff12, XF86AudioMute), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
上記結果のkeycode部分。
うーん。確かに2種類のkeycode(36と121)でイベントが発生している。特に121の方はkeycode 121 (keysym 0x1008ff12, XF86AudioMute)
となっている!
keycode割当の確認
以下のコマンドでX上で割り当てられているkeycodeが確認できるので、一応こちらでも確認しておく。
$ xmodmap -pke
実際にkeycode 36と121は
:
keycode 36 = Return NoSymbol Return
:
keycode 121 = XF86AudioMute NoSymbol XF86AudioMute
:
確かに「Return」と「Mute」に割り当たっている!
そりゃ、これは確かにEnterキーを押すとミュートになるわ!(でも、Web会議中にそうなるってことは、なんか横で別のことやっているっていうこと?!)
暫定対処
今回はたまたま同時に発行されるキーコードを無効にしても大きな問題にならないものだったので、単純にkeycode 121をMuteと認識しないようにした。
(これが普通のキーコードならこの対処はできないですね。)
$ xmodmap -e "keycode 121 ="
もちろん、これだけだと再起動後など戻るので~/.Xmodmapや.bash??などのファイルに書いてやる必要がある。
恒久対応
どうやらキーボード本体の問題のようなので、もちろん新しいキーボードを買いたい。Keychronを狙っている!