Linux'ta konsol tuş haritasını nasıl değiştirebilirim?


36

Değişim yapmak Escve CapsLockkonsolda olmak istiyorum (X'te değil ve kullanmak xev), nasıl yapabilirim?

İşletim sistemim Ubuntu.

Yanıtlar:


60

Araçlar üzerinde klavye düzeni işlemek için sanal konsolları vardır loadkeys, dumpkeysve showkey. Sayfalarını okuyun ve inceliklerini inceleyin.

Bu araçların yalnızca sanal bir konsolda çalıştığını, gnome gibi grafiksel bir ortamda terminal emülatöründe çalışmadığını unutmayın. Fark hakkında bilgi edinmek için bu soruyu ve cevapları okuyun: https://askubuntu.com/questions/14284/why-is-a-virtual-terminal-virtual-and-what-why-where-is-the-real-terminal .

İstediğinizi yapmak için kısa bir rehber:

  1. Mevcut klavye düzeninizi kaydedin:

    $ dumpkeys > backup.kmap
    

    Bir şeyler ters giderse, aşağıdaki komutu kullanarak ana haritanızı geri yükleyebilirsiniz:

    $ sudo loadkeys backup.kmap
    

    Klavye o kadar karışıksa, bunu bile yapamazsınız o zaman antik çekirdek sihirini içermeyen tek seçeneğiniz yeniden başlatmaktır.

  2. Anahtarlarınıza hangi tuş kodlarının atandığını kontrol edin:

    $ showkey
    

    Şimdi ESC tuşuna ve CAPSLOCK tuşuna basın. Tuş kodları ekranda görünmelidir. Tuş kodlarını not edin. Sistemimde ESC 1 anahtar koduna sahip ve CAPSLOCK anahtar 58 koduna sahip. showkey10 saniye aktif olmadığında sona erecek (en azından benim ubuntu 10.04'ümde var).

  3. Boşaltma tuşlarından ESC ve CAPSLOCK anahtarlarının adlarını not edin:

    $ dumpkeys | grep 1
    ...
    keycode   1 = Escape
    ...
    $ dumpkeys | grep 58
    ...
    keycode  58 = CtrlL_Lock
    ...
    
  4. Dumpkeys'den gelen keymap satırını not edin:

    $ dumpkeys | head -1
    keymaps 0-127
    
  5. ESC ve CAPSLOCK anahtarlarını değiştiren bir keymap dosyası oluşturun:

    keymaps 0-127
    keycode   1 = CtrlL_Lock
    keycode  58 = Escape
    
  6. Tuş haritasını yükleyin:

    $ sudo loadkeys swap_esc_capslock.kmap
    
  7. Test: CAPSLOCK anahtarının test edilmesi açıktır. Sadece CAPSLOCK tuşuna basın ve diğer tuşların büyük harf olup olmadığını kontrol edin. ESC anahtarını test etmek için CTRL + V ve ardından ESC kullanabilirsiniz. Basmalı ^[. CTRL + V, kabuğun yorumlamak yerine bir sonraki anahtarı sözlü yazdırmasını sağlar.

Bu değişikliğin her yeniden başlatmaya yüklenmesini sağlamak için /etc/rc.localdosyanızı aşağıdaki satırı ekleyin :

/usr/bin/loadkeys /path/to/swap_esc_capslock.kmap

Aşağıdakiler dahil ancak bunlarla sınırlı olmamak üzere, çeşitli sayfalardan toplanan bilgiler:


5
sudo setupcon --saveRc.local dosyasını düzenlemek yerine değişiklikleri kalıcı yapmak için de kullanabilirsiniz . Bu aslında aynıdumpkeys < /dev/tty1 | gzip > /etc/console-setup/cached.kmap.gz
bukzor

Kullanımı daha güvenlidir /usr/bin/loadkeysiçinde /etc/rc.localyol ortam değişkeni bu aşamada ayarlanması garanti edilmez. Ve sudobuna gerek yok rc.local.
Ağustos Karlstrom

@AugustKarlstrom Komut rc.local, sistemin her önyüklemesinde çalıştırılır. @ bukzor en sudo setupconolduğu değil de rc.localherhangi bir çalışma zamanı başlatma kodu eklemeden, sistem varsayılan keymap yerini bir kerelik kurulum komut, var. Ekleme loadkeys için rc.local, fazladan kod ve zaten sistem varsayılan loadkeys tarafından yapılanlar çiftleri başlatmak ekler. Bu rc.localyöntem aslında daha az güvenli olabilir, çünkü anahtar eşlemenin standart olmayan bir yoluna bağlıdır.
RobertL

@RobertL, lütfen setupconyöntemi hazırlayın . İsterseniz kendi cevabınızı ekleyin veya benimkileri düzenleyin.
lesmana

@ Bukzor'un ifadesini doğrulayamıyorum setupcon. O Ağustos varsayımını icra ettikleri anlaşılıyor sudo setupcon --savegirecek rc.localben gerçek olduğunu düşünmüyorum hangi ama olursa, sen gerekmez sudoiçinde rc.local. Cevabınızı güncellemeden önce daha fazla bilgiye ihtiyacımız olduğunu düşünüyorum. Asıl soru "Önyükleme işlemi sırasında otomatik olarak yüklenecek şekilde değiştirilmiş keymap nasıl kurulur?" Hangisinin daha iyi bir yol olduğunu rc.localya da bir anahtar harita takmanın ya da bir anahtar harita takmanın işe yarayacağını bile bilmiyorum . Son zamanlarda bunu araştırıyorum ve burayı tekrar kontrol edeceğim.
RobertL

4

Eğer sadece iki capslocks anahtarına sahip olmak istiyorsanız 'ctrl: swapcaps' yerine 'ctrl: nocaps' kullanın (başka bir ismin capslock'u yine de kullanışsızdır).

X11: (ayrıca bkz: /usr/share/X11/xkb/rules/base.lst)

sudo vim /etc/default/keyboard
    XKBOPTIONS="ctrl:swapcaps"
udevadm trigger --subsystem-match=input --action=change
sudo restart lightdm

Metin konsolu: (setupcon'dan çalınmış)

#!/bin/sh
. /etc/default/console-setup 
. /etc/default/keyboard
ckbcomp $acm_option $rules_option -model "$XKBMODEL" \
            "$XKBLAYOUT" "$XKBVARIANT" "$XKBOPTIONS" \
            | gzip -9 2>/dev/null >/etc/console-setup/cached.kmap.gz
loadkeys /etc/console-setup/cached.kmap.gz
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.