Belirli tuşları veya cihazları nasıl değiştiririm?

213

Ubuntu’daki bazı anahtarları yeniden açmanın bir yolunu arıyorum.

yani.

PgUp - Ana sayfa ya da PgDown - End 'i değiştirmek istiyorum.

Yerleşik komut veya araç Ubuntu / GNOME'da anahtarları yeniden atar mı?

    
sordu NES 05.02.2011 14:20

7 cevap

232

Uyarı: 2013 itibariyle, Ubuntu ve türevleri artık xmodmap kullanmıyor, bunun yerine xkb kullanın. Daha fazla bilgi için bkz. bu yanıt . Aşağıdaki cevap mevcut sürümler için artık geçerli değil.

Bazı tuşları yeniden programlamak için iki araç gerekir. İlk xev (komut satırı aracı) ve ikinci xmodmap (ayrıca komut satırı aracı) . Her ikisi de Ubuntu'da ekstra kurulum yapmadan kullanılabilir.

  1. Terminal penceresini başlatın ve xev dosyasını çalıştırın. Şimdi aktif ve bir tuşa basmanız için bekler. Ardından, davranışını değiştirmek istediğiniz tuşa basın. yani PgUp .

  2. xev , basılan tuş hakkında bazı bilgiler verecektir. Üçüncü çizgi önemlidir. Şuna benzer görünmelidir:

    state 0x10, keycode 110 (keysym 0xff55, Prior), same_screen YES,
    

    bu örnekte Prior , anahtarın o anda atanmış davranışının adıdır, sayı tuş kodu, anahtara tanınan iç kimliktir. Şimdi bunu başka bir anahtarla yapın, yani PgDown bu çıkışı verin

    state 0x10, keycode 115 (keysym 0xff56, Next), same_screen YES,
    

    Burada yine ilginç olan kısım keycode 115 ve Next - davranışın adı.

  3. Artık iki anahtarı değiştirmek istediğinizde xmodmap kullanın.

     xmodmap -e "keycode 110 = Next"
    

    Bu, klavyenizdeki tuş kodu 110 ile anahtarı Next eylemine değiştirir. Oldukça basit.

    Eşlemekte olduğunuz anahtarın ÜstKrkt tuşu ile kullanıldığında farklı bir anlamı olması gerektiğine dikkat edin (örneğin, İngiliz klavye düzenleri için, ÜstKrktr + 2 tırnak işaretleri verir) sonra ikincil komutu ilkinden sonra sıralayabilirsiniz. Örneğin, 53 kodlu anahtarın ters eğik çizgiyle normal olarak eşleşmesini istiyorsanız, ancak vardiyayla birlikte kullanıldığında çubuk sembolüne sahip olmak isterseniz:

     xmodmap -e "keycode 53 = backslash bar"
    

Ek bilgi: Bu eşlemelerin dizisi Anahtar , ÜstKrkt + Anahtar , mode_switch + , mode_switch + ÜstKrktr + Tuş , AltGr + Tuşu , AltGr + ÜstKrktr + Tuş . Bir sütunu atlamak için NoSymbol kullanın. Üstelik, buradaki tüm anahtar kelimelerin kapsamlı bir listesidir.

Not: Bu değişiklik sadece etkin X oturumu içindir ve yeniden başlatıldıktan sonra kaybolacaktır. Değişiklikleri kalıcı olarak kaydetmek istediğinizde, yukarıdaki komutlardan sonra aşağıdaki komutları çalıştırmanız gerekir:

xmodmap -pke >~/.Xmodmap

(ev dizininizde .Xmodmap adlı bir dosya oluşturur ( ~ ))

Ardından, .xinitrc komutunu koyduğunuz ana dizininizde xmodmap .Xmodmap adlı bir dosya oluşturmanız gerekir.

Artık değişiklikleri .Xmodmap olarak değiştirebilir ve değişiklikleri hemen görmek için konsoldan xmodmap .Xmodmap çalıştırabilirsiniz. % Co_de% değerindeki değişiklikler devam edecektir.

kaynak: Ubuntu Foruns

Bonus şeyler:

Yeniden eşleştirdiğiniz anahtarın bir duruma bağlı olarak farklı davranışı varsa ( sayısal klavyedeki tuşların NumLock'a nasıl bağlı olduğu gibi), değiştiricilerin listesini almak için .Xmodmap 'i yapmanız yeterlidir ve ardından şunu yaparsınız:

xmodmap -pm

Örneğin, sayısal klavyede virgül yerine bir süre almak istediğinizi varsayın (çoğu programcı için yararlıdır), ancak NumLock kapalıyken "silme" davranışını korumak istersiniz.

xmodmap -e "keycode 91 mod2 = KP_Delete period"

xmodmap -e "KEYCODE MODIFIER = behaviour behaviour_with_modifier" , çünkü mod2 bize xmodmap -pm öğesinin mod2 olduğunu, diğer adların ise Num_Lock 'deki tuşlara basılarak elde edildiğini söyler.

    
verilen cevap NES 08.02.2015 11:17
18

Bir Shift tuşunu taşımaya çalışıyorsanız, birkaç ekstra adım vardır:

 xmodmap -e "keycode 62 = Up" # Shift => Up
 xmodmap -e "keycode 111 = Shift_R" # Up => Shift
 xmodmap -e "add shift = Shift_R" # Make the new Shift key actually do shifting
 xmodmap -e "remove shift = Up" # Prevent the old Shift key from shifting
 xset r 62 # Make the new Up key autorepeat
 xset -r 111 # Prevent the new Shift key from autorepeating
    
verilen cevap cmcginty 17.12.2012 19:46
16

Daha yeni bir fikrim var. Sanırım "remap" ile tamamen farklı bir şey ifade edebilirsin ... ama cevabımı olduğu gibi bırakacağım ... (Yeniden nasıl atacağımı bilmiyorum Başka bir şekilde davranacak bir anahtar)

GÜNCELLEME : 'sonradan' onaylandı; (Yanlış soruya cevap verdim:) ... lütfen NES'in Topluluk Wiki cevabını (yukarıda kabul edildi) inceleyin.

Bir tuşa yeniden basmak için remap 'ın iki genel yolu vardır.

  • belirli bir programa yerel olarak
    (Farklı uygulamalar / pencerelerdeki farklı şeyler için bir anahtar kullanılabilir)
  • belirli bir kullanıcı için global olarak
    (bir tuş, tüm pencerelerde aynı işleve sahiptir)

'Bir programa yerel' yöntemleri için, bazen uygulamanın kendisinin sunduğu anahtar yönlerini değiştirmenin bir yolu vardır ... ör.

Firefox öğesinin keyconfig adlı bir eki var ... bazı bilgiler için MozillZine yayını

Ubuntu programlarının çoğu Gnome tabanlıdır ve bu Gnome uygulamalarının herhangi bir menü öğesi için tuş vurmayı değiştirmek için özel bir yardımcı program vardır ... Editable Menu Accelerator denir ... Bu çok 'dokunaklı' bir araçtır, fakat oldukça güçlü .. gconf-editor (Terminal veya Alt + F2 aracılığıyla) çalıştırarak etkinleştirebilirsiniz ... desktop - gnome - interface adresine gidin ve can_change_accels 'yi seçin. beğendiğiniz her şeyi sanallaştırmak için menü öğelerini değiştirin (program / pencere başına). İhtiyacınız olanı yaptığınız anda devre dışı bırakmanızı öneririz ..

Aksi takdirde Global kısayol tuşlarını ayarlayabilirsiniz. xbindkeys adlı bir program kullanıyorum. ve Ana Menü - Tercihler, Keyboard Shortcuts

adı verilen bir seçenek de bulunmaktadır.

xbindkeys kullanıyorsanız, bunu "Başlangıç ​​Uygulamaları" nıza eklemeniz gerekecektir (Ana Menü - Tercihler) ... Ayrıca (Stefano Palazzo'nun önerdiği gibi) daha önce xbindkeys hakkında daha ayrıntılı bir açıklama yazdım. bu sorubuntu sayfasını yanıtlayın

    
verilen cevap Peter.O 05.02.2011 15:04
8

İşte ENTER anahtarının eşleştirmesini SHIFT anahtarına nasıl değiştirmeyi denedim (ve tersi):

$ uname -a

RAPORLAR:

Linux box 2.6.32-37-generic #81-Ubuntu SMP Fri Dec 2 20:35:14 UTC 2011 i686 GNU/Linux

$ which xmodmap

RAPORLAR:

/usr/bin/xmodmap

$ which xev

RAPORLAR:

/usr/bin/xev

$ xev

(sonraki elli çizgiyi yok saymayın)

PRESS THE ENTER KEY (notice the third line):
KeyPress event, serial 33, synthetic NO, window 0x5600001,
    root 0x110, subw 0x0, time 263441120, (738,242), root:(771,314),
    state 0x0, keycode 36 (keysym 0xff0d, Return), same_screen YES,
    XLookupString gives 1 bytes: (0d)
    XmbLookupString gives 1 bytes: (0d)
    XFilterEvent returns: False

KeyRelease event, serial 33, synthetic NO, window 0x5600001,
    root 0x110, subw 0x0, time 263441271, (738,242), root:(771,314),
    state 0x0, keycode 36 (keysym 0xff0d, Return), same_screen YES,
    XLookupString gives 1 bytes: (0d)
    XFilterEvent returns: False

PRESS THE SHIFT KEY (notice the third line):
KeyPress event, serial 30, synthetic NO, window 0x5600001,
    root 0x110, subw 0x0, time 263592202, (464,368), root:(497,440),
    state 0x0, keycode 62 (keysym 0xffe2, Shift_R), same_screen YES,
    XLookupString gives 0 bytes:
    XmbLookupString gives 0 bytes:
    XFilterEvent returns: False

KeyRelease event, serial 33, synthetic NO, window 0x5600001,
    root 0x110, subw 0x0, time 263592298, (464,368), root:(497,440),
    state 0x1, keycode 62 (keysym 0xffe2, Shift_R), same_screen YES,
    XLookupString gives 0 bytes:
    XFilterEvent returns: False

Önemli olan her bir tuşa basmanın üçüncü satırı:

FOR:
state 0x0, keycode 36 (keysym 0xff0d, Return), same_screen YES,
The name "Return" is the name of the behavior of the key pressed.
The number of the key pressed is "36".

state 0x0, keycode 62 (keysym 0xffe2, Shift_R), same_screen YES,
The name "Shift_R" is the name of the behavior of the key pressed.
The number of the key pressed is "62".

EŞLEŞTİRMENİN TERSİNİ YAPIN:

$ xmodmap -e "keycode 62 = Return"
$ xmodmap -e "keycode 36 = Shift_R"

SONUÇLARI KAYDET:

$ xmodmap -pke > ~/.Xmodmap
$ vi ~/.xinitrc

ADD

 xmodmap ~/.Xmodmap

$ sudo reboot

Temel sorun, tersine çevirmenin çalışmadığıydı. ENTER tuşu SHIFT_R anahtarına eşlenmiştir; ancak SHIFT_R anahtarı ENTER anahtarına eşlenmedi. Git şekil.

    
verilen cevap Bill Davis 27.01.2012 04:04
6

X'ten bağımsız olarak global remaps yapmak için konsol kurulumunu (5) kullanabilirsiniz.

Benim durumumda Caps Lock anahtarını D olarak değiştirmek istedim, çünkü D -key bozuk:)

İlk önce dumpkeys (1) 'ı bir eşleme için bir şablon almak için kullandım, D -key durumunda, enteresan kod 32'nin eşlemesidir. (klavyemde); Grep düzeninde iki alan olduğunu unutmayın!

$ sudo dumpkeys | grep "keycode  32" > tempfile
$ cat tempfile
keycode  32 = +d
    shift   keycode  32 = +D
    altgr   keycode  32 = +eth
    shift   altgr   keycode  32 = +ETH
    control keycode  32 = Control_d
    shift   control keycode  32 = Control_d
    altgr   control keycode  32 = Control_d
    shift   altgr   control keycode  32 = Control_d
(121 lines total...)

Haritayı Caps Lock (klavyemde tuş kodu 58) 'e uygulanacak şekilde değiştirmek için

sed 's/32/58/' -i tempfile

Şimdi okuyor

keycode  58 = +d
    shift   keycode  58 = +D
    altgr   keycode  58 = +eth
(etc...)

Bu eşlemeyi varsayılan haritaya eklemek için, yalnızca remap'a eklenmelidir. konsol kurulumu

için dosya içerir
sudo sh -c 'cat tempfile >> /etc/console-setup/remap.inc'

ve konsol kurulumu 'nun yeniden yapılandırılması gerekiyor ( -phigh ile düşük öncelikli soruların atlanması)

sudo dpkg-reconfigure console-setup -phigh

Şimdi remap tamamlanmalı ve önyüklemede otomatik olarak yüklenmelidir.

    
verilen cevap arand 09.01.2014 13:09
3

Ctrl+Pageup için bir kısayol oluşturmaya çalışırken bir bütününü harcadım.

İlk xmodmap denedim ancak bu değiştirici olaylar oluşturamaz. Yani, örneğin Control olayını üreten bir kısayol oluşturmak imkansız.

Ardından xbindkeys 'si xmacro ile denedim. Bu tür işler, ancak xbindkeys , sistemimde Alt + ___ gibi bazı önemli kombinasyonları yakalayamıyor.

Sonunda Unity'nin kendi Klavye Kısayollarını kullandım - & gt; Kısayolumu kurmak için Özel Kısayollar.

Ve xmacro yerine, şimdi klavye olaylarını oluşturmak için xvkbd programını kullanıyorum, ancak bu sadece kişisel bir tercih. Her ikisi de xmacro ve xvkbd hemen hemen aynı. Ek bir ipucu, etkinliklerin kaybolmamasını sağlamak için xmacro veya xvkbd cinsinden bir gecikme parametresi eklemektir.

    
verilen cevap HRJ 20.01.2014 06:30
0

Yazılım Merkezi'nden AutoKey benim için en iyisini yaptı. Yeni bağlayıcı tıklama eklemek için sezgisel GUI'ye sahiptir. Yeni - & gt; İfade ve

  1. İsim ekleyin, Tamam'ı tıklayın
  2. "Cümle Ayarları" bölümünde, yapıştırmanın klavyeye ayarlandığından emin olun
  3. Kullanmak istediğiniz kısayol tuşunu ekleyin
  4. Metin alanına komut ekleyin, örneğin sol ok tuşunu öykünmek için - <left> olur (özel anahtarların listesi burada ).
verilen cevap bruddha 28.07.2018 14:15

Etiketlerdeki diğer soruları oku