web-dev-qa-db-ja.com

何らかの理由でShiftキーにマップされたCtrlキーとAltキー

Ubuntu 14.04をインストールしましたが、とても気に入っています。しかし、Garry's Modというゲームをプレイすると、 CTRL そして ALT 有線キーボードのキーは両方とも検出されました Shift。キーボードレイアウトチャートを見て、これを確認しました。また、Windows、または Super キー、 Right CTRL そして Right ALT すべてにマップされています Left Shift

それらはすべて完璧に機能しており、間違って検出されているだけです。私は、キーボードがWindowsにあるはずの米国レイアウトを選択しました。誰でも助けることができますか?キーボードがSONiX USBキーボードとして検出されています(実際のキーボードブランドはAvazzです)。

  • 私のxev -event keyboard出力は、すべてのものごとにこれです:

    KeyRelease event, serial 28, synthetic NO, window 0x4a00001,
        root 0xdc, subw 0x0, time 2446369, (730,547), root:(795,599),
        state 0x1, keycode 50 (keysym 0xffe1, Shift_L), same_screen YES,
        XLookupString gives 0 bytes: 
        XFilterEvent returns: False
    

    変更されるのは時間だけです。

  • Sudo evtestコマンドは、すべての修飾キーを次のように表示します

    type 4 (EV_MSC), code 4 (MSC_SCAN), value 700e1v type 1 (EV_KEY), code 42 (KEY_LEFTSHIFT), value 0
    
  • lsusbの場合、使用しているドライバーはusbhidドライバーです。

    lsusbはわかりにくいものを示しています。他のコマンドでキーボードが表示されているのと同じポートが、ワイヤレスマウスのドライバーLogitech, Inc. Unifying Receiverとしてlsusbに表示されています。これが問題になる可能性がありますが、おそらくどのポートに接続されているかを間違えているだけでしょう。このため、どのドライバーが何なのかわかりません。迷惑かもしれませんが、それらすべてを投稿します。メインキーボードの横に別のキーボードを差し込んで使用します CTRL、 Super、 または ALT ところで、ロジクールクラシックキーボードドライバーと混同しないでください。

    Bus 001 Device 009: ID 0bda:8172 Realtek Semiconductor Corp. RTL8191SU 802.11n WLAN Adapter
    Bus 001 Device 008: ID 046d:c315 Logitech, Inc. Classic Keyboard 200
    Bus 001 Device 007: ID 1a40:0101 Terminus Technology Inc. 4-Port HUB
    Bus 001 Device 006: ID 0480:0200 Toshiba America Info. Systems, Inc. 
    Bus 001 Device 004: ID 0c45:6340 Microdia 
    Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
    Bus 002 Device 004: ID 0d8c:013c C-Media Electronics, Inc. CM108 Audio Controller
    Bus 002 Device 003: ID 046d:c52b Logitech, Inc. Unifying Receiver
    Bus 002 Device 002: ID 0c45:7603 Microdia 
    Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
    

    lsusb -tの場合、使用されているドライバーはusbhidです。

  • for i in $(ls /sys/module/usbhid/parameters/); do echo -ne "$i\t"; more /sys/module/usbhid/parameters/$i; doneは:

    ignoreled   0
    mousepoll   0
    quirks  (null),(null),(null),(null)
    
  • usbhidと言ったので、これは必要ないと思いますが、とにかくここにあります。

    for i in $(ls /sys/module/hid/parameters/); do echo -ne "$i\t"; more /sys/module/hid/parameters/$i; doneの出力。

    debug 0 ignore_special_drivers 0

  • modinfo usbhidの出力は次のとおりです。

    filename:       /lib/modules/3.18.3-031803-generic/kernel/drivers/hid/usbhid/usbhid.ko
    license:        GPL
    description:    USB HID core driver
    author:         Jiri Kosina
    author:         Vojtech Pavlik
    author:         Andreas Gal
    srcversion:     A395FA22EA2729BAC1557C9
    alias:          usb:v*p*d*dc*dsc*dp*ic03isc*ip*in*
    depends:        hid
    intree:         Y
    vermagic:       3.18.3-031803-generic SMP mod_unload modversions 
    signer:         Magrathea: Glacier signing key
    sig_key:        29:DB:FD:FC:5A:CC:82:3C:C5:2C:39:4C:C1:C7:4C:01:C3:BE:BF:78
    sig_hashalgo:   sha512
    parm:           mousepoll:Polling interval of mice (uint)
    parm:           ignoreled:Autosuspend with active leds (uint)
    parm:           quirks:Add/modify USB HID quirks by specifying  quirks=vendorID:productID:quirks where vendorID, productID, and quirks are all in 0x-prefixed hex (array of charp)
    
  • cat /sys/kernel/debug/usb/usbmon/2u > /tmp/usb.mon.outは、2をバスIDに変更したにも関わらず、見つからなかったことを示しています。ここで何が間違っていますか?どうか混乱させてください。 202002を入れてみました。 Sudo ls /sys/kernel/debug/usb/usbmon/の出力は0s 0u 1s 1t 1u 2s 2t 2uです

3
Vardogor

私のキーボードはPerixx P1800です。同じlsusb ID(0c45:7603 Microdia)と同じように、azio L70キーボードと同じボードを使用しているようです。

キーボード用のLinuxドライバーは手作りで、 このアドレス で入手できます。

Debianでは、Enterに近い1つのキーを除いて(update-initramfsの後)私にとって非常にうまく機能します(* Azertyキーボードでは、キーパッドの*はうまく機能しています)。

6
Grégory

私もこの問題を抱えていました。私はそれを何ヶ月も退屈しましたが、それを解決する方法を見つけようとしました。

これがドライバーです。私のキーボードはそのブランドではありませんが、完璧に機能しました。それがあなたの問題も解決することを願っています。ドライバーと手順はこちらです:

https://bitbucket.org/Swoogan/aziokbd

PD:ドライバーを書いたのではなく、見つけただけです。

-#GrammarNazy xDの提案後に編集

1
Alberto