Linuxでキーボードをつないだまま掃除したい
zsh
- TOP
- Old Archives
- Linuxでキーボードをつないだまま掃除したい
キーボードが汚れているなぁ、と気づいたとき、あるいはキーボードがべたつくとき、キーボードを掃除したいけれど電源を切りたくないということはないだろうか。 特にデスクトップの後方につないでいる場合や、ラップトップの場合にはキーボードを外すのも面倒な話だ。 スリープにしてもキーボードに触ったら復帰してしまうし、なかなか厄介だ。
そこで一時的にキーボードをつないだまま無効にする方法を考えてみた。
キーボードを無効にする方法としてはXによるデバイス認識であればxinput
が利用できる。
次の方法で認識されているデバイスを確認する。
xinput --list
あまり見やすくはない。
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ ELECOM ELECOM UltimateLaser Mouse id=9 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
↳ Power Button id=6 [slave keyboard (3)]
↳ Power Button id=7 [slave keyboard (3)]
↳ FCL USB Keyboard id=8 [slave keyboard (3)]
キーボード全体をオフにしてしまうと困るかもしれない。
なので、Virtual core keyboard
をオフにすることは思いとどまったほうがいいだろう。
FCL USB Keyboard
(idは8
)を無効にするには次のようにする。(手前側の8がID、後のほうは固定の値)
xinput set-int-prop 8 "Device Enabled" 8 0
有効に戻すにはこうだ。
xinput set-int-prop 8 "Device Enabled" 8 1
外付けキーボードが他に用意できるならいきなり無効にしても構わないが、そうできない場合は時間で復帰するようにしたほうがいいだろう。
on_and_off_keyboard {
xinput set-int-prop "$1" "Device Enabled" 8 0
sleep 30
xinput set-int-prop "$1" "Device Enabled" 8 1
}
安全のためアプレットから復帰できるようにするほうがいいだろう。 マウスで操作できるよう、Zenityを使ってon/offできるようにした。 また、off時にはタイマーをかけることもでき、タイマーをかけない場合は確認される。
Gistで公開している。
Zshスクリプトであり、実際にZshの機能を使用しているのでBashでは動かない。
Zenityはなかなかコマンド置換が難しく、(f)
は欠かせない。