XKBを使用したマルチ修飾子レイヤー(日本語キーボード)

XKBを使用したマルチ修飾子レイヤー(日本語キーボード)

私は次のキーボード(HHKB JP)を持っています。

ビデオ

私はLubuntu 14.04を使用しており、/usr/share/X11/xkb/symbols/us達成するために編集しました。カスタムレイアウト

次に、次のキーを5、6、7、...、および20レベルの修飾子として使用したいと思います。 (WindowsではAutoHotkeyを使用してこれを実行しましたが、現在はAutoHotkeyなしでは購入できません(少なくとも一部は)。)

ここに画像の説明を入力してください。

2つの質問があります。

  1. キーボードのいくつかの非標準キーの「名前」が何であるかわかりません(に追加するため/usr/share/X11/xkb/symbols/us)。
  2. 特に。xkbxmodmap9

私の質問は次のとおりです

  1. ミステリーキーの名前/コード(例:)をどのように知ることができますかkey <AC01>
  2. 特定のキーに修飾子レイヤーを好きなだけ追加する方法は?

注:XKBではこれはできません。これを達成するためのスクリプトツールがいくつかあることに気付くことを嬉しく思います。

ベストアンサー1

RMLVOXKB レイアウトは、ルール、モデル、レイアウト、バリアント、オプションというモデルで定義されます。システムXKBデータベースは通常、次の場所にあります/usr/share/X11/xkb

/usr/share/X11/xkb/
├── compat       # ??? dark magic here, avoid
├── geometry     # as in physical, eg for generating layout maps
├── keycodes     # helpful for translating keycodes (from xev) to <FOO>
├── rules        # "evdev" is the important one; *.lst & *.xml are descriptions
├── symbols      # main layouts, variants, optional overrides
└── types        # ??? dark magic here, avoid

このkeycodesディレクトリは定義キー名は、キーが実際に生成するスキャンコードに似ているか派生しています <CAPS>。が表示されたら、現在のキーマップを構築するためにアクセスしたファイルを正確に表示します。ファイルとファイル内のセクションをロードしています。同様のツールを使用して特定のキーが生成するキーコードを確認すると、これらのファイルにはそのコードにマップされたキー名が表示されます。<AC01>setxkbmap -query -verbose 10keycodes: evdev+aliases(qwerty)../keycodes/evdevqwerty../keycodes/aliasesxev


修飾子の質問はより困難です。参考資料のみ見る8ISOレベル、これがXKB制限であるか、それを使用する一般的なレイアウトではないかどうかはわかりません。 (追加調査の結果、追加の項目を追加するにはXKBコードを変更する必要があると確信しています。

            symbol    press this
level 1       a       key
level 2       A       shift+key
level 3       á       <level3>+key
level 4       Á       <level3>+shift+key
level 5       ??      <level5>+key
level 6       ??      <level5>+shift+key
level 7       ??      <level5>+<level3>+key
level 8       ??      <level5>+<level3>+shift+key

ご覧のとおり、8レベルのレイアウトには「新しい修飾子」キーとして機能するキーが2つだけです。/usr/share/X11/xkb/compat/level5とを参照してください/usr/share/X11/xkb/types/level5。レベル5の移動、ラッチング、およびロック動作は、で定義されているシンボルオプションを介してキーに関連付けられます/usr/share/X11/xkb/symbols/level5

自分で定義すればlevel9その後、修飾子は既存のレベルと組み合わせて8つの追加レベルを提供し、次に別のレベル修飾子が必要です。

            symbol    press this
level 9       ??      <level9>+key
level 10      ??      <level9>+shift+key
level 11      ??      <level9>+<level3>+key
level 12      ??      <level9>+<level3>+shift+key
level 13      ??      <level9>+<level5>+key
level 14      ??      <level9>+<level5>+shift+key
level 15      ??      <level9>+<level5>+<level3>+key
level 16      ??      <level9>+<level5>+<level3>+shift+key

ご覧のとおり、同時に多くのキーを押すことから始まります。使用ロックするそしてクラスプ変える変化減らすことはできますが、これは非常に複雑なレイアウトになります。レベルセレクタを追加することを想像してください。各追加セレクタは既存のレベルを2倍にします。


あなたが想定している「修飾子」は、特定のレベルを選択することができます。このように選択動作を定義して対応するキーのレベル3に配置すると、アクションが提供され、level3+key9次にlevel14_latch押すキーはそのキーのレベル14になります。

編集する:別の問題制作について具体的に質問を受けてデモンストレーションをしてみましたISO_Level4_{Shift,Latch,Lock}ISO_Level4_Latch既存のXKBキーシンボルと操作を使用します。この方法はレベル 4、6、7、8 で動作します。

おすすめ記事