gnome-keyboard-propertiesの「5番目のレベルを選択するキー」は何をしますか?


17

キーボードの5レベルにアクセスするために使用するキーを指定するオプションがあります([ gnome-keyboard-propertiesシステム設定]の[ハードウェア]の下の[キーボード])。

上記のダイアログのスクリーンショット

ただし、5 AltGr番目のレベルを3番目のレベルRight Ctrlに設定し、キー54を次のように設定した場合:

xmodmap -e "keycode 54 = 1 2 3 4 5 6 7 8"

さまざまなバリエーションを押すと、次の結果が得られます。

keycode 54 = 1
keycode 54 + right ctrl = 5
keycode 54 + right ctrl + shift = 6
keycode 54 + shift = 2
keycode 54 + AltGr = 1
keycode 54 + AltGr + shift = 2
  1. それでは、5番目のレベルの修飾子は何をしますか?

  2. どのように私は、単一のキー(によって変更のうち5つのまたは6種類の文字を取得することができるようにそれを設定するかShiftAlt GrおよびRight Ctrl例えば)?

回答:


14

「1。では、5レベルの修飾子は何をするのでしょうか?」

5番目のレベルを選択します。2番目のレベル修飾子(通常のシフトのみ)は2番目のレベルを選択し、3番目のレベルは3番目のレベルを選択します。

5番目のレベル修飾子が4番目のレベルではなく5番目のレベル(3番目のレベル修飾子の直後)を選択する理由は、これらの3つの修飾子をさまざまな方法で組み合わせて8つの異なるレベルを選択できるためです(これには、そのような修飾子なしでキーを押すだけです)。2↑3 = 8以降、8つの組み合わせがあります。最初の2つの修飾子には、4つの組み合わせがあります。

  • 修飾子なし(レベル1)
  • 2番目のレベル修飾子、別名シフト(レベル2)
  • 第3レベル修飾子(レベル3)
  • 2番目と3番目の修飾子(レベル4)

3番目の修飾子(5番目のレベル)を追加すると、さらに4つのレベルが追加されます。

「2。どのように私は、単一のキー(Shiftキーで変更、の5つのまたは6種類の文字を取得することができますので、それを設定しますAlt Grと、Right Ctrl例えば)?」

まず、キーごとに5文字以上を使用するレイアウトが必要です。既存のレイアウトを選択できますが、現在使用しているレイアウトにさらにレベルを追加するだけの場合は、最適ではない可能性があります。たとえば、Neoキーボードレイアウト(†1)がありますが、これは「ドイツ語用に最適化されている」ため、ほとんどの英語話者にはあまり適していません。

それでも、Neoがレベル5修飾子用に選択したキーを確認することは有益です。

ネオレイアウト

Neoは明らかに「Mod4」のレベル5修飾子を呼び出します。ご覧のLSGTとおり、左シフトキー()と右altキー/ AltGrキーの右側のキーを使用しています。これは、USキーボード(104キー)と比較して、左シフトが狭く、リターンキーが高くて細いヨーロッパキーボード(105キー)にあります。USキーボードに基づくキーボードレイアウトの場合、他のキーを選択する必要がある場合があります。

レベル5修飾キーの選択

supの答えでは、彼はXmodmapを使用することを選択しました。現在、XmodmapよりもSetxkbmapのようなツールが推奨されています。Xkbには、レベル5修飾子の選択などの多くの事前定義オプションが付属しています。あなたはご相談ください 男XKEYBOARD-config設定をして検索するためにlv5、あなたはこれらのオプションを見つけることができます:

┌──────────────────────┬───────────────────────────────────────────────────┐
│ Option               │ Description                                       │
├──────────────────────┼───────────────────────────────────────────────────┤
│ lv5:lsgt_switch_lock │ <Less/Greater> chooses 5th level; acts as onetime │
│                      │ lock when pressed together with another 5th level │
│                      │ chooser                                           │
├──────────────────────┼───────────────────────────────────────────────────┤
│ lv5:ralt_switch_lock │ Right Alt chooses 5th level; acts as onetime lock │
│                      │ when pressed together with another 5th level      │
│                      │ chooser                                           │
├──────────────────────┼───────────────────────────────────────────────────┤
│ lv5:lwin_switch_lock │ Left Win chooses 5th level; acts as onetime lock  │
│                      │ when pressed together with another 5th level      │
│                      │ chooser                                           │
├──────────────────────┼───────────────────────────────────────────────────┤
│ lv5:rwin_switch_lock │ Right Win chooses 5th level; acts as onetime lock │
│                      │ when pressed together with another 5th level      │
│                      │ chooser                                           │
└──────────────────────┴───────────────────────────────────────────────────┘

したがって、文書化されているオプションは、LSGTキー、右Altキー、右Windowsキー、および左Windowsキーです。これまで見てきたように、Neoは最初の2つのオプションを使用します。

lv5:ralt_switch_lock何らかのレイアウトでオプションを使用するとします。このコマンドはus、次のレベル5修飾キーを使用してレイアウトを設定します。

setxkbmap -option "lv5:ralt_switch_lock" us

したがって、に記載されているオプションのいずれかについては、Setxkbmapを使用man xkeyboard-configする-option際の引数として使用してください。

これらのオプションが十分ではなく、別のキーをレベル5修飾子として定義したい場合、これらのオプションの宣言を調べることは有益です。彼らはにいるようです /usr/share/X11/xkb/symbols/level5。の宣言は lv5:ralt_switch_lock次のようになります。

partial modifier_keys
xkb_symbols "ralt_switch_lock" {
  include "level5(lock)"
  key <RALT> {
    type[Group1] = "EIGHT_LEVEL",
    symbols[Group1] = [ ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift,
                        ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock ]
  };
};

の右側symbols[Group1]は、キーの各レベルが生成するキーまたは文字を宣言します。別のレベル5シフトキーと一緒に押すとレベル5修飾子をロックすることになっているため、これは8つの可能なレベルすべてを使用します。したがってISO_Level5_Lock、レベル5シフトとその他のシフトキーの組み合わせ(すべてになし)を押し続けると、これらのすべてのレベルにアクセスできるため、レベル5〜8が放出 されます。シフトの動作だけが必要で、2回押すとロックされる場合は、同じファイルからより簡単な宣言を行うことができます。

// The right Alt key (while pressed) chooses the fifth shift level.
partial modifier_keys
xkb_symbols "ralt_switch" {
  key <RALT> {
    type[Group1]="ONE_LEVEL",
    symbols[Group1] = [ ISO_Level5_Shift ]
  };
  include "level5(modifier_mapping)"
};

レイアウトにレベルを追加する

Xkbレイアウトはかなりモジュール化されています。あなたは、することができます含まれ、既存のレイアウトをし、それらを変更します。したがって、5レベル未満の既存のレイアウトを選択し、それにいくつかのレベルを追加できます。

レイアウトを含むファイルをにコピーする/usr/share/X11/xkb/symbols/か、Xkbツールがレイアウトを探す場所であればどこにでも、新しいレイアウトを作成でき ます。ただし、これにはsudo権限が必要であるため、最適なソリューションではありません。別の方法としては、のディレクトリ構造をコピーすることができますxkb/ し、下の適切なディレクトリにレイアウトを置くxkb/、すなわち symbols/。ファイルを作成したとしましょうxkb-tree/symbols/my-layouts。このファイルで定義されたレイアウトを使用するには、の-print オプションを使用しsetxkbmap、出力をにパイプしますxkbcomp。このラッパースクリプトは、入力としてレイアウトを受け取ります。

#!/bin/sh

# `-option ""` resets all options.
setxkbmap -option "" -layout "$1" \
    -print |
    xkbcomp -I"<path-to-project>/xkb-tree" - "$DISPLAY"

レイアウトを含むファイルに関する限り、4つのレベルを使用する「US international」レイアウトを拡張したいとします。まず、Neoと同じ方法でレベル3およびレベル5のシフトキーを設定します。

partial alphanumeric_keys
xkb_symbols "mine" {
    // US international
    include "us(intl)"
    // Set up level 3 modifiers.
    include "level3(modifier_mapping)"
    include "level3(bksl_switch)"
    include "level3(caps_switch)"
    // Set up level 5 modifiers.
    include "level5(modifier_mapping)"
    include "level5(lsgt_switch)"
    include "level5(ralt_switch)"
};

次に、いくつかの余分な文字を追加します。Qwertyレイアウトの最初の4つのキーを例として使用してみましょう。これらのキーは、QRに対応する、<AD01><AD04>。まず、キーを最大8つのレベルで使用できるようにする必要があります。

key.type[Group1] = "EIGHT_LEVEL";

最初の4つのレベルでは、それらを再定義しないために、それらをにマップしますNoSymbol。次に、2つのレベルを追加します。レベル5では、矢印を追加します←↓↑→(†2)。レベル6では、方向キーを追加します。レイアウトは次のようになります。

partial alphanumeric_keys
xkb_symbols "mine" {
    // US international
    include "us(intl)"
    // Set up level 3 modifiers.
    include "level3(modifier_mapping)"
    include "level3(bksl_switch)"
    include "level3(caps_switch)"
    // Set up level 5 modifiers.
    include "level5(modifier_mapping)"
    include "level5(lsgt_switch)"
    include "level5(ralt_switch)"

    // Make the following keys capable of using eight levels.
    key.type[Group1] = "EIGHT_LEVEL";

    key <AD01> { [
        NoSymbol, NoSymbol, NoSymbol, NoSymbol,
        leftarrow, Left
    ] };
    key <AD02> { [
        NoSymbol, NoSymbol, NoSymbol, NoSymbol,
        downarrow, Down
    ] };
    key <AD03> { [
        NoSymbol, NoSymbol, NoSymbol, NoSymbol,
        uparrow, Up
    ] };
    key <AD04> { [
        NoSymbol, NoSymbol, NoSymbol, NoSymbol,
        rightarrow, Right
    ] };

};

それを使用するには、作成したラッパースクリプトを使用できます。

./setxkbmap-wrapper "my-layouts(mine)"

†1:Neoはde(neo)Xkbです。setxkbmap "de(neo)"

†2:Xkbが使用する記号名を見つけるには、という名前のファイルを検索しますkeysymdef.h。というディレクトリの下にある必要がありますX11/U2192U + 2192 など、Unicode名を使用することもできます。


1
この回答を作成していただき、ありがとうございます。しばらくの間、JKLIキーを矢印キーとして使用する方法を探していたので、これは非常に便利です。これらの追加の50ポイントをお楽しみください!(明日、賞金を割り当てることができるはずです。)
グルタニメート

1
まあ、ありがとう、これは少し遅れたとしても素晴らしい解決策ですが、それはまさに私が探していたものです(しかし、GNOMEは実際に修飾子の設定をサポートしていません-しかし、設定ファイルを使用して動作する限り、順調です)。
SUP

8

さて、少し掘り下げた後:

(1)5番目のレベルを選択するためのキーは、私がやりたいこととは関係のない奇妙なことを行います(いくつかのフランスのレイアウトに関して)。基本的に、どのキーがISO_Level5_Shiftとして機能するかを設定します。ISO_Level5_Shiftは、いくつかの不明瞭なレイアウトで使用されます。この回答は、「ISO_Level5_Shift」を検索したときにGoogleが提供する結果の数とこれらの リンクに基づいています

(2)1つの物理キーから6つのシンボルを取得するために使用することはできません。これを実現する1つの方法は、$ HOMEディレクトリに配置されたファイル.xmodmapを使用することです。

まず、コマンド

xmodmap -pm

さまざまな修飾子として機能するキーシンボルを提供します。私のシステムでは次のようでした:

xmodmap:  up to 4 keys per modifier, (keycodes in parentheses):

shift       Shift_L (0x32),  Shift_R (0x3e)
lock        Caps_Lock (0x9)
control     Control_L (0x25),  Control_R (0x69)
mod1        Alt_L (0x40),  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)

mod3は、1つのキーで6つのシンボルを使用するためにセットアップする必要があります。これは.xmodmapファイルに配置する必要があります。

clear mod3
clear mod5
keycode 94 = Mode_switch
add mod3 = Mode_switch
add mod5 = ISO_Level3_Shift

次に、xmodmap -pmで次のことがわかりました。

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

キーコード94は、mod3として機能するように選択したキーです。さまざまな物理キーのキーコードは、コマンドラインツールxevで見つけることができます(実行してさまざまなキーを押すと、キーコードが表示されます)。

次に、.xmodmapファイルに配置すると

keycode 54 = 1 2 3 4 5 6

または実行

xmodmap -e "keycode 54 = 1 2 3 4 5 6"

Altgr、Shift、キーコード94を使用して、1つのキーから6つの異なるシンボルを取得します(物理レイアウトの左シフトの横にある無効なキーです)。

更新:シンボルが5つだけ必要な場合は、次のように設定すると便利です。

keycode 54 = 1 2 3 3 5 6

そうでない場合は、3の代わりに4を取得します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.