web-dev-qa-db-ja.com

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

Alt/Win(つまりOption/Command)キーが通常のPCキーボードとは逆になっている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であり、左/右のWindowsキーは133および134です。

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

9
Daniel Schuler

これは私の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を変更する必要があります

11

私はUbuntu13.04で、クリストフの答えを組み合わせることでこれを達成しました(これは私を助けましたが、修飾子では機能せず、デッドキーであるためにGraveとtildeは必要ありません) setxkbmapに関する別の答え 、 settings-keyboard-layout-optionsのさまざまなオプションで遊んで( ソースコード を見ても)、コマンドsetxkbmap -queryを使用して現在の構成を調べます(これも実行する必要があります。特定のキーボードモデルとレイアウトコードは異なる場合があります)。

Appleキーボードに切り替えるときに呼び出すスクリプトが1つあります(AltキーとSuper修飾キーを交換するための重要なオプションはaltwin:swap_lalt_lwinです):

# 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"

そして、通常のキーボードに戻ったときに呼び出すもう1つのもの:

# 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 を使用して呼び出しをキーボードショートカットにバインドするか、Apple)を使用する場合は.profileまたは.bashrcから呼び出すことができます。いつもキーボード。

7
metakermit

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

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

そうすることで私は次のようになります:Super_Lキーコード133Alt_Lキーコード64があります

したがって、Windowsの別名コマンド(Macの場合)別名スーパーキーを左の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行は、mod1とmod4を、削除されたときと同じようにAlt_LとSuper_Lのkeysymに追加し直します。これを行わないと、スーパーキー(検索)に関連付けられているショートカットが失われ、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

6
Trevor Owens

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

options hid_Apple iso_layout=0 fnmode=2 swap_opt_cmd=1

fnmode=2は、Fnを押すことなく、ファンクションキーをF1...F12にマップします。メディアキーが必要な場合は省略してください。詳細については、 Arch Wiki を参照してください。

buntuで永続的に

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
2
sebastian

ウェイランドでは機能しないため、将来的に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-58f731817c

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!
#
0
R Ben R