ハイパーキーとスーパーキーが同じことをしないようにする方法は?


8

xkbを使用して、適切なWindowsキー(RWIN)をHyper_Rに再マッピングしました。これは、いくつかの特別なショートカットでAutoKeyと一緒に使用したいためです。編集してやった

/usr/share/X11/xkb/symbols/pc

RWIN行の変更:

  key <RWIN> {  [ Hyper_R   ]   };

ここに私を導いた答えがあります

私が言えることから、これは機能し、正しいWindowsキーがHyper_Rを起動します。しかし、Ubuntu(正確にはXubuntu)では、HyperとSuperは何とか同じことをしているようです。Super + eはエディターを起動し、Hyper + eも起動します。

これがなぜ、どこでこの動作を変更できるのかわかりません。ハイパーとスーパーを異なるモディファイアにしたい。


その上に事がありました、ここで私は... 13.10での対話が今存在しているとは思いませんが、
Wilf

しかし、これはどこかで構成可能でなければなりませんよね?
Alexander Rechsteiner 14

あなたはそれらを見つけることができるかもしれませんdconf-editor
ウィルフ

1
ありがとう、でも運はありません。くそー、Linuxでこのキーボード全体の再マッピングを行うと、私は糖尿病になります。
Alexander Rechsteiner

+1:concord(糖尿病部分)。Ubuntuでキーボードを管理する方法についての包括的で詳細なガイドを見つけることができませんでした。gnome-control-center、gnome-tweak-tool、xkbd、xmodmapの間には一連の相互作用があり、これらは非常に複雑で、最悪の場合、文書化されていません。リンクを見つけたら共有してください!(私はほとんど誰もそれを実際に知っているとは思っていませんが、バグの修正不能性を参照してください。launchpad.net/ ubuntu / + source / gnome
settings

回答:


11

何らかの理由で、Ubuntuは現在、SuperとHyperの両方をMod4に割り当てています。これは/ usr / share / X11 / xkb / symbols / pcで確認できます。

 key <SUPR> {   [ NoSymbol, Super_L ]   };
 modifier_map Mod4   { <SUPR> };

 key <HYPR> {   [ NoSymbol, Hyper_L ]   };
 modifier_map Mod4   { <HYPR> };

ルートにしたり、システムファイルを変更したりすることなく、スーパーとハイパーを別々のモディファイヤに配置するようにこれを変更できました。私がxkbのエキスパートではないので、これが最善の方法かどうかはわかりませんが、私にとっては信頼できる方法です。

まず、ローカルシンボルファイルを作成します。$ {HOME} /。config / xkb / symbols / localにあります。これにより、SuperがMod3に、HyperがMod4に割り当てられます。

default  partial modifier_keys
xkb_symbols "superhyper" {

    modifier_map Mod3 { Super_L, Super_R };

    key <SUPR> {    [ NoSymbol, Super_L ]   };
    modifier_map Mod3   { <SUPR> };

    key <HYPR> {    [ NoSymbol, Hyper_L ]   };
    modifier_map Mod4   { <HYPR> };
};

次に、既存のマップを再コンパイルして「ローカル」を追加します。

setxkbmap -print | sed -e '/xkb_symbols/s/"[[:space:]]/+local&/' | xkbcomp -I${HOME}/.config/xkb - ${DISPLAY}

これをスクリプトに入れて、ログイン時に実行します。通常のユーザーとして実行できます。


そのファイルを編集してHYPRをMod3に変更することはできますか?
Alex Moore-Niemi 2017年

3
あなたはこれを行うことができます。その場で編集しないことの利点は、システムアップデートによって変更が上書きされないことです。
ergosys 2017年

私自身、raw.githubusercontent.com / jabbalaci / dotfiles / master / .Xmodmapを使用して簡単に動作させましたが、不思議なことに停止し続けます...
Alex Moore-Niemi

また、私が見つけた私の回答の方法の欠点は、キーボードが接続されていないか、ランダムなグリッチが原因でUSB通信が失われた場合、スクリプトを再度実行する必要があることです。自動的に再実行する方法はおそらくあるでしょうが、まだ調べていません。幸いにも、ランダムな不具合は月に1か月程度しか発生しません。システムファイルを編集する場合、これは問題にはなりません。したがって、プラスとマイナスがあります。
ergosys 2017年

1
私も使っています。すでに用意されている設定があるので、次のように使用します:setxkbmap -option 'caps:hyper'
ergosys

3

ではxmodmap、あなたは、2つのコマンドでこの動作を変更することができます:

## Hyper_L is mod4 by default, we will "move" it to Mod3
xmodmap -e "remove mod4 = Hyper_L"
xmodmap -e "add mod3 = Hyper_L"
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.