人々がコマンドラインで作業するとき、Linuxのインストールで「キーが正しくマッピングされていません」と指摘するのはどういう意味ですか?
基本的にインストールはできませんか?どの追加/特定のマッピングが必要ですか?
Homeまた、私のMacでは、キーとEndキーがCtrl期待どおりに機能しないという話を聞きました。
答え1
スキャンコードとキーコード
一般に、誰かがそう言うならば、これはキーに表示されている機能がキーを押したときにLinuxカーネルに送信された「コード」と一致しないことを意味します。キーにタグ付けされていると考えることができますが、キーのHome「Ctrlコード」がカーネルに送信されます。
はるかに低いレベルで実際に起こるのは、各キーにスキャンコードが割り当てられることです。
スキャンコード(またはスキャンコード)は、どのキーが押されたかを報告するために、ほとんどのコンピュータキーボードがコンピュータに送信するデータです。キーボードの各キーには数字または一連の数字が割り当てられています。
これらのスキャンコードは、Linuxカーネルによってキーコードにマップされます。これらのキーコードは通常アプリケーションに渡されます。これは別のものです。スキャンコードリソース詳細については、。
メモ:これは過度に単純化されたものですが、このレイヤーの一般的なアイデアを提供したいと思います。重要なのは、キーを押すとスキャンコードが生成され、Linuxカーネルはこれらのスキャンコードを表示してキーコードをエクスポートすることです。
キーコード設定
ツールを使用してスキャンコードキーコードマッピングを変更できますsetkeycodes
。
setkeycodes scancode keycode ...
setkeycodes コマンドは一度に 2 つの引数を読み込みます。各ペアはスキャンコード(16進数で提供)とキーコード(10進数で提供)で構成されています。これらのペアごとに、カーネルキーボードドライバで指定されたスキャンコードを指定されたキーコードにマッピングするように指示します。
キーコードマッピングはキーマップファイルに保存されます。私のFedoraシステムでは、私のアメリカのキーマップファイルは、/lib/kbd/keymaps/i386/qwerty/us.map.gz
次のコマンドを使用して調べて見つけました。
$ locate map.gz|grep us
/lib/kbd/keymaps/amiga/amiga-us.map.gz
/lib/kbd/keymaps/atari/atari-us.map.gz
/lib/kbd/keymaps/i386/qwerty/br-latin1-us.map.gz
/lib/kbd/keymaps/i386/qwerty/is-latin1-us.map.gz
/lib/kbd/keymaps/i386/qwerty/us-acentos.map.gz
/lib/kbd/keymaps/i386/qwerty/us.map.gz
/lib/kbd/keymaps/i386/qwertz/cz-us-qwertz.map.gz
/lib/kbd/keymaps/mac/all/mac-us.map.gz
/lib/kbd/keymaps/sun/sunt5-cz-us.map.gz
/lib/kbd/keymaps/sun/sunt5-us-cz.map.gz
これらのファイルは圧縮(.gz)されているため、解凍(気にしないでください)を使用またはzcat
確認するzless
必要があります。
$ zless /lib/kbd/keymaps/i386/qwerty/us.map.gz
# us.map
keymaps 0-2,4-6,8-9,12
alt_is_meta
include "qwerty-layout"
include "linux-with-alt-and-altgr"
include "compose.latin1"
include "euro1.map"
strings as usual
keycode 1 = Escape
keycode 2 = one exclam
keycode 3 = two at at nul nul
keycode 4 = three numbersign
control keycode 4 = Escape
keycode 5 = four dollar dollar Control_backslash
keycode 6 = five percent
...
...
keycode 97 = Control
したがって、「Control」キー(キーコード97)を変更して「左Control」キーのスキャンコード(スキャンコード0x1d 0x9d)に設定するには、次のコマンドを使用します。
$ setkeycodes 1d9d 97 &
キー表示
次のコマンドを使用して、キーがマッピングされているキーコードを確認することもできますshowkey
。
$ sudo showkey -a
Press any keys - Ctrl-D will terminate this program
1 49 0061 0x31
2 50 0062 0x32
3 51 0063 0x33
a 97 0141 0x61
b 98 0142 0x62
c 99 0143 0x63
^[OH 27 0033 0x1b
79 0117 0x4f
72 0110 0x48
^D 4 0004 0x04
"^[OH"は私が押したキーですHOME。
注1:showkey -a`)にある場合、ascii' dump mode (
showkeyは押されたキーの10進数、8進数、16進数の値を現在のキーマップに従って標準出力に出力します。
答え2
私はMacBook Proを使用しており、UNIXシステムにログインするときにキーマッピングに問題がないため、デフォルト設定はほとんど確実であり、マッピングは必要ありません。私はDebian、Ubuntu、RedHat、Solaris 11を定期的に使用しています。
しかし、人々がそう言うとき、彼らが意味するものは次のとおりです。端末環境設定下に設定内部に鍵盤ブランド。ここでキーマッピングを編集できます。
私が変更した唯一の変更はアクティブにすることです。オプションをメタとして使用。
Homeとの場合、キーボードのHomeキーとEndキーの配置が気に入らないため、Homeには+を、Endには+をEnd使用します。また、Ctrlキーの伝統的な場所であり、より快適で深刻なので、私のキーを別のキー(キーボードの下のシステム環境設定)に変更しました。誰がCaps Lockを使用しますか?ctrlActrlEcaps lockctrl