Waylandを使用してキーマップをカスタマイズする方法

Waylandを使用してキーマップをカスタマイズする方法

私はUK / GBキーボードを搭載したMacbookでLinuxを使用しており、Appleの奇妙なキーボードレイアウトによって引き起こされるいくつかの問題を解決するためにキーマップをカスタマイズしました。私はxmodmapこれを頻繁にします。 Waylandを試してみたかったのですが、うまくxmodmapいきません。 Waylandで同様の結果を得るにはどうすればよいですか?私が使用するファイルには、.Xmodmap次の内容が含まれています。

keycode  12 = 3 numbersign 3 sterling sterling sterling threesuperior sterling
clear Control
clear Mod4
add Control = Control_L Super_R
add Mod4 = Super_L
keysym Caps_Lock = NoSymbol Caps_Lock

行1:イギリスのキーボードではShift£3なので、#は通常近くに独自のキーがありますReturn。しかし、MacではAltgr-を介して#を取得します3。プログラマとして、私は£よりも#をはるかに使用しているので、この行の2つの値を置き換えます。アメリカのレイアウトを選択するとこれも行われますが、Linuxでそれを行うと、OS Xで米国/英国の影響を受けない一般的に使用される他のキーも置き換えられます。

行2-5:このキーボードには実際の右ボタンがないので、Cmd右ボタンを右に設定します。CtrlCtrl

行6:CapsLockを押すと機能しますShift。 Mac固有のものではなく、すべてのオペレーティングシステムとキーボードの標準オプションである必要があります。

答え1

残念ながら、システムXKBデータベースを変更することが/usr/share/X11/xkb唯一の方法です。その他の問題その部分が正しく動作しているようです。

これらの制限は、主にWaylandの未熟さとXKBの設計監督によるものです。

  • setxkbmapなどのツールは、検索するカスタムデータベースを追加するオプションをxkbcomp提供します(たとえば、ファイル、サブディレクトリはシステムデータベースと同様に配置されます)。これらのツールは X サーバーと対話するため、Wayland で X アプリケーションを実行するように互換性層を構成するのに役立ちます。しかし、彼らは現在Waylandプロトコルを使用していません。-I~/.xkb~/.config/xkbXwayland

  • Waylandプロトコルはまだ成熟段階にあります。これまでinput-methodそしてtext-input合意は最も関連性が高いが、どちらも不安定である。定義されたキーマップの変更についての言及もありません。その詳細は合成者に任されています。

  • GNOMEとKDEの両方が動的変更を含む、システムXKBオプションを処理するためのキーボード処理設定デーモンを提供します。私が知っている限り、ユーザーにカスタマイズを知らせる方法はありません。私が知っている限り、Westonや他のコンポジターは、シャットダウンして再起動する以外に変更できる方法を提供せずに、起動時にXKBオプションを設定するために構成ファイルまたは環境変数に依存しています。

  • XKB自体でも、これは完全にはサポートされていません。カスタムシンボルファイルはinclude他のシステムシンボルファイルにすることができます。ただし、現在はXKBルールファイルには機能がないため、includeWaylandシンセサイザと会話して個人用のカスタマイズを見つけるためのツールがある場合でも、使用したいすべてのルールを手動で含める必要があります(たとえば、次のrules/evdev*XKBをコピー)。システムを修正して修正してください)。libxkbcommon持つ公開質問このトピックについて関連エラー

答え2

使ってきたブロックツールLinuxの場合、これは成功し、次のように知られています。人々はカスタマイズされたマッピングのために異なるプラグインを生成します。また。CAP2ESC私は毎日使用する最初の概念証明プラグインであり、XとWaylandの両方で動作します。このツールは、一般的なマッピングソフトウェアよりわずかに低いレベルですが、非常に柔軟性があり、次のプラグインプランは汎用コードマッピングツールです。

免責事項:私は著者です。

答え3

上の回答に加えてhttps://unix.stackexchange.com/a/215062非常に便利ですが、システムxkbファイルを編集する必要はありません。

https://xkbcommon.org/doc/current/md_doc_user_configuration.html便利なことに、シンボルファイルを配置して$XDG_CONFIG_HOME/xkb/symbols/<name>ルールをカスタマイズできます。$XDG_CONFIG_HOME/xkb/rules/evdev

その後、カスタムシンボルファイルを簡単にロードできます。

完全な例として、アメリカのdvorakにåäöを追加しました。
$XDG_CONFIG_HOME/xkb/symbols/swedish_letters_on_dvorak

xkb_symbols "sweletters" {
    //å on alt+u (qwerty f)
    key <AC04> { [     u,   U, aring,       Aring           ]   };
    //ä on alt+e (qwerty d)
    key <AC03> { [     e,   E, adiaeresis,  Adiaeresis      ]   };
    //ö on alt+o (qwerty s)
    key <AC02> { [     o,   O, odiaeresis,  Odiaeresis      ]   };
    // make right alt altGr
    include "level3(ralt_switch)"
};

$XDG_CONFIG_HOME/xkb/rules/evdev

! option = symbols
  swedish_letters_on_dvorak:sweletters    = +swedish_letters_on_dvorak(sweletters)
! include %S/evdev

(そして私の揺れる構成で)

input type:keyboard {
    xkb_layout "us"
    xkb_variant "dvorak"
    xkb_options "caps:escape,swedish_letters_on_dvorak:sweletters"
}

答え4

この答えはQuickoticの答えと同じアイデアを持っていますが、より詳細な例があります。

Gnome Tweaksには、xkbを介して実行できる20〜30のキーボード調整リストがあります。時には基本的に希望の調整を見つけることができます。私の場合は、Print Screenキーをメニューに変更したいと思います。

xkbを介してprintscrキーを変更する唯一のオプションは、それをWin_Rに置き換えることです。グンナール・ハルマルソンこのスレッドにprintscr / win_rがprintscr / menuを置き換えるようにxkbを変更することをお勧めします。私たちは一緒に解決策を見つけて、ここにもう一度投稿します。

端末に次のように入力します。

sudo su
nano /usr/share/X11/xkb/symbols/altwin

ファイルの下部には次のものがあります。

// Win is mapped to the PrtSc key (and the usual Win key).
partial modifier_keys
xkb_symbols "prtsc_rwin" {
    replace key <PRSC> { [ Super_R, Super_R ] };
    modifier_map Mod4 { <PRSC>, <RWIN> };
};

この部分を削除して次に交換してください。

// Menu is mapped to the PrtSc key (and the usual Win key).
xkb_symbols "prtsc_rwin" {
     replace key <PRSC> { [ Menu, Menu ] };
     modifier_map Mod4 { <PRSC>, <MENU> };
};

nanoから削除するには、バックスペースキーを使用してください。 (強調表示と削除は機能しません。)貼り付けるには、Shift-Ctrl-Vを使用します。終了して保存するには、ctrl-xを押してYesを選択して上書きし、Enterを押します。

再起動。 Gnome / Ubuntuでgnome-tweak-toolsに移動します。 Tweakツールでキーボードとマウスのセクションに移動し、「追加レイアウトオプション」ボタンを押してAlt / Winキーの動作を拡張します。下のオプションを選択します。Winはprintscrにマップされます(覚えておいてください。印刷とメニュー以外の印刷とメニューを変更するようにこの動作のみを変更しました)。 (KDEでモード化されたxkbオプションを有効にする方法があると確信していますが、私はそれを使用していないため、正確なプロセスを知ることはできません。)

関連情報