Alt ve süper takas


27

Linux çalıştıran bir Macbook Air var. Klavyenin her iki tarafındaki altve supertuşlarını birbirleriyle değiştirmek istiyorum .

Bunu cli araçlarıyla nasıl yaparım?

Güncelleştirme

Drav Sloan'ın cevabını takiben aşağıdakileri kullandım:

keycode 64 = Alt_L
keycode 133 = Super_L
remove Mod1 = Alt_L
remove Mod4 = Super_L
add Mod1 = Super_L
add Mod4 = Alt_L

keycode 108 = Alt_R
keycode 134 = Super_R
remove Mod1 = Alt_R
remove Mod4 = Super_R
add Mod1 = Super_R
add Mod4 = Alt_R

1
İşin garibi, bir keresinde bototm yerine sadece ilk 6 satırı aldığımda ve bir dosyada xmobmap dosyasını çalıştırdığımda işler benim için çalıştı (mac air). Alt satırlarda hatalar yaptım.
Leo Ufimtsev

Yanıtlar:


20

Bunu başarmanın bir yolu bitti xmodmap. xevÖnemli olayları almak için koşabilirsiniz . xevBir kutu çalıştırıldığında görünmeli ve odaklanmalı ve değiştirmek istediğiniz tuşlara basmalısınız. AltAnahtara benzer detaylar vermelidir :

KeyPress event, serial 28, synthetic NO, window 0x8800001,
  root 0x25, subw 0x0, time 2213877115, (126,91), root:(1639,475),
  state 0x0, keycode 14 (keysym 0xffe9, Alt_L), same_screen YES,
  XLookupString gives 0 bytes: 
  XmbLookupString gives 0 bytes: 
  XFilterEvent returns: False

PC'deyim ve "Komut Tuşu" yok, ancak eşdeğeri "Windows Tuşu" var ve xev şunları veriyor:

KeyPress event, serial 28, synthetic NO, window 0x8000001,
  root 0x25, subw 0x0, time 2213687746, (111,74), root:(1624,98),
  state 0x0, keycode 93 (keysym 0xffeb, Super_L), same_screen YES,
  XLookupString gives 0 bytes: 
  XmbLookupString gives 0 bytes: 
  XFilterEvent returns: False

Xmodmap'ın hiçbir fikri olmadığı stateve anahtar eşlemeleri kolayca kırabildiği için, şunu yapmanızı öneririm:

xmodmap -pke > defaults

Sonra bir xmodmap dosyası yaratırız:

keycode 14 = Alt_L
keycode 93 = Super_L
remove Mod1 = Alt_L
remove Mod4 = Super_L
add Mod1 = Super_L
add Mod4 = Alt_L

xevDönen anahtar kodları nasıl kullandığımı not edin . Ayrıca burada sadece sol süper ve alt tuşları değiştiriyorum (ve doğru olanları eski davranışlarına bırakıyorum). Daha sonra xmodmapbu anahtarları ayarlamak için basitçe koşabiliriz :

$ xmodmap -v modmap.file
! modmap:
! 1:  keycode 14 = Alt_L
        keycode 0xe = Alt_L
! 2:  keycode 93 = Super_L
        keycode 0x5d = Super_L
! 3:  remove Mod1 = Alt_L
! Keysym Alt_L (0xffe9) corresponds to keycode(s) 0xe
        remove mod1 =  0xe
! 4:  remove Mod4 = Super_L
! Keysym Super_L (0xffeb) corresponds to keycode(s) 0x5d
        remove mod4 =  0x5d
! 5:  add Mod1 = Super_L
        add mod1 = Super_L
! 6:  add Mod4 = Alt_L
        add mod4 = Alt_L
!
! executing work queue
!
        keycode 0xe = Alt_L
        keycode 0x5d = Super_L
        remove mod1 =  0xe
        remove mod4 =  0x5d
        add mod1 = Super_L
        add mod4 = Alt_L

-vSessiz çalışma için (ayrıntılı) anahtarı olmadan çalıştırabilirsiniz, ancak modmap dosyanızda hata yaptıysanız yararlı buluyorum. İşler yolunda giderse, yalnızca varsayılanları yeniden uygulayın:

xmodmap defaults

Modmap genellikle X'in başlangıcında çalıştırılır, bu nedenle modmap komutlarınızı koyarsanız bunları varsayılan olarak uygulayabilirsiniz ~/.xmodmaprc.


Bunu yapmanın bir yolu var mı setxkbmap? Bununla setxkbmap -option compose:raltbirlikte seçeneği kullanmak istiyorum .

Swap_opt_cmd çözümünü başka bir cevapta kullandım, ancak bu çok fazla ve net bir şekilde yazıldığından dolayı bir artığı hak ediyor. Bravo efendim.
John Franklin

Teşekkürler. Xmodmap karıştı
Tim

26

Bunu bir Apple klavyesinde yapmak istiyorsanız, şunu deneyin:

echo 1|sudo tee /sys/module/hid_apple/parameters/swap_opt_cmd

Bunun Linux'un daha düşük bir sürümü için çalışmasını sağlamak için şunu deneyebilirsiniz: http://blog.chaselambda.com/2014/10/09/apple-keyboard-on-linux-3.8.html


Diğer cevaplar da işe yaramasına rağmen, bu Mac Kitaplar için bir çözümdür; bir cazibe gibi çalıştı!
sinisterstuf

1
Neden bu varsayılan değil ?!
John Franklin,

Bu dosyaya yazma erişimim yok. :-(
itmuckel

1
@ Micha90 - kullanmanız gereken tee: echo "1" | sudo tee /sys/module/hid\_apple/parameters/swap\_opt\_cmd
jaustin 6:16

2
Xmodmap'i yapılandırmak için bir saat geçirin. İşe yarıyor. Sonra 2. cevaba bakın ...
Bilow

17

Sadece sola kaydırmak istiyorsanız ve süper anahtar terminalinizde komutu yürütün:

setxkbmap -option altwin:swap_alt_win

Varsayılan davranışı geri yüklemek için sadece kullanın:

setxkbmap -option

Not: Bu geçicidir. Etkileri kalıcı olarak başlatmak istiyorsanız, başlangıç ​​dosyanıza ekleyin.


4
Bu temiz ve yerleşik bir işlev kullandığından kabul edilen çözüm olmalıdır. Sadece kullanabileceğiniz varsayılan davranışı geri yüklemek için bahsetmeliydin setxkbmap -option. Yalnızca istiyorsan takas sol alt ve süper tuşu , o zaman bu komutu kullanın: setxkbmap -option altwin:swap_lalt_lwin.
erik

1
Logitech klavyem var ve bu, windows anahtarımı (Süper_L) sol alt (Alt_L) ile değiştirmeye çalıştı. Teşekkürler!
Derek,

4
$ xmodmap -pke

Hangi alt ve alt anahtar kodlarının bağlı olduğunu not edin, ardından ana klasörünüzde yeni bir dosya açın / .xmodmaprc yapın. Örneğin, süper / alt anahtarlarım bunun gibi

keycode  64 = Alt_L Meta_L Alt_L Meta_L
keycode 108 = Alt_R Meta_R Alt_R Meta_R
keycode 133 = Super_L NoSymbol Super_L
keycode 134 = Super_R NoSymbol Super_R

Ancak anahtarları değiştirmek için aşağıdakini .xmodmaprc dosyasına koyarsınız.

keycode  64 = Super_L NoSymbol Super_L
keycode 108 = Super_R NoSymbol Super_R
keycode 133 = Alt_L Meta_L Alt_L Meta_L
keycode 134 = Alt_R Meta_R Alt_R Meta_R

Anahtar kodun / rol ilişkilerinin üzerine yazmak ... basit ve işe yarıyor. Çözümle kıyaslandığında herhangi bir sakınca olup olmadığını merak ediyorum remove ....
Ring Ø

grepÇıktıyı filtrelemek için kullanabileceğinizi unutmayın, böylece xmodmap -pke | grep -i "super\|alt"neye ihtiyacınız olduğunu görmeyi kolaylaştırabilirsiniz.
Benjamin R

0

Benim gibi tatsız insanlardan biriyseniz, xmodmap'ı Alt'ı sağa doğru Ctrl ile değiştiremeyen, o zaman belki bu yardımcı olacaktır.

Alt ve e tuşlarına basarsanız ve é alırsanız, bu çözüm tam size göre (iyileştirme ihtiyacı).

Terminalde bunu çalıştırın (xev ile tuş kodlarınızı kontrol edin):

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

sonra bu kodu .Xmodmap'inize koyun:

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

Bu kod Alt_Gr anahtarınızı Alt_R olarak ayarlar ve Alt_r'yi Ctrl_R ile değiştirir.

Oturumu kapattıktan sonra kalmasını istiyorsanız, başlangıç ​​komut dosyalarınızdan herhangi birine aşağıdaki komutları girin, örneğin ~ / .profile:

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

kaynaklar: soru1 soru2

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.