Waylandでキーボードマッピングをカスタマイズする方法


20

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

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ます。プログラマーとして私は£よりはるかに多くを使用するので、この行はそれらを入れ替えます。USレイアウトを選択することでもこれを実現できますが、Linuxでは他の一般的に使用されるキーも交換しますが、OS Xではこれらの他のキーはUS / UKの影響を受けません。

行2〜5:このキーボードには物理的な右キーがないため、右CmdキーをRight-として機能させます。CtrlCtrl

6行目:でCapsLock押すと機能しShiftます。Mac固有ではなく、これはすべてのOSおよびキーボードの標準オプションです。


私は途中です:どうやらWaylandはxkbを使用しており、xmodmapはとにかくXでは非推奨です。残念ながらxkbはかなり複雑であり、GNOMEはユーザーがカスタマイズする必要があるとは考えていなかったため、2番目の質問を提起ました。
-realh

回答:


11

残念ながら、システムXKBデータベースを変更すること/usr/share/X11/xkbが唯一の方法です。他の質問から、その部分が機能しているように見えます。

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

  • 以下のようなツールsetxkbmapxkbcomp提供-Iを検索するために、ユーザー定義データベースを追加するオプション(例えば~/.xkbまたは~/.config/xkb、システムのデータベースのようにレイアウトされたファイルとサブディレクトリでの)。これらのツールはXサーバーと対話するため、XwaylandWaylandでXアプリケーションを実行するための互換性レイヤーの構成に役立つ場合があります。しかし、彼らは現在、ウェイランドのプロトコルを話していません。

  • ウェイランドのプロトコルはまだ成熟しています。現在input-methodtext-inputプロトコルとプロトコルが最も関連性があり、両方とも不安定であるようです。定義されたキーマップの変更については何も言及しません。これらの詳細はコンポジターに任されています。

  • GNOMEとKDEは両方とも、オンザフライでの変更を含むシステムXKBオプションを処理するキーボード処理設定デーモンを提供します。私の知る限り、ユーザーのカスタマイズについて伝える方法はありません。私の知る限り、Westonおよびその他のコンポジターは、構成ファイルまたは環境変数に依存して起動時にXKBオプションを設定し、終了して再起動する以外にそれらを変更する方法を提供しません。

  • XKB自体でも、これは完全にはサポートされていません。カスタムシンボルファイルは、include他のシステムシンボルファイルにすることができます。ただし、現時点でincludeはXKBルールファイルの機能はないため、Waylandコンポジターと通信して個人のカスタマイズを検索するツールがあったとしても、使用するすべてのルールを手動で含める必要があります(つまり、コピーrules/evdev*システムXKBから変更します)。libxkbcommon持っている未解決の問題は、このトピックとの関連のバグを


1
私は今、これをほとんど解決したことを明確にすべきでした。私は他の質問でそう言いましたが、情報は少しばらばらです。ブログを自分のWebサイトに追加するときにこのことをより明確に文書化するつもりです。ここにリンクすることを忘れないでください。
-realh

確かに、それはまだ答えられていない質問だったので、ウェイランドの同等の.Xmodmap側面に対処しようとしました。
-quixotic

3
ブログポストでこれを詳細に文書化しました。
-realh

5

私はLinux用のInterception Toolsを使用してこれに成功しており、カスタムマッピング用に他のプラグインを作成している人々も知っています。caps2escは、私が日常的に使用する最初の概念実証プラグインであり、XとWaylandの両方で動作します。このツールは、通常のマッピングソフトウェアよりも少し低いレベルですが、非常に柔軟であり、次のプラグインの私の計画は、一般化されたコードマッピングツールです。

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


インターセプションツールは本当に面白いように見えます!お仕事ありがとうございます!
バル

1
pythonスクリプトを介してすべてのキーボード入力を実行することについてどのように感じているかわからない
Ace.C

4

2018年にここに来る人(Ubuntu 17.10)にとって、これの最も重要な部分はGNOME Tweak Toolを使用して達成できます。

Gnome Tweakツール>キーボードとマウス>追加のレイアウトオプション> Ctrlは、Winキー(および通常のCtrlキー)にマップされます。


2
「Gnome Tweak Tool」(それが何であれ)を使用すると、他のウィンドウマネージャー/環境/グラフィカルシェルの新しいマッピングも設定されますか?
マリリモーカー

Gnome Tweak ToolはCaps Lockを再マップできません。
andyn

@andyn my gnome-tweaks-3.34.0-1.fc31.noarchはCaps Lockを再マップできます。たとえば、「Caps LockはCtrlでもあります」、「Caps Lockを追加のEscにする」、「Caps Lock as Ctrl」などがあります。
maxschlepzig

2

この答えは、quioticticの答えと同じ考えを持っていますが、より詳細な例を示しています。

Gnome Tweaksには、xkbで実行できる20または30のキーボード調整のリストがあります。デフォルトで探している調整を見つけることができます。私の場合、printscreenキーをMenuと交換したかった。

xkbを介して利用可能なprintscrキーを変更する唯一のオプションは、Win_Rに置き換えることでした。このスレッドの Gunnar Hjalmarsson 、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に移動調整ツールで[キーボードとマウス]セクションに移動し、[追加レイアウトオプション]ボタンを押してAlt / Winキーの動作を展開します。一番下のオプションを選択すると、Winはprintscrにマップされます(この動作を変更して、printとWinの代わりにprintとMenuを交換したことに注意してください)。(KDEでmodded xkbオプションを有効にする方法があると確信していますが、使用していませんので、正確な手順を説明することはできません)。

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