remap alt kanan untuk berperilaku sebagai ctrl kanan

8

Saya mencoba untuk memetakan saya right altuntuk berperilaku seperti saya right ctrlsehingga saya dapat menggunakan ibu jari kanan saya untuk menekan ctrltombol. Ini adalah Ubuntu 12.04.

Saya telah membuat file .Xmodmap di folder rumah saya dengan konten berikut:

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

Seperti yang Anda duga, tombol alt kiri saya memiliki kode kunci 64 dan left altkunci saya memiliki kode kunci 108.

Ini sebenarnya bekerja dalam arti bahwa tombol alt kanan saya berperilaku seolah-olah saya menekan ctrltombol.

Namun altkunci kiri saya sekarang tidak melakukan apa-apa lagi, yang berarti saya tidak memiliki altkunci yang tersisa. Ini aneh mengingat xmodmapmemberikan hasil sebagai berikut:

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)

Yang aneh adalah bahwa ketika saya menghapus pemetaan Alt_R ke atas control, altkunci berfungsi.

(mis., ubah baris kedua menjadi baris terakhir :)

add control = Control_L Control_R

Sekarang bahkan alt kanan saya berperilaku sebagai altkunci yang membingungkan saya. Setelah menghapus pemetaan Alt_R dari garis kontrol, output dari xmodmapmemberi:

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)

Semoga kalian bisa membantu.

ps. Saya menggunakan situs web ini sebagai sumber.

Hoogendijk
sumber

Jawaban:

6

Anda harus dapat menggunakan Layout Keyboard >> Opsi >> posisi tombol Ctrl >> Alt Kanan sebagai Ctrl Kanan , tetapi ini tidak berhasil. Ini sudah diajukan terhadap Debian sebagai Bug # 663218

1) Mulai segar dengan menghapus ~ / .Xmodmap.

2) Perhatikan bahwa Anda tidak perlu menghapus Control dan Mod1. Ini membuatnya lebih mudah untuk mengubah hanya apa yang Anda inginkan. ~ / .Xmodmap Anda harus:

!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
chaskes
sumber
2

Jika Anda adalah salah satu orang yang kurang beruntung seperti saya yang tidak bisa mendapatkan xmodmap untuk beralih Alt kanan dengan Ctrl kanan, maka mungkin ini akan membantu.

Jika Anda menekan Alt kanan dan e dan Anda mendapatkan é maka solusi ini adalah untuk Anda (perlu perbaikan).

Jalankan ini di terminal (periksa kode kunci Anda dengan xev):

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

lalu letakkan kode ini di .Xmodmap Anda:

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

Kode ini mengatur kunci Alt_Gr Anda ke Alt_R, dan kemudian menukar Alt_r dengan Ctrl_R.

Jika Anda ingin ini tetap setelah Anda keluar, masukkan perintah berikut di salah satu file shell startup Anda, misalnya ~ /. Profil:

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

sumber: question1 question2

Mugur 'Bud' Chirica
sumber
1

Di Ubuntu 19.04, Untuk membuat pemetaan seluruh sistem, Anda harus mengubah dua file:

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

Tambahkan bagian berikut ke yang sebelumnya:

// 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> };
};

Dan gantikan include "altwin(meta_alt)"dengan include "altwin(right_alt)"yang terakhir.

ilyuha21st
sumber
Ini menjawab pertanyaan dan berhasil. Tetapi jawaban yang diterima menukar alt dan ctrl kanan. Ini pada awalnya tidak ditanyakan, tetapi saya pikir ini adalah solusi yang banyak dicari (memiliki dua kontrol di sebelah kanan tidak begitu berguna). Maukah Anda menambahkan cara memetakan kontrol yang benar ke alt yang benar?
Tedward