xkbを使ってLSGTを左のコントロールにマッピングするには?

xkbを使ってLSGTを左のコントロールにマッピングするには?

LSGT成功しなかったまま(ヨーロッパのキーボードのキー)を「Left Control」にマッピングしようとしましたxkb(Xとubuntu 18で)。

私は以下を試しました:

  1. このLSGT行を次に置き換えます。
    key <LSGT> { [Control_L] };

modifier_keysそして私が使用しているレイアウト本文のブロックの前にタグを追加します/usr/share/xkb/symbols/fr(これが私が使用しているレイアウトなので、bepoセクションにあります)。

  1. おおよその詳細な手順に従ってください。ここそしてここ: もっと正確に言えば、最後に次のコードを追加しました。.../xkb/symbols/ctrl
partial modifier_keys alphanumeric_keys
xkb_symbols "lsgt_lctrl" {
    key <LSGT> { [Control_L] };
};

(ラベルがキーマップを指しているのか実際のキーを指しているのかわからないので、英数字ラベルはここにあります。英数字キーのようです。LSGTそれも削除してみました。)

.../xkb/rules/evdev次の行! option = symbols

ctrl:lsgt_lctrl = +ctrl(lsgt_lctrl)

! optionevdev.lstの次の行

ctrl:lsgt_lctrl Use LSGT as left control 

オプションに追加したdconfエディタを使用してください['ctrl:lsgt_lctrl']xkb

それから私は再起動しましたがうまくいかなかったので、その中のすべてのエントリ/var/lib/xkb(ファイル1つだけREADME.compiled)を削除して再起動してみましたが、それでも動作しませんでした。

以前のLinuxインストールで同様のプログラムを使用したことを思い出して、混乱しています。

私の投稿を読んでくれてありがとう。このようなフォーラムで質問をするのは今回が初めてで、私はLinuxに初めて接する人なので、この作業を間違っているか迷惑になった場合は教えてください。

答え1

replace最初のコードにキーワードを追加して問題を解決しました。今私が読んでいるのは

partial modifier_keys alphanumeric_keys
xkb_symbols "lsgt_lctrl" {
   replace key <LSGT> { [Control_L] };
};

私の考えでは(?)LSGTの他の場所に別の矛盾する定義があると思います。xkb

注:私は初めて登録していないので、これが私が質問に答えていることを正しく表示できるのか、それとも答えが実際に機能しているのかはわかりません。

答え2

/usr/share/X11/xkb/keycodes/evdevの次の変更で同様の問題を解決しました。

#        <LSGT> = 94;
#        <RCTL> = 105;
        <RCTL> = 94;

その後、「\&|*」(LSGTと呼ばれる)が私の場合は、右コントロールの位置を占めて右コントロールとして機能します。欠点は、外部キーボードでは、この変更後に右クリックコントロールが機能しなくなることです。

したがって、LSGTをLCTLとして機能させるには、次のようにします。

#        <LSGT> = 94;
#        <LCTL> = 37;
        <LCTL> = 94;

答え3

実行すると、setkbdmap -print > somefile.xkb次のように拡張マクロ/指示文を含むXKB構成が印刷されます。このスレッド

拡張されていない出力と比較すると、設定のsetkbdmap -print問題がより明確になる可能性があります。これにより、キーコードが順番にリストされているファイルも提供されます。

構成を調べた後、私のXKBマクロ/指示は順番に展開されず、io(swapcaps)myと行が含まれてから次の行が評価されることがわかりました。ìo(intl)

    key <LVL3> {
        type= "ONE_LEVEL",
        symbols[Group1]= [ ISO_Level3_Shift ]
    };
    key <LSGT> {
        type= "FOUR_LEVEL",
        symbols[Group1]= [ backslash, bar, backslash, bar ]
    };

また、キーボード設定(KDEシステム設定モジュール)に移動すると、レイアウトの下にレイアウトプレビューを作成できます。この場合、xkbcomp /usr/share/X11/xkb/symbols/io $DISPLAYレイアウトを使用または解析するよりもプレビューの方が良い出力が生成されますsetxkbmap -config ~/.config/me/xkb/io -print -verbose 10。プレビューを作成すると、それをマッピング/交換するキーに「<>」記号が表示されます。

以下のスクリプトをマッピングkey <ESC> {[ LSGT ]}または使用し、追加のモードキーを取得するために申請しようとしています。または、少なくともLaTeX / Juliaの拡張シンボル範囲を取得しようとしています...replace keylevel5(lsgt_switch)

hidden partial
xkb_symbols "swapcaps" {
    key <ESC> {[ LSGT ]};
    key <CAPS> {[ Escape ]};
};

xkb_symbols "intl" {

    include "us(intl)"
    include "io(swapcaps)"
    include "level5(lsgt_switch)"

    name[Group1] = "Digimon - US (With Dead Keys)";

    key <SPCE> {[       space, underscore, nobreakspace, nobreakspace   ]};

    //key <TLDE> {[dead_grave, dead_tilde, grave, asciitilde ] };

    key <AE01> {[              exclam, 1,    exclamdown,      onesuperior ] };
    key <AE02> {[                  at, 2,   twosuperior, dead_doubleacute ] };
    key <AE03> {[          numbersign, 3, threesuperior,      dead_macron ] };
    key <AE04> {[              dollar, 4,      currency,         sterling ] };

    //// ...
};

pc104およびpc105キーコードに関する注意:

  • pc104キーボードで唯一欠けているキーコードは93すぐ後ろにありますkey <LSGT> = 94。それでも問題があります。しかし、このキーがそこに定義されていることは奇妙です。pc104との唯一の違いは、追加されpc105LSGTキーであるためです。
  • $XKB/symbols/pc実際のpc105定義が見つからないようです。シンボルにのみ存在するようです。

関連情報