お知らせ

  • 利用規約を守って投稿してください。また、よくある質問および投稿の手引きも参照してください。
  • メッセージの投稿にはアカウントが必要です。未登録の方は、ユーザ登録ページからアカウントを作成することができます。

#1 2011-12-09 17:09:23

ajolie
メンバ
登録日: 2010-07-08

キーボード入力が一切できなくなりました。

お世話になります。
どなたか、下記の件で、アドバイスをいただけるでしょうか。

今日、起動するとキーボード入力がまったく受け付けなくなっていました。
最近、10.04から11.04、数日後に11.10へとアップデートしたところで、現在の11.10にアップデートした際には使えておりました。
今は別のPCから投稿しています。

・ログイン画面では使えます。
・リカバリーモードでも使えました。
・キーボードはノートPCのキーボードで、USBではありません。
・マウス操作は問題ありません。
・昨日のアップデートはソフトウェアセンターからのものがいくらかありましたが、アップデート後は使えておりましたし、再起動しても
問題ありませんでした。
・昨日インストールしたのはguakeのみだったと思いますが、これをアンインストールして再起動しても変わりません。
・dmesgの結果は以下のとおりです。

$ dmesg | grep keyboard
[    1.555176] input: AT Translated Set 2 keyboard as /devices/platform/i8042/serio0/input/input4

復旧の方法についてご指導いただければ幸いです。
よろしくお願いします。

オフライン

 

#2 2011-12-09 18:05:05

ajolie
メンバ
登録日: 2010-07-08

Re: キーボード入力が一切できなくなりました。

ごめんなさい。解決できました。

原因についてはまとめますので、まずはお知らせまで。

オフライン

 

#3 2011-12-09 20:05:17

ajolie
メンバ
登録日: 2010-07-08

Re: キーボード入力が一切できなくなりました。

えーと、申し上げにくいのですが、わかった!と思ったのも束の間、またわからなくなってきましたので、
どなたか、ご教示くださるでしょうか。

どうも、今回の原因は、以前に私自身が投稿しました以下の内容と関係しているのではないかと思います。

https://forums.ubuntulinux.jp/viewtopic.php?id=8859

私は、タッチパッドの無効化のために、前回教えていただいた内容をもとにして、以下のようなシェルスクリプトを作成し、
そのショートカットをパネルに配置し、更に自動起動するアプリケーションにも加えて利用しておりました。

#!/bin/bash

if [ `xinput list-props "ETPS/2 Elantech Touchpad" | grep -c "Device Enabled (132):    1"` = '1' ]; then
     xinput set-int-prop 13 "Device Enabled" 8 0

else
    xinput set-int-prop 13 "Device Enabled" 8 1

fi

それが、今回のアップデートをきっかけにidなどの変更があったのではないかと思い、この自動起動を停めて再起動してみました。
そうすると、入力できるようになり、バンザーイと喜んだものの・・・。
いざ、原因を探していくとidなんて変わってないし、しかも、もう一度自動起動するように設定して再起動しても
キーボード入力できるではないか、ということで、問題の再現ができなくなってしまいました。
一応解決したものの原因がわからずじまいです。
それともxinputでのidは再起動の度に変更の可能性もあるのでしょうか?

10.04のときは、 "Device Enabled (132)ではなく "Device Enabled (127)でした。
ですので、これらが何か関係していそうに思っていたのですが・・・。

また、何かわかれば続けてあげさせていただきたいと思います。
よろしくお願いいたします。

オフライン

 

#4 2011-12-10 12:58:46

hmatsue
アドバイザ
登録日: 2009-03-10

Re: キーボード入力が一切できなくなりました。

ちゃんとソースを読んだわけではないので本当の挙動は分かりませんが、接続されているデバイスの数や、デバイスそのものが変わった場合、もしかしたら、タイミングの微妙なずれや接続ポート変更でデバイスの認識の順番が変わるなどということもあるのかも知れません。
なので、デバイスIDを決め打ちするのではなく、デバイス名で指定するか、デバイス名からIDを動的に取得する方がよいかと思います。
あくまで一例ですが、下記のような感じではいかがでしょうか。

コード:

#!/bin/bash

get_device_id () {
    _DEVID=`xinput list | grep -i touchpad | sed -e 's/.*id=\([0-9]*\).*/\1/'`
    echo $_DEVID
}

get_device_status () {
    _STATUS=`xinput --list-props $1  | grep "Device Enabled" | sed -e 's/.*\([0-9]\+\)$/\1/'`
    echo $_STATUS
}

DEVID=`get_device_id`
STATUS=`get_device_status $DEVID`

echo $STATUS

if [ "$STATUS" = "1" ]
then
    xinput --set-prop $DEVID "Device Enabled" 0
else
    xinput --set-prop $DEVID "Device Enabled" 1
fi

対象が「touchpadに引っかかるもの」なので、そのまま実行すると、複数のtouchpadにマッチするものがあると期待どおりに動かなかったりしますので、あくまで参考程度とお考え下さい。

オフライン

 

#5 2011-12-10 19:24:39

ajolie
メンバ
登録日: 2010-07-08

Re: キーボード入力が一切できなくなりました。

hmatsueさん

お返事ありがとうございます。
そういえばその時は、いつも接続していないマイクを接続していたはずです。
そのせいでしょうか。

スクリプトを書き換えることにします。
正規表現はまだよくわかっていないのですが、これを機会に上記のスクリプトの意味をきっちり
勉強してみます。
こうやって教えて頂けるとトラブル解決の度に少しずつ解っていけるのが楽しく、感謝の限りです。
本当にありがとうございます。

オフライン

 

Board footer

Powered by FluxBB