web-dev-qa-db-ja.com

特定のキーコードをキーに設定し、適切なアクションにバインドするにはどうすればよいですか?

私はスウェーデン語のキーボードレイアウトを備えたラップトップを持っていますが、すべてがキーボードでうまく機能します。外傷により人間工学に基づいた外部USBキーボードを使用しているため、ここで問題が発生します。

外部キーボードには_Control_R_または_ALT-GR_のキーがありません(それは_ALT_R_であると思いますが、これは_@_、_$_、__および_{}_または_[]_はすべて、スウェーデン語のキーボードレイアウトで_ALT-GR_を使用します。

UPDATE ::これは正しくありません。キーボードには両方のControlキーが付属していますが、カスタムの再マッピングのためにめちゃくちゃになりました。その管理方法をお読みください here 。完全にリセットした後、外部キーボードにも_Alt-GR_(xevでは_ISO_Level3_Shift_と表示されます)もあることがわかりました(バックティックを見つけるのは困難でしたが)。 :: END UPDATE

キーボードにはマクロ機能だけでなくリマップ機能が組み込まれていますが、オンボードキーボードから外部キーボードにキーを再マップする方法はありません(私の知る限り)

外部キーボードのキーの1つに新しいキーコード(_Control_R_または_ALT_R_など)を設定し、それを_ALT-GR_として機能するように再マッピングしたい-これは可能ですか?キーコード_Control_L_が必要ない理由は、それを再マップすると、他のControlキーも再マップされます。

Xevでは、オンボードキーボードの_ALT-GR_のキーをクリックしてトリガーされるキーコードを確認しました。これはkeycode 108 (keysym 0xfe03, ISO_Level3_Shift)です。いくつかの調査の後、_ALT-GR_キーではこれが期待されていないことに気付きましたが、このキーは期待どおりに機能します。

Xevでは、_ALT-GR_:keycode 105 (keysym 0xffe3, Control_L)として使用したい外部キーボードのキーの出力もチェックします。

外部キーボードにまったく同じものを出力する別のキーがあります。そのキーは_Control_L_に使用するもので、希望するものは_ALT_GR_冗長です。

Xmodmapをいじって、必要なものを手に入れることができるかどうかを確認しましたが、残念ながら成功しませんでした。以下にいくつかのシナリオを示します。

_xmodmap -e "keycode 105 = Alt_R"_#=>これにより、両方のControlキーが無効になり、_ALT-GR_のように機能せず、実質的にキーは何もしません。

_xmodmap -e "keycode 105 = ISO_Level3_Shift"_#=>上記と同じ

これらの問題に対処する方法はありますか?


セットアップ:

1
miphe

同じスキャンコードを持つ2つのキーがある場合、それらのキーを別のアクションに再マッピングすると、両方のキーがそのスキャンコードに再マッピングされます。 2つの異なるキーが同じスキャンコードを持っている場合、それらを区別する方法はありません(私の知る限り)。

@falconerが示唆しているように、実際に2つのキーが異なるか同じかどうかは、showkey -s仮想コンソールで。 Xに戻す方法を覚えておいてください(ALT+F7)したがって、仮想コンソールで立ち往生することはありません。

異なる方法でマップしたい2つのキーを押し、それらの2つのキーで同じ出力が得られる場合、別の解決策を探す必要があります。

あなたが話している外部キーボードには、実際には、あなたが提案しているアクションへのスキャンコードマッピングが欠けているキーがあります(Control_LおよびControl_R)-キーボードをデフォルト設定にリセットし、xevでキーの出力を再度確認することをお勧めします。

正しいオペレーティングシステム設定で開始することを確認してください。キーボードでは次のとおりです。

=+ + w 窓用。

=+ + p PC用(非ウィンドウ)。

=+ + m Mac用。

再マッピングを開始する前にこれを設定すると、必要なすべてのスキャンコードを適切に開始できます。

については Alt-GR 問題、 ISO_Level3_Shiftは、このキーの正しいアクションでなければなりません(私の知る限り)。そのアクションを持つキーは、の動作をトリガーします Alt-GR 正しく。

さらに、スキャンコードやアクションを改ざんするときは、 KeyMon のようなソフトウェアを用意しておくと便利です。これにより、どのキーまたはキーの組み合わせを押しているかがわかります。

1
miphe

仮想コンソールに切り替えます(CTRL+ALT+F1)および実行

showkey -s

これにより、キーのスキャンコードが出力されるため、左右を押してください CTRL キーを押して、同じスキャンコードがあるかどうかを確認します。それを確認した後、10秒待ってからキーを押さないでくださいなので、showkeyプログラムは戻ります。次に、X(ALT+F7)。

スキャンコードが異なっていた場合、それらのキーが異なって再マップされる可能性があります(カーネルがそれらを異なって見るため)、スキャンコードが同じ場合、異なった再マッピングの方法はありません。

2
falconer