GNU/Linux >> Linux の 問題 >  >> Linux

Linuxでカスタムキーボードキーを再マップする-チュートリアル

現代の問題には現代的な解決策が必要です。私は最近、新しいLinuxテストラップトップであるIdeaPad 3を手に入れました。これは、米国のレイアウトではなく英国のキーボードレイアウトで購入しました(残念ながら、市場の不足のため)。これは、別のキーボードバリアントを使用している場合でも、物理的なキーの配置が最適ではないことを意味します。つまり、バーキーやバックスペースキーなどがすべて間違って配置されていることに加えて、Enterキーが小さすぎます。

さらに、これはまた、筋肉の記憶など、実際に新しい行にジャンプしたいときに\と入力することになり、これは非常に煩わしい場合があります。だから私は、おそらく私はキーボードのキーを小さな方法で再マップできるのだろうかと思いました。しかし、バックスペースキー(英国のチルダとハッシュ記号が付いている)を「2番目の」Enterキーに再マップするだけではなく、より大きなEnterキーを効果的に作成しました。それでも、バーキーとバックスペースキーを使用できるようにしたかったのです。したがって、より複雑な演習です。このやや複雑ですが、非常に優れたセットアップを行う方法を紹介します。

手元のタスク

それで、私が心に留めていることを明確に説明させてください:

  • 英国でマッピングされた物理的なIdeaPad3キーボードには、Enterの近くにハッシュ/チルダキーがあります。左シフトの近くにバー/バックスラッシュがあります(効果的に小さくなります)。
  • このキーボードでUSレイアウトを使用すると、Enterキーの近くのハッシュ/チルダにマップされたバー/バックスラッシュと、左右の角かっこ(<および>)にマップされたバー/バックスペース記号の付いたキーになります。 )。ただし、これらは、米国レイアウトのピリオドキーとコンマキーのShift機能によってすでに実行されているため、角かっこまたはバー/バックスペースコンボのいずれかのキーが余剰になっています。

したがって、私は次のことをしたいと思います:

  • キーをハッシュ/チルダの物理記号ラベル(バー/バックスラッシュとして使用)で2番目のEnterに再マップします。これにより、Enterキーが効果的に大きくなります。通常の米国のキーボードのように、大きな逆L字型のEnterキーが必要でした。
  • 左シフトの近くにあるバー/バックスラッシュ記号(米国のレイアウトでは左矢印と右矢印として使用)を使用して別のキーをバー/バックスラッシュに再マップします。これは、最初の箇条書きの再マップによってキーが失われるためです。

「壊れた」左ShiftキーとEnterキーに注意してください。物理的なレイアウトが非効率的であるという理由だけで。

私のタスクには2つの再マップが必要です。最初にEnter、次にバー/バックスラッシュです。ここで、実際にこの方法で再マップを行うことが重要です。そうしないと、最初にバー/バックスラッシュを再マップすると、Enterの横のキーにマッピングがまったくありません。理にかなっていますか?

取引のツール:xevとxmodmap

Xバンドルの一部である2つのユーティリティが必要です-Waylandでこれを行うかどうか、どのように行うかはわかりませんが、Xと機能的に同等ではないため、Waylandは一般的に使用しません。さらに、XorgはUbuntuやKubuntuなど、私が実際に使用しているほとんどのディストリビューションのデフォルトセッション。

xmodmapを使用して再マッピングしますが、再マッピングを実行できるように、実際のキーシンボルを「キャプチャ」する必要があります。このために、ターミナルウィンドウからxevを実行します。ツールは画面の隅に小さなウィンドウを開き、入力のキャプチャを開始します。キーボードのキーを押すと、ターミナルウィンドウに次の出力が表示されます-単なる例です:

KeyReleaseイベント、シリアル40、合成NO、ウィンドウ0x5a00001、
root 0x6a9、subw 0x0、time 2784437、(1131,438)、root:(1131,475)、
state 0x0、keycode 94(keysym 0x3c、less)、same_screen YES、
XLookupStringは1バイトを提供します:(3c) "<"
XFilterEventは次を返します:False

これを実行して、バー/バックスペースと矢印キーのキー記号を取得します。 (Shiftを使用して)マップされた「2番目の」キーを取得することを忘れないでください。これにより、1つだけでなく両方をマップできます。それ以外の場合は、バーキーまたはバックスラッシュキーのいずれかのみが使用されますが、両方は使用できません。

その前に、実際にキーを再マップする方法を説明します。 xevを実行している状態で、交換するキーと交換するキーを1回押します。次に、次のようにxmodmapを実行します。

xmodmap -e "keysym HEX =NAME"

HEX値を使用してキーを再マップし、NAME値を使用してキーが実行する必要があることを実行します。例:

xmodmap -e "keysym 0x5c =Return"

このコマンドは、キーシンボル0x5c(バー/バックスラッシュに対応)をEnterにマップします。したがって、このコマンドが完了すると、私の場合、ハッシュ/チルダ記号でマークされた物理的なUKキーは、USレイアウトのbar / backspace関数にマップされ、2番目のEnterキーとして機能します。すばらしい。

ただし、ここで、bar/backspace関数もマップする必要があります。

修飾子

実際、キーの標準機能と2番目の(Shift)機能の両方をマップするには、修飾子が必要になります。次のコマンドで既存の修飾子が存在するかどうかを確認できます:

xmodmap -pm
xmodmap:修飾子ごとに最大4つのキー(括弧内のキーコード):

shift Shift_L(0x32)、Shift_R(0x3e)
lock Caps_Lock(0x42)
control Control_L(0x25)、Control_R(0x69)
mod1 Alt_L(0x40)、Alt_R(0x6c)、Meta_L(0xcd)
mod2 Num_Lock(0x4d)
mod3
mod4 Super_L(0x85)、Super_R(0x86)、Super_L(0xce)、Hyper_L(0xcf)
mod5 ISO_Level3_Shift(0x5c)、Mode_switch(0xcb)

ここで、2つの関数を使用してキーを再マップするための構文は、次のとおりです。

xmodmap -e "keysym HEX MOD =NAME1 NAME2"

この例では:

xmodmap -e "keysym 0x3cShift_L=バックスラッシュバー"

0x3cに対応するキーを再マップします。これは、物理的なUKキーボードではバー/バックスペースでマークされたキーであり、USキーボードでは左右の矢印にマップされます。実際にバー/バックスペースとして機能します。修飾子は左Shiftキーです。したがって、キーを単独で押すと円記号が表示され、左シフトで使用するとバー(パイプ)記号が表示されます。これで、必要なレイアウトができました。

繰り返しになりますが、矢印キーは右Shiftキーの近くのコンマキーとピリオドキーに既にマップされているため、失われることはありません。事実上、物理的な英国と仮想の米国のキーボードの組み合わせにより、2対の矢印キーが生成されたため、1つを取り除き、追加のEnterキーを取得しています。

自動起動スクリプト

間違えても心配しないでください。システムを再起動すると、通常の状態に戻ります。したがって、カスタムリマップを永続的にするには、ユーザーがログインするたびに実行され、必要な変更を加える自動開始スクリプトを作成する必要があります。

これを行うには多くの方法があります。原理はほとんどすべてのデスクトップで同じですが、Plasmaデスクトップの自動起動スクリプトを作成する方法を説明します。これは、Gnomeの[デスクトップを表示]ボタンで行ったことと非常によく似ています。

Konsoleウィンドウを開き、〜/ .config/autostart-scriptsに移動します。ここで、次の内容のテキストファイルを作成します。

[デスクトップエントリ]
Name =Key swap
Exec =key-swap.sh
Terminal =false
Type =Application

任意の名前を使用でき、ファイルには好きな名前を付けることができますが、デスクトップのサフィックスが付いていることを確認してください。私の例では、これをkey-swap.desktopとして保存しました。このファイルを実行可能にします:

chmod + x〜/ .config / autostart-scripts / key-swap.desktop

現在、デスクトップファイルのExec行は、まだ存在していないスクリプトを参照しています。通常、他のデスクトップスクリプト(FirefoxやChromeなどを確認できます)のExec行を見ると、1つのコマンドが記述されていることがわかります。 2つのxmodmapコマンドが必要なので、最も簡単な解決策は、それらを別のシェルスクリプト内に配置し、そのスクリプトをExecコマンドとして使用することです。

autostart-scriptsディレクトリに、key-swap.shという名前のファイルを作成します。これも実行可能にします。

#!/ bin / bash

xmodmap -e "keysym 0x5c =Return"
xmodmap -e "keysym 0x3cShift_L=バックスラッシュバー"

exit 0

これが私の例です。まったく異なるニーズがあり、必要なxmodmapは1つだけ、または7つだけかもしれません。参考までに、完全を期すために、xmodmapを1回変更する場合は、シェルスクリプトをスキップして、デスクトップファイルに配置するだけで済みます。

[デスクトップエントリ]
Name=キースワップシングルキー
Exec =xmodmap -e "keysym 0x5c =Return"
Terminal =false
Type =Application

プラズマ設定ユーティリティを使用すると、すべてが正常であることを確認できます。

気が変わった場合は、スクリプトを無効または削除したり、別のキーボードマッピングを使用したりできます。次回の再起動時に、デフォルトの状態または希望する新しいカスタム状態に戻ります。このようにして、必要な柔軟性が得られます。物事はいわば永続的ですが、いつでも変更できます。

結論

どうぞ。これは、Lenovo IdeaPadキーボードのデフォルトの人間工学を改善し、その物理的なレイアウトをより有効に活用し、キーマッピングをカスタム値に変更する方法を示す私の小さなチュートリアルです。ガイドをさらに面白くしているのは、私が米国のレイアウトを使用していたという事実です。そのため、もう少しひねりがありますが、他の言語を使用する場合にも、これは間違いなく役立ちます。キーの物理的なマーキングと実際の機能には共通点がないことを忘れないでください。これは、人々が適切な記号を見つけやすくするための視覚的な参照にすぎません。

うまくいけば、これは実用的でした。タイピング速度がすぐに向上することに気づきました。さらに、Enterバックスペースの間違いがはるかに少なくなっています。私の手は、私が持っている他のほとんどのラップトップやキーボードとは大幅に異なる、さらに別の物理的なレイアウトのために自分自身を再訓練する必要なしに、速く作業を続けることができます。 xevとxmodmapを使用すると、楽しい時間を過ごすことができます。同様の、またはおそらく不可解な要求がある場合は、私にpingを実行してください。そうすれば、私に何ができるかがわかります。ハッピータイピング。


Linux
  1. Linux – Rawキーボードモード?

  2. Linux –キーボードハードリマップキー?

  3. キーボードレイアウトに依存しないショートカットキー?

  1. Linux で「パスワードなし」の ssh ログイン用に SSH キーをセットアップする方法

  2. Linuxでキーボードの状態を取得するにはどうすればよいですか?

  3. Linux で特定のキーボードのみにキーを再マップする方法

  1. 私のカスタム Kali Linux ディストリビューション

  2. Linux で SSH の「公開/秘密鍵」ログイン用の SSH キーをセットアップする方法

  3. Linux (Ubuntu) でキーボードのキーを無効にする方法は?