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.