キーボードレイアウト(どの文字がどこに行くのか)を取得する方法はありますか?

キーボードレイアウト(どの文字がどこに行くのか)を取得する方法はありますか?

ほとんど使用されていないキーボードレイアウトがあり、私の特定のレイアウトには確かに最適化されていないものがたくさんあります。プログラムのショートカットを変更したいのですが、他の人にも役立つことを願っています。キーボードでjキーを押して文字を返す方法はありますか?
特にvi(neovim)でどの文字がカーソルを動かすかを再マッピングしたいと思います(これは単にjkghなどであり、修飾子はありません)。 Qwertyに切り替える必要がある場合は、自分自身のためにすべてを台無しにしたくありません。

答え1

いいえ。

WASD両方の問題HJKLは、発明者が特定のキーボードレイアウトを使用したという事実に大きく依存していることです。いいえ、正確には改善できません。

もちろん、XサーバーとKVTからXとカーネルのVTキーマップを読むことができます。あるいは、少なくともさまざまな設定ファイルを読んで、どのキーマップを最初に入力したかを知ることもできます。しかし、これはあなたにだけ教えてくれるだけです。キーコードどのキャラクターが生産されるのか。これは、有線を介して対応するキーコードを生成するキーの物理的な位置を知らせない。

したがって、推測できる最善の方法は、(例えば)fr.kbdキーマップを使用するとき(FreeBSD名を使用)、有線で渡されたWASDキーコードがZQSDアプリケーションで見たものと同じであることです。しかし、実際のキーボードでは、キーが実際に望ましい形状を形成するかどうかを知る方法はありません。

なぜなら:

キーボードはネットワーク経由でこの情報を提供できません。キーボードの内部には、マイクロプロセッサが物理マトリックスをUSB HIDを使用するかPS / 2スキャンコードに変換し、それを有線で転送するために使用する内部マップがあります。標準フォーマットはなく、ホストはキーボードから読み取ることができません。

いくつかの例:

  • キーボードメーカーがテンキーパッド全体を通過可能にすることに決めたかどうかを知る方法はありません。キーFn修飾子一部の小型ノートブックキーボードのように、基本英数字ブロック内の複数の列に適用されます。他の場所のテンキーと同じUSB HIDを使用し、PS / 2スキャンコードが回線を介して送信されます。
  • キーは通常~#104キーのWindowsキーボードのISO 9995-1位置D13に刻まれていますが、105キー、106キー、107キー、および109キーのWindowsキーボードの場合はC12の位置にあります。これらのキーの物理的な移動は、ホストに接続されているどこにも表示されません。ホストが受信します。同じシングルUSB HIDの使い方とPS / 2スキャンコード。
  • に最も適しておりWASDHJKLキーボード自体のスイッチに反応してキーボード側のマトリックスを再マッピングするというアイデアは、なるというWASDアイデアを爆発させますZQSD
    • 変化マルトロンキーボードキーボードのスイッチを使用してQWERTYモードからMaltronモードに切り替え、キーストロークが突然ワイヤを介してWASDキーコードを送信します。地図をアプリにPANI適用すると、アプリに文字が表示されます。fr.kbdPQNI
    • 変化マルトロンキーボードキーボードのスイッチを使用してQWERTYモードからMaltronモードに切り替え、キーストロークが突然ワイヤを介してHJKLキーコードを送信します。地図をアプリにDTHO適用すると、アプリに文字が表示されます。us.dvorak.kbdEYDR

やや皮肉です

皮肉なことに、カーソルダイヤモンドのレイアウトはUnixよりも古いです。 1966年、GE Datapro-760には現代のダイヤモンドレイアウトとまったく一致しないカーソルキーがありましたが、ほぼ同じです。実際には、カーソルキーをダイヤモンド、正方形、または単一の行以外の場所に配置するキーボードメーカーがほとんどないため、これは物理的な外観への普遍的な依存に非常に近いです。

残念ながら、Bill JoyがADM 3Aを持っていたので、私たちはUnixにいます。 xeにDEC VT52またはBeehive B100(どちらも1976年に導入されましたが、両方とも大きくキーがあります)がある場合、おそらく今は多少異なるvi伝統を持つことになり、何が何であるかを理解しようとしません。HJKLキーボードの物理的なレイアウトに。

答え2

ここで読むことができます:https://vim.fandom.com/wiki/Mapping_keys_in_Vim_-地図時間(パート1)

または、次のコマンドを実行できます。

cat /dev/tty

実際のキーを押すと、キーボードドライバがキーをどのように認識しているかを確認できます。

関連情報