AltキーとWindowsキーをxmodmapと交換するにはどうすればよいですか?


9

通常のPCキーボードと比較してAlt / Win(つまり、オプション/コマンド)キーが逆になっているMacキーボードを持っています。それらを交換したいと思います。これまでxmodmapで運がありませんでした。標準構成は次のとおりです。

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

現在、左/右altキーは64と108のキーコードで、左/右ウィンドウキーは133と134です。

助けてくれてありがとう!


私にとって、これはAltとWinの両方のペアを交換しますsetxkbmap -device 8 dvorak -option altwin:swap_alt_win,ctrl:nocaps。正しいAltとWinを交換したいだけです。これは、左側のスワップを「キャンセル」しませんsetxkbmap -device 8 dvorak -option altwin:swap_lalt_lwin,altwin:swap_alt_win,ctrl:nocapsaltwin:swap_ralt_rwinによると、明らかにオプションはありませんman xkeyboard-config
Peter Becich

回答:


11

これは私のXmodmaprcです:

! Exchange left Alt and left Win
remove mod1 = Alt_L
remove mod4 = Super_L
add mod1 = Super_L
add mod4 = Alt_L
! Exchange tilde and lesser/greater
keycode  94 = grave asciitilde dead_grave dead_tilde grave asciitilde
keycode  49 = less greater less greater bar brokenbar bar brokenbar
! Steve, your keyboard sucks

xmodmap .Xmodmaprcを呼び出すには、.xsessionまたは.xinitrcを変更する必要があります。


7

私はこれをUbuntu 13.04で達成しました。クリストフの回答(これは役に立ちましたが、修飾子では機能せず、墓とチルドをデッドキーにする必要はありません)とsetxkbmapに関する別の回答で、設定のさまざまなオプションで遊んでいます。 keyboard-layout-options(ソースコードを見ても)コマンドを使用して現在の構成を検査しますsetxkbmap -query(これも実行する必要があります。特定のキーボードモデルとレイアウトコードが異なる可能性があるので確認してください)。

Appleキーボードに切り替えたときに呼び出すスクリプトが1つあります(altwin:swap_lalt_lwinAltキーとSuperモディファイアキーを入れ替えることが重要なオプションです)。

# clear all options
setxkbmap -model "pc105" -layout "hr,us" -option ""  

# set the Apple keyboard
setxkbmap -rules "evdev" -model "pc105" -layout "hr,us" -option "terminate:ctrl_alt_bksp,lv3:rwin_switch,grp:shifts_toggle,caps:ctrl_modifier,altwin:swap_lalt_lwin"

# swap the grave-tilde with less-greater key
#  - variant without dead keys
xmodmap -e "keycode  94 = grave asciitilde"
xmodmap -e "keycode  49 = less greater less greater bar brokenbar bar brokenbar"

そして、私が通常のキーボードに戻ったときに呼び出す別のもの:

# clear settings
setxkbmap -model "pc105" -layout "hr,us" -option ""

# pc keyobard
setxkbmap -rules "evdev" -model "pc105" -layout "hr,us" -option "terminate:ctrl_alt_bksp,lv3:rwin_switch,grp:shifts_toggle,caps:ctrl_modifier"

設定を追加したことに注意してください

terminate:ctrl_alt_bksp,lv3:rwin_switch,grp:shifts_toggle,caps:ctrl_modifier

ctrl + alt + backspace Gnomeセッションの終了、正しいWinキーを使用したレベル3のキーアクセス、両方のShiftキーを押してレイアウトをシフトし、Caps Lockを追加のCtrlに変更します(それぞれ)。それらの一部またはすべてを除外することができます。

AutoKeyを使用して、一部のキーボードショートカットに呼び出しをバインドしたり、自分.profileまたは.bashrcAppleのキーボードを常に使用している場合にそれから呼び出したりすることができます。


1
たくさんのブラブラ。左のAltキーとスーパーキーを入れ替えるだけの場合は、次のコマンドを使用しsetxkbmap -option altwin:swap_lalt_lwinます。左と右のAltキーとスーパーキーの両方を切り替える場合は、次のコマンドを使用しますsetxkbmap -option altwin:swap_alt_win
erik

いい答えです。しかし、正しい勝利と正しいalt(AltGr)だけを正確に行うにはどうすればよいですか?私は最近、私が使用していますように、右の勝利は、代わりにAltGrののスペースバーの隣にあるunicomp、だ
cessor

6

xkbとgnomeを使用するUbuntu 16.04で、altキーとsuperキーのすべてのショートカット動作を保持したい場合は、上記のChristopher Devineの回答と比較すると、いくつかの追加手順が必要であることがわかりました。これは私が見つけた最も簡単な解決策でした。

キーコード番号を取得するには、コマンドラインで、番号を取得するキー$ xev を入力します。詳細については、この投稿を参照してください:xevとxmodmapの使用法

そうすることで私に与える: Super_Lキーコード133 Alt_Lがキーコード64を持つ

したがって、Windows別名Command(Macの場合)別名Superキーを左Altキーと交換するには、次のようにします。

remove mod1 = Alt_L
remove mod4 = Super_L
keycode 133 = Alt_L
keycode 64 = Super_L
add mod1 = Alt_L  
add mod4 = Super_L

最後の2行は、Alt_LとSuper_Lが削除されたときと同じように、mod1とmod4をキーシムに追加します。これを行わないと、スーパーキー(検索)に関連付けられているショートカットが失われ、Alt + Tabコンボが解除されてウィンドウが切り替わります。

これらのコマンドを.xmodmapのようなファイルに追加すると、 $ xmodmap .xmodmapそれらが実行されます。

または、次のようにコマンドラインでこれらを順次実行することもできます。 $ xmodmap -e <expression here>

デフォルトのキーマッピングに戻したい場合は、次のように上記のコードの数値を逆にすることができます。

remove mod1 = Alt_L
remove mod4 = Super_L
keycode 64 = Alt_L
keycode 133 = Super_L
add mod1 = Alt_L  
add mod4 = Super_L

またはUbuntuでは私は単に実行します: $ setxkbmap


intellij内で、mod1とmod4でキーを交換するだけでAltキーが認識されないという問題がありました。しかし、これはintellijでキーコード作業を美しくリセットします。素晴らしい仕事
ジンバオ

2

hid_appleカーネルモジュールオプションを設定して、通常のPCキーボードではなく、アップルキーボードのみを変更することもできます。xkbmapやXmodmaprを使用する必要はありません。/etc/modules.d/hid_apple.confコンテンツを含むファイルを作成するだけです

options hid_apple iso_layout=0 fnmode=2 swap_opt_cmd=1

fnmode=2F1...F12を押す必要なしにファンクションキーをにマップしますFn。メディアキーを使用する場合は省略します。詳細はArch Wikiをご覧ください。

Ubuntuで永続的に

echo options hid_apple iso_layout=0 fnmode=2 swap_opt_cmd=1 | sudo tee -a /etc/modprobe.d/hid_apple.conf
sudo update-initramfs -u -k all

0

Waylandで機能しないため、将来的にはxmodmapを使用しないことをお勧めしますが、それはさておき、setxkbmapまたはxkbcompは今後使用するのに最適な方法であり、私のプロジェクトでKintoが使用しています。

Kintoは必要なキーを交換しますが、使用しているアプリをリッスンするため、Macでの経験と一致するように、ターミナルアプリの正しいキーマップを維持できます。

ここに関連リンクがありますが、Kintoの機能の中心部分も含めます。カスタムキーマップと代替キーマップ機能を除いて、Kintoが実際に何をしているのかを理解できます。

https://github.com/rbreaves/kinto

https://medium.com/@benreaves/kinto-a-mac-inspired-keyboard-mapping-for-linux-58f731817c0

https://gist.github.com/rbreaves/f4cf8a991eaeea893999964f5e83eebb

要旨

# permanent apple keyboard keyswap
echo "options hid_apple swap_opt_cmd=1" | sudo tee -a /etc/modprobe.d/hid_apple.conf
update-initramfs -u -k all

# Temporary & instant apple keyboard keyswap
echo '1' | sudo tee -a /sys/module/hid_apple/parameters/swap_opt_cmd

# Windows and Mac keyboards - GUI (Physical Alt is Ctrl, Physical Super is Alt, Physical Ctrl is Super)
setxkbmap -option;setxkbmap -option altwin:ctrl_alt_win

# Windows and Mac keyboards - Terminal Apps (Physical Alt is Super, Physical Super is Alt, Physical Ctrl is Ctrl)
setxkbmap -option;setxkbmap -option altwin:swap_alt_win

#
# If you want a systemd service and bash script to help toggle between
# GUI and Terminal applications then look at project Kinto.
# https://github.com/rbreaves/kinto
#
# Note: The above may not work for Chromebooks running Linux, please look
# at project Kinto for that.
#
# If anyone would like to contribute to the project then please do!
#
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.