キーボードの単一のキーは、同時に押された各キーに対して追加のキー押下を生成します。

キーボードの単一のキーは、同時に押された各キーに対して追加のキー押下を生成します。

最近、QPADからMK-85メカニカルUSBキーボードを購入しました。キーボードはWindowsで完全に動作します。 Syslinuxでは完璧に動作します。 Linuxではほぼ完全に動作します。 Linuxの唯一の問題は、単一のキーが奇妙に機能することです(Gentoo(3.6.11)、Arch Linux、およびLinux Mint(2.6.38)がすべて影響を受けます)。

キーボードは105キーのドイツ語レイアウトキーボードですが、問題のキーはäとenterの間にあります。アメリカのレイアウトではキーに対応し、\ドイツ語のレイアウトではに対応#し、スカンジナビアのレイアウトではに対応します'

このキーを他のキーと一緒に押すと、同時に押す各キーに対して追加のキー押下が生成されます。たとえば、スカンジナビアのレイアウトでは、いいえ「私はすぐに結論に達しました。いいえ」

この動作はshowkeysプログラムを使用して観察できます。

kb mode was UNICODE
[ if you are trying this under X, it might not work
since the X server is also reading /dev/console ]

press any key (program terminates 10s after last keypress)...
keycode  28 release
keycode  32 press    // d pressed
keycode  24 press    // o pressed
keycode  49 press    // n pressed
keycode  32 release  // d released
keycode  43 press    // ' pressed
keycode  24 release  // o released
keycode  43 release  // ' released
keycode  43 press    // ' pressed, extra ' produced
keycode  49 release  // n released
keycode  43 release  // ' released
keycode  43 press    // ' pressed, extra ' produced
keycode  20 press    // t pressed
keycode  43 release  // ' released
keycode  43 press    // ' pressed, extra ' produced
keycode  20 release  // t released
keycode  43 release  // ' released
keycode  43 press    // ' pressed, extra ' produced
keycode  43 release  // ' released (REAL)

キーボードのレイアウトに関係なく、この単一のキーでのみ発生します。これが現れるもう1つの方法は、キーを押し続けると繰り返され、別のキーを押し続けると繰り返しが開始されることです。

aaaaaaaaaakkkkkkkkkkkkk (works as intended)
¨¨¨¨¨¨¨¨¨¨fffffffffffff (works as intended)
''''''''''a'''''''''''' (a is not repeated, instead ' continues)

Windowsではこの問題は発生しません。

OnKeyDown, Key code=68, Control keys=, Key name d
OnKeyPress d
OnKeyDown, Key code=79, Control keys=, Key name o
OnKeyPress o
OnKeyDown, Key code=78, Control keys=, Key name n
OnKeyPress n
OnKeyup, Key code=68, Control keys=, Key name d
OnKeyDown, Key code=191, Control keys=, Key name ........OEM specific
OnKeyPress '
OnKeyup, Key code=79, Control keys=, Key name o
OnKeyup, Key code=78, Control keys=, Key name n
OnKeyDown, Key code=84, Control keys=, Key name t
OnKeyPress t
OnKeyup, Key code=191, Control keys=, Key name ........OEM specific
OnKeyup, Key code=84, Control keys=, Key name t

SEについてどう思いますか?ハードウェアの問題? Syslinuxではうまく動作するので、Linux側に問題があると思います。これをデバッグするためのアドバイス、アイデア、またはより良い方法はありますか?動作させるためにカーネルをパッチする必要がある場合は、それを喜んで行います。

ベストアンサー1

私はこのバグの適切なパッチを作成しようとしました。これはキーボードの問題ではなくカーネルの問題です。しかし、キーボードが奇妙な方法で動作すると言うこともできます。それにもかかわらず、パッチはレビューのためにLinux入力リストに提出されましたが、まだコメントはありません。

これにより、ここで言及されているQPAD MK-85の問題が解決されますが、Corsair K70、Gigabyte Osmium、およびその他の同様のキーボードにも同じ問題があります。キーボードにバグがある場合は、パッチをテストできれば良いでしょう。テストするときに動作するか、どのキーボードを持っているか教えてください。使用している言語のバージョンも重要です。アメリカのキーボードと米国以外のキーボードは異なる動作をします。アメリカのキーボードのバックスラッシュキーは、異なるバージョンのキーボードで異なるラベルを持っています。

以下は、linux-inputのパッチを含むEメールです。

http://article.gmane.org/gmane.linux.kernel.input/37583

おすすめ記事