正しいaltを再マップして、正しいctrlとして動作する


8

右の親指を使ってボタンを押すことができるright altように、自分のright ctrlように動作するように再マッピングしようとしていctrlます。これはUbuntu 12.04です。

.Xmodmapファイルを次の内容でホームフォルダーに作成しました。

clear control
clear mod1
!keycode 64 = Alt_L Meta_L
keycode 108 = Alt_R Meta_R
add control = Control_L Control_R Alt_R
add mod1 = Alt_L Meta_L

ご想像のとおり、左のAltキーのキーコードは64、left altキーのキーコードは108です。

これは実際には、右のAltキーがキーを押したように動作するという意味で機能しctrlます。

しかし、私の左のaltキーはもう何もしません。つまり、altキーが残っていません。これは奇妙でxmodmap、次の出力が得られます。

xmodmap:  up to 4 keys per modifier, (keycodes in parentheses):

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

奇妙なことにcontrol、へのAlt_Rマッピングを削除すると、altキーが機能します。

(つまり、2行目を最後の行に変更します:)

add control = Control_L Control_R

私の正しいaltでさえ、私altを混乱させる鍵として振る舞います。制御線からAlt_Rマッピングを削除した後、の出力は次のようになりxmodmapます。

xmodmap:  up to 4 keys per modifier, (keycodes in parentheses):

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

皆さんが助けてくれることを願っています。

ps。このウェブサイトをソースとして使用ました。

回答:


6

キーボードレイアウト>>オプション>> Ctrlキーの位置>>右Altを右Ctrlとして単純に使用できるはずですが、これは機能しません。これはすでにDebianに対してBug#663218として提出されています。

1)〜/ .Xmodmapを削除して、新しく開始します。

2)ControlとMod1 をクリアする必要がないことに注意してください。これにより、必要なものだけを変更することが簡単になります。〜/ .Xmodmapは次のようにすべきです:

!Swap right control and right alt
remove Control = Control_R
remove Mod1 = Alt_R
keycode 105 = Alt_R
keycode 108 = Control_R
add Control = Control_R
add Mod1 = Alt_R

2

私のように、xmodmapで右Altを右Ctrlに切り替えることができなかった不幸な人の1人である場合は、これが役立つでしょう。

右のAltとeを押してéを取得した場合、この解決策はあなたのためです(改善が必要です)。

ターミナルでこれを実行します(xevでキーコードを確認してください):

xmodmap -e "keycode 108 = Alt_R Meta_R Alt_R Meta_R"

次に、このコードを.Xmodmapに入れます。

remove Control = Control_R
remove Mod1 = Alt_R
keycode 105 = Alt_R
keycode 108 = Control_R
add Control = Control_R
add Mod1 = Alt_R

このコードは、Alt_GrキーをAlt_Rに設定し、次にAlt_rをCtrl_Rと交換します。

ログアウト後もこれを保持したい場合は、〜/ .profileなどの起動シェルファイルに次のコマンドを入力します。

if [ -f $HOME/.Xmodmap ]; then
  xmodmap -e "keycode 108 = Alt_R Meta_R Alt_R Meta_R"
  /usr/bin/xmodmap $HOME/.Xmodmap
fi

ソース:質問1 質問2


1

Ubuntu 19.04では、マッピングをシステム全体に適用するには、2つのファイルを変更する必要があります。

  • / usr / share / X11 / xkb / symbols / altwin
  • / usr / share / X11 / xkb / symbols / pc

前のセクションに次のセクションを追加します。

// Ctrl is mapped to the Alt.
partial modifier_keys
xkb_symbols "right_alt" {
    key <LALT> { [ Alt_L, Meta_L ] };
    key <RALT> { type[Group1] = "TWO_LEVEL",
                 symbols[Group1] = [ Control_R, Control_R ] };
    modifier_map Mod1 { Alt_L, Alt_R, Meta_L, Meta_R };
    modifier_map Control { <LCTL>, <RALT> };
};

そして後者の代わりinclude "altwin(meta_alt)"include "altwin(right_alt)"


これは質問に答えて機能します。しかし、受け入れられた答えは正しいaltと正しいctrlを入れ替えます。これはもともと尋ねられたわけではありませんが、多くの人が探している解決策だと思います(右側に2つのコントロールがあるのはあまり便利ではありません)。正しいコントロールを正しいaltにマップする方法を追加していただけませんか?
テドワード
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.