Linux console (Türkçe)/Keyboard configuration (Türkçe)
Klavye eşlemeleri (tuş eşlemi), konsol yazı tipleri ve Linux konsolu için konsol eşlemeleri, metin konsolunu yönetmek için birçok düşük seviyeli araç da sağlayan systemd'nin bir bağımlılığı olan kbd paketi tarafından sağlanır. Buna ek olarak, systemd hem konsol hem de Xorg için sistem yerelleştirmesini ve klavye düzeni ayarlarını kontrol edebilen localectl aracını sağlar.
Klavye ayarlarını görüntüleme
Geçerli klavye ayarlarını görüntülemek için localectl status
komutunu kullanabilirsiniz.
Tuş eşlemleri
Tuş eşlem dosyaları /usr/share/kbd/keymaps/
dizininde saklanır. Genellikle bir tuş eşlem dosyası bir klavye düzenine karşılık gelir (ortak parçaları paylaşmak için include
kullanılabilir ve bir tuş eşlem dosyası geçiş için kullanılan bazı tuş kombinasyonlarıyla birden fazla düzen içerebilir). Daha fazla ayrıntı için keymaps(5) bölümüne bakınız.
Tuş eşlemlerini listeleme
Konsol tuş eşlemlerinin adlandırma kuralları biraz keyfidir, ancak genellikle şunlara dayanır:
- Dil kodları: dil kodunun ülke koduyla aynı olduğu durumlarda (örneğin Almanca için
de
veya Fransızca içinfr
). - Ülke kodları: farklı ülkelerde aynı dilin varyasyonlarının kullanıldığı yerler (örneğin, Birleşik Krallık İngilizcesi için
uk
veya Amerika Birleşik Devletleri İngilizcesi içinus
); ülke kodlarının bir listesi #Resmi olarak atanmış kod unsurları burada da bulunabilir. - Klavye düzenleri: düzeninin belirli bir ülke veya dille ilgili olmadığı durumlarda (örneğin Dvorak klavye düzeni için
dvorak
).
Mevcut tüm tuş eşlemlerinin bir listesi için şu komutu kullanın:
$ localectl list-keymaps
Bir tuş eşlemini aramak için, arama
yerine dilinizin, ülkenizin veya düzeninizin kodunu yazarak aşağıdaki komutu kullanın:
$ localectl list-keymaps | grep -i arama
Alternatif olarak, find kullanarak:
$ find /usr/share/kbd/keymaps/ -type f -name "*search_term*"
Loadkeys komutu
Sadece mevcut oturum için bir tuş eşlemi ayarlamak mümkündür. Bu, farklı tuş eşlemelerini test etmek, sorunları çözmek vb. için kullanışlıdır. Bu amaçla loadkeys aracı kullanılır:
# loadkeys tuş eşlemi
Detaylar için loadkeys(1) bölümüne bakabilirsiniz.
Aynı araç /etc/vconsole.conf
içinde ayarlanan tuş eşlemini yüklerken systemd-vconsole-setup(8) tarafından olarak kullanılır.
Kalıcı yapılandırma
Başlangıçta systemd tarafından okunan /etc/vconsole.conf
dosyasında kalıcı bir tuş eşlemi ayarlanabilir. Tuş eşlemini belirtmek için KEYMAP
değişkeni kullanılır. Değişken boşsa veya ayarlanmamışsa, us
tuş eşlemi varsayılan değer olarak kullanılır. Tüm seçenekler için vconsole.conf(5) bölümüne bakabilirsiniz. Örneğin:
/etc/vconsole.conf
KEYMAP=uk
Kolaylık için, konsol tuş eşlemini ayarlamak için localectl kullanılabilir. Bu, /etc/vconsole.conf
içindeki KEYMAP
değişkenini değiştirecek ve aynı zamanda mevcut oturum için tuş eşlemini ayarlayacaktır:
# localectl set-keymap --no-convert tuş eşlemi
--no-convert
seçeneği localectl
'in Xorg tuşeşlemini otomatik olarak en yakın eşleşmeye değiştirmesini önlemek için kullanılır. Daha fazla bilgi için localectl(1) bölümüne bakabilirsiniz.
Eğer gerekirse, /etc/vconsole.conf
yapılandırma dosyasındaki tuş eşlemi, mkinitcpio sayesinde tuş eşlemi erken kullanıcı alanı sırasında yüklenebilir.
- Özel tuş eşleminizi
/usr/share/kbd/keymaps/
dışında bir yere kaydettiyseniz,vconsole.conf
yapılandırma dosyasına özel tuş eşleminizin tam yolunu veya yukarıdaki localectl komutunu kullanırken belirtmelisiniz. /etc/vconsole.conf
içindekiXKB*
değişkenleri Xorg'un klavye yapılandırması içindir. Fakat ne loadkeys ne de Xorg bu değişkenleri kullanmayı desteklemiyor. Bakınız: [1]
Özel bir tuş eşlemi oluşturma
Konsolu kullanırken, belirli bir karakteri yazdırmak için kısayol tuşlarını kullanabilirsiniz. Ayrıca bir dizi karakteri ve bazı çıkış dizilerini de yazdırabiliriz. Böylece, bir komutu oluşturan karakter dizisini ve ardından yeni bir satır için bir çıkış karakterini yazdırırsak, bu komut çalıştırılacaktır.
Bunu yapmanın bir yolu tuş eşlem dosyasını düzenlemektir.
Ancak, ait olduğu paket her güncellendiğinde yeniden yazılacağından, bu dosyayı düzenlemeniz önerilmez. Mevcut tuş eşlemini kişisel bir tuş eşlemi ile birleştirmek daha iyidir. Bunu loadkeys
komutu ile yapabilirsiniz.
İlk olarak, bir tuş eşlem dosyası oluşturun.Bu tuş eşlem dosyası herhangi bir yerde olabilir, ancak bir yol /usr/local
dizinini taklit etmektir:/usr/local/share/kbd/keymaps
dizinini oluşturun, ardından /usr/local/share/kbd/keymaps/personal.map
dosyasını düzenleyin.
Bir not olarak, bir kişisel tuş eşleminin, varsayılan tuş eşlemi tarafından zaten işlenen tuşların davranışını yeniden tanımlamak için de yararlı olduğunu belirtmek gerekir. loadkeys
ile yüklendiğinde, varsayılan tuş eşlemindeki yönergeler yeni yönergelerle çakıştığında değiştirilecek ve aksi takdirde korunacaktır. Bu şekilde, kişisel tuş eşleminde yalnızca tuş eşlemindeki değişiklikler belirtilmelidir.
- Ayrıca
/usr/share/kbd/keymaps/
dizininde bulunan bir tuş eşlemini de düzenleyebilirsiniz. Tuş eşlemleri .map.gz ile biter. Örneğinus.map.gz
Amerikan tuş eşlemidir. Tuş eşlemini/usr/local/share/kbd/keymaps/personal.map.gz
dizinine kopyalayın ve gunzip komutunu çalıştırın. - Özel tuş eşlemi
/etc/vconsole.conf
içinde ayarlanarak kalıcı hale getirilebilir.mkinitcpio.conf
yapılandırma dosyasınınHOOKS
kısmında eğerkeymap
yerinesd-vconsole
kullanıyorsanız, özel tuş eşlem dosyanızı/usr/share/kbd/keymaps/
içine yerleştirebilirsiniz. Bu şekilde/usr/share/kbd/keymaps
'deki bağımlılıklar mkinitcpio tarafından otomatik olarak ramdisk imajına eklenecektir. Öte yandan, özel tuş eşlem dosyanızı/usr/local/
altına yerleştirirseniz, bağımlılıklarınımkinitcpio.conf
yapılandırma dosyasının içindekiFILES
kısmında belirtmeniz gerekecektir.
Adding directives
Two kinds of directives are required in this personal keymap. First of all, the keycode directives, which matches the format seen in the default keymaps. These directives associate a keycode with a keysym. Keysyms represent keyboard actions. The actions available include outputting character codes or character sequences, switching consoles or keymaps, booting the machine, and many other actions. The full currently active keymap can be obtained with
# dumpkeys -l
Most keysyms are intuitive. For example, to set key 112 to output an 'e', the directive will be:
keycode 112 = e
To set key 112 to output a euro symbol, the directive will be:
keycode 112 = euro
Some keysym are not immediately connected to a keyboard actions. In particular, the keysyms prefixed by a capital F and one to three digits (F1-F246) constituting a number greater than 30 are always free. This is useful directing a hotkey to output a sequence of characters and other actions:
keycode 112 = F70
Then, F70 can be bound to output a specific string:
string F70 = "Hello"
When key 112 is pressed, it will output the contents of F70. In order to execute a printed command in a terminal, a newline escape character must be appended to the end of the command string. For example, to enter a system into hibernation, the following keymap is added:
string F70 = "sudo systemctl hibernate\n"
Other examples
- To make the Right Alt key same as Left Alt key (for Emacs), use the following line in your keymap. It will include the file
/usr/share/kbd/keymaps/i386/include/linux-with-two-alt-keys.inc
, check it for details.
include "linux-with-two-alt-keys"
- To swap CapsLock with Escape (for Vim), remap the respective keycodes:
keycode 1 = Caps_Lock keycode 58 = Escape
- To make CapsLock another Control key, remap the respective keycode:
keycode 58 = Control
- To swap CapsLock with Left Control key, remap the respective keycodes:
keycode 29 = Caps_Lock keycode 58 = Control
Saving changes
In order to make use of the personal keymap, it must be loaded with loadkeys:
# loadkeys /usr/local/share/kbd/keymaps/personal.map
However this keymap is only active for the current session. In order to load the keymap at boot, specify the full path to the file in the KEYMAP
variable in /etc/vconsole.conf. The file does not have to be gzipped as the official keymaps provided by kbd.
Adjusting typematic delay and rate
The typematic delay indicates the amount of time (typically in milliseconds) a key needs to be pressed and held in order for the repeating process to begin. After the repeating process has been triggered, the character will be repeated with a certain frequency (usually given in Hz) specified by the typematic rate. These values can be changed using the kbdrate command. Note that these settings are configured separately for the console and for Xorg.
# kbdrate [-d delay] [-r rate]
For example to set a typematic delay to 200ms and a typematic rate to 30Hz, use the following command:
# kbdrate -d 200 -r 30
Issuing the command without specifying the delay and rate will reset the typematic values to their respective defaults; a delay of 250ms and a rate of 11Hz:
# kbdrate
Systemd service
A systemd service can be used to set the keyboard rate. For example:
/etc/systemd/system/kbdrate.service
[Unit] Description=Keyboard repeat rate in tty. [Service] Type=oneshot RemainAfterExit=yes StandardInput=tty StandardOutput=tty ExecStart=/usr/bin/kbdrate --silent --delay 250 --rate 30 [Install] WantedBy=multi-user.target
Then start/enable the kbdrate.service
systemd service.
Layout switching
Layout switching can only be simulated by establishing a different layout on one of the higher layers (typically the 3rd, AltGr
).
For a list of layouts that likely support this, run
$ find /usr/share/kbd/keymaps -exec zgrep -l 'AltGr_Lock' '{}' ';'
You can test this by passing main and augmenting layout to loadkeys, e.g.
# loadkeys us mk
If it worked, the 3rd level shift (AltGr
) will allow you to access the second layout, the AltGr_Lock
(often Alt+Shift
, you will have to inspect the keymap file with zless) will provide an effective toggle.
For a permanent configuration, set the KEYMAP_TOGGLE
next to the KEYMAP
in /etc/vconsole.conf
.