Görkem Tekiner

Kişisel web sitem. Yazılarımı yayınlıyorum.


//

Linux’ta Caps Lock Gecikmesinin Çözümü

Eğer siz de benim gibi bilgisayarda yazı yazarken büyük harfler için “Caps Lock aç > harfi yaz > Caps Lock kapa” döngüsünü kullanan en fazla %1’lik niş kesimdenseniz, Linux dağıtımları kullanırken bu alışkanlığınızın bir soruna neden olduğunu fark etmişsinizdir. Bu sorun, büyük harf sonrası yazılan ilk küçük harfin de büyük yazılmasıdır (örn. BÜyük) ve evet, insanı felaket sinir eder. Dahası, şifre girerken de insanı çıldırtabilir.

Neyse ki bunun bir çözümü var, endişelenmeyin:

Nedir?

Çok basitçe ifade etmek gerekirse Linux dağıtımlarının masaüstü ortamlarında klavye yönetiminden XKB adındaki bir katman – kütüphane sorumludur. XKB vaktiyle X11 için geliştirilmiş bir uzantı olup, X11’in klavye noktasındaki eksikliklerini gidermeye çalışan bir ürün olsa da yıllar içerisinde standartlaşmış, o kadar ki günümüzde Wayland gibi X11’in yerini alan görüntüleme protokolü tarafından bile olduğu haliyle kullanılır.

XKB’nin tarihi oldukça eskiye dayandığından ve özünde desteklenebilecek her tür klavyeyi desteklemeye çalıştığından ne yazık ki günümüzde çok kısıtlı sayıda insan tarafından hatırlanan daktilo alışkanlıklarını bile içinde barındırır. Caps Lock ile alakalı olarak yaşanan bu sorun da işte tam olarak bu daktilo alışkanlıklarıyla alakalıdır hatta.

Yıllar içerisinde XKB’de tanımlı bu eski yollar genel kullanıcı kitlesi tarafından sıkıntılı olarak görülmediğinden dolayı da Caps Lock meselesi günümüze kadar gelmiş durumdadır.

Buna çözüm olarak da XKB’nin bazı kodlarını değiştireceğiz ve bu sorunu ortadan kaldıracağız. Yapacağımız iş tam olarak budur. Evet, sistem dosyalarıyla oynayacağımız için heyecanlanıyor olabilirsiniz ama, çok üstünde durmayın. Linux güzel tarafı budur. Bir şey size uymuyorsa değiştirebilirsiniz ve bu normaldir.

Çözüm Seçenekleri

İki farklı çözüm uygulayabiliyoruz ve ikisi de aslında birbirine son derece yakın şeyler. Aradaki en temel fark ilk çözüm yolu “tam” bir değişiklik sağlıyorken ikinci çözüm yolu ise “açılabilen ya da kapatılabilen” bir çözüm yolu sağlıyor. Hangisini tercih edeceğiniz tamamen size kalmış. Artıları ve eksilerini de belirteceğim:

UYARI
Bu çözümler, doğrudan sistem dosyalarına müdahale içerdiğinden bilgisayarınızı “yönetici” olarak kullanıyor olmanız şarttır. Eğer yönetici değilseniz, ne yazık ki bu değişikleri gerçekleştiremezsiniz.

Çözüm 1 – Tam Değişiklik

Bu çözüm dağıtım ve masaüstü ortamı fark etmeksizin kullanılabilecek, evrensel bir çözüm. XKB’ye kayıtlı Caps Lock davranışını tamamen değiştirecek. Eğer bir şekilde orijinal Caps Lock davranışına ihtiyaç duyacağınızı düşünüyorsanız ikinci çözüme geçmelisiniz.

Not: “Ben uğraşamam” diyecek olanlar için burada tarif edilen değişiklikleri hızlıca yapan Python script’i buradadır:
caps-cozum-1.py

İndirip, script’in olduğu klasörde terminal penceresi açıp “sudo python3 caps-cozum-1.py” komutunu vererek işlemi gerçekleştirebilirsiniz.

Adım 1)

“/” yani “root” konumundan

/usr/share/X11/xkb/symbols/

konumuna gidelim.

Dikkat: KDE’nin dosya yöneticisi root konumunu açıkça kullanıcıya sunar ve ekstra işlem gerektirmez. Cinnamon’un dosya yöneticisi de root konumunu açıkça kullanıcıya sunar ancak sadece salt-okunur olarak gezebilirsiniz. Bunu aşmak için Cinnamon’un dosya yöneticisinde herhangi bir yerdeyken “CTRL+L” kombinasyonuyla adres çubuğunu aktif etmeniz ve oraya

admin:///usr/share/X11/xkb/symbols/

yazarak Enter’a basmanız gerekir. Sistem sizden şifrenizi isteyecektir. Şifrenizi gezdikten sonra “Yükseltilmiş Ayrıcalıklarla Çalışıyor” ibaresini görebilir ve işleminizi rahatlıkla gerçekleştirebilirsiniz.

GNOME ise root konumunu kullanıcıya açıkça sunmaz. Erişmek için “Dosyalar”ı açtığınızda CTRL+L kombinasyonuyla adres çubuğunu görüp, oraya “/” yazdıktan sonra Enter’a basabilir ve root konumunda gezinebilirsiniz.

İpucu: GNOME Dosyalar’da hazır root konumundayken “CTRL+D” kombinasyonu kullanırsanız, sol panele root konumunun kısayolunun eklendiğini görebilirsiniz. İsterseniz sol panelde ilgili kısayola sağ tıklayarak yeniden adlandırmayı seçebilir ve zevkinize uygun bir isim verebilirsiniz.

Adım 2)

Bulunduğumuz konumda “pc” adındaki, hiçbir uzantısı da bulunmayan dosyayı sistemimizdeki herhangi bir metin düzenleyicisiyle açalım.

İpucu: Dosyaya çift tıkladığınızda genelde öntanımlı metin düzenleyicisiyle kendiliğinden açılacaktır ancak size seçenek sunulursa KDE için “KYaz (KWrite)” ya da “Kate”, GNOME için “Metin Düzenleyici (GNOME Text Editor)” ve Cinnamon için “Metin Düzenleyici (xed)” seçeneklerini kullanabilirsiniz.

Adım 3)

pc” dosyasında belli bir satırı düzenleyeceğiz. Aradığımız satır tam olarak şu:

key <CAPS> {[  Caps_Lock  ]};

Bu satırı olduğu gibi seçip silelim ve yerine bu bloğu yapıştıralım:

key <CAPS> {
		      type="ALPHABETIC",
		      repeat=No,
		      symbols[Group1]= [ Caps_Lock, Caps_Lock ],
		      actions[Group1]= [ LockMods(modifiers=Lock),
		                         LockMods(modifiers=Shift+Lock,affect=unlock) ]
};

Dosyanın son hali şöyle görünecek:

Yaptığımız değişikliği kaydetmek istediğimizde dağıtımımız bizden şifremizi girmemizi isteyecek (çünkü şu anda bir sistem dosyası düzenledik!). Şifremizi girip kaydetme işlemini tamamladıktan sonra kullandığımız metin düzenleyicisini kapatalım.

İpucu: Cinnamon’da bu şifre isteme ekranı gelmeyecek çünkü biz yönetici yetkisini daha klasörler arasında gezinirken almıştık.

Adım 4)

pc” dosyasında yaptığımız bu değişikliği devreye alabilmemiz terminal ekranından alttaki komutu çalıştıracağız:

sudo rm -rf /var/lib/xkb/*.xkm

Bu komut, XKB önbelleğini temizleyecek.

Adım 5)

Bilgisayarımızı yeniden başlatalım ve… İşlem tamamdır!

Çözüm 2 – Açılıp Kapatılabilen Değişiklik

Bu çözüm yolu ise biz istemediğimiz sürece Caps Lock’ın orijinal davranışını koruyacak ancak dosya düzenlemelerinden sonra biz spesifik olarak belirli bir ayarı aktif edince Caps Lock davranışı değişecek (ve normalleşecek). Bunun karşılığında Caps Lock’ın “modifier”larından bir tanesini feda edeceğiz. Eğer bu modifier’a bir şekilde ihtiyaç duyabileceğinizi düşünüyorsanız birini çözüm yoluna geçmelisiniz.

Not: “Ben uğraşamam” diyecek olanlar için burada tarif edilen değişiklikleri hızlıca yapan Python script’i buradadır:
caps-cozum-2.py

İndirip, script’in olduğu klasörde terminal penceresi açıp “sudo python3 caps-cozum-2.py” komutunu vererek işlemi gerçekleştirebilirsiniz.

Adım 1)

“/” yani “root” konumundan

/usr/share/X11/xkb/symbols/

Dikkat: KDE’nin dosya yöneticisi root konumunu açıkça kullanıcıya sunar ve ekstra işlem gerektirmez. Cinnamon’un dosya yöneticisi de root konumunu açıkça kullanıcıya sunar ancak sadece salt-okunur olarak gezebilirsiniz. Bunu aşmak için Cinnamon’un dosya yöneticisinde herhangi bir yerdeyken “CTRL+L” kombinasyonuyla adres çubuğunu aktif etmeniz ve oraya

admin:///usr/share/X11/xkb/symbols/

yazarak Enter’a basmanız gerekir. Sistem sizden şifrenizi isteyecektir. Şifrenizi gezdikten sonra “Yükseltilmiş Ayrıcalıklarla Çalışıyor” ibaresini görebilir ve işleminizi rahatlıkla gerçekleştirebilirsiniz.

GNOME ise root konumunu kullanıcıya açıkça sunmaz. Erişmek için “Dosyalar”ı açtığınızda CTRL+L kombinasyonuyla adres çubuğunu görüp, oraya “/” yazdıktan sonra Enter’a basabilir ve root konumunda gezinebilirsiniz.

İpucu: GNOME Dosyalar’da hazır root konumundayken “CTRL+D” kombinasyonu kullanırsanız, sol panele root konumunun kısayolunun eklendiğini görebilirsiniz. İsterseniz sol panelde ilgili kısayola sağ tıklayarak yeniden adlandırmayı seçebilir ve zevkinize uygun bir isim verebilirsiniz.

Adım 2)

Bulunduğumuz konumda “capslock” adındaki, hiçbir uzantısı da bulunmayan dosyayı sistemimizdeki herhangi bir metin düzenleyicisiyle açalım.

İpucu: Dosyaya çift tıkladığınızda genelde öntanımlı metin düzenleyicisiyle kendiliğinden açılacaktır ancak size seçenek sunulursa KDE için “KYaz (KWrite)” ya da “Kate”, GNOME için “Metin Düzenleyici (GNOME Text Editor)” ve Cinnamon için “Metin Düzenleyici (xed)” seçeneklerini kullanabilirsiniz.

Adım 3)

capslock” dosyasında belli bir bloğu düzenleyeceğiz. Aradığımız blok şuna benzer bir şey olacak:

// This changes the <CAPS> key to become a Control modifier,
// but it will still produce the Caps_Lock keysym; this is
// useful for apps that need to distinguish it from usual
// Control_L and Control_R.
hidden partial modifier_keys
xkb_symbols "ctrl_modifier" {
    replace key <CAPS> {
        type[Group1] = "ONE_LEVEL",
        symbols[Group1] = [ Caps_Lock ],
        actions[Group1] = [ SetMods(modifiers=Control) ]
    };
    modifier_map Control { <CAPS> };
};

Bu bloğu olduğu gibi seçip silelim ve yerine bu bloğu yapıştıralım:

// Bu ayar Caps Lock modifikasyonu aracılığıyla,
// Caps Lock'ın gecikmesiz çalışmasını sağlar. Bu
// değişiklikten sonra sistem ayarlarından "Caps
// Lock tuşunu ek Ctrl değiştirici yap, ancak Caps
// Lock olarak tanımlamayı sürdür" ayarının açılması
// gerekir.
hidden partial modifier_keys
xkb_symbols "ctrl_modifier" {
		  key <CAPS> {
		      type="ALPHABETIC",
		      repeat=No,
		      symbols[Group1]= [ Caps_Lock, Caps_Lock ],
		      actions[Group1]= [ LockMods(modifiers=Lock),
		                         LockMods(modifiers=Shift+Lock,affect=unlock) ]
		  };
};

Dosyanın son hali şöyle görünecek:

Yaptığımız değişikliği kaydetmek istediğimizde dağıtımımız bizden şifremizi girmemizi isteyecek (çünkü şu anda bir sistem dosyası düzenledik!). Şifremizi girip kaydetme işlemini tamamladıktan sonra kullandığımız metin düzenleyicisini kapatalım.

İpucu: Cinnamon’da bu şifre isteme ekranı gelmeyecek çünkü biz yönetici yetkisini daha klasörler arasında gezinirken almıştık.

Adım 4)

capslock” dosyasında yaptığımız bu değişikliği devreye alabilmemiz için açmamız gereken özellik masaüstü dağıtımımıza göre değişiyor. Ben de popüler üç farklı masaüstü ortamına göre bunu aktaracağım. Hangi masaüstü ortamını kullanıyorsanız ona göre yolu takip edin.

  • KDE Plasma

“Sistem Ayarları” açılır ve sol panelde bulunan seçeneklerden “Klavye” seçilir. Klavye ayarları altındayken pencerenin sağ üst bölümünde bulunan “Düğme Bağıntıları”na tıklanır. Düğme Bağıntıları altında “Klavye seçeneklerini yapılandır” seçeneği aktif edilir ve hemen altında bulunan onlarca farklı seçeneğin de aktifleştiği görülür. Bu seçenekler arasından “Caps Lock davranışı” maddesi seçilip genişletilir ve “Caps Lock tuşunu ek Ctrl değiştirici yap, ancak Caps Lock olarak tanımlamayı sürdür” seçilip “Uygula” butonuna basılır. İşlem Tamamdır!

  • GNOME

Eğer sisteminizde henüz kurulu değilse önce “GNOME İnce Ayarlar (GNOME Tweaks)” kurulur. İnce Ayarlar penceresinin sol panelinden Klavye seçilir ve “Ek Düzen Seçenekleri” açılır. Açılan ufak pencerede “Caps Lock davranışı” genişletilir ve sunulan seçenekler arasından “Caps Lock tuşunu ek Ctrl değiştirici yap, ancak Caps Lock olarak tanımlamayı sürdür” seçilip önce pencere sonra da İnce Ayarlar kapatılır. İşlem tamamdır!

  • Cinnamon

“Sistem Ayarları” açılır ve “Donanım” altından “Klavye” seçilir. “XKB Seçenekleri” sekmesi seçilir sol alt bölümden “+” butonuna tıklanır. Açılan pencerede “Caps Lock davranışı” seçilir ve gelen seçenekler arasından “Make Caps Lock an additional Ctrl” seçilir. Bu seçim pencereyi doğrudan bir önceki sayfaya döndürür ve seçiminizi listede görebilir hale gelirsiniz. Bundan sonra pencereyi kapatabilirsiniz. İşlem tamamdır.

Sonuç

Her iki çözüm yolunu da kendi ana makinemde test ettiğim gibi sanal makinelere kurduğum çeşitli dağıtımlarda da test ettim ve hepsinde sorunsuz bir şekilde çalıştığını belirtmeliyim. Ancak unutmamanız gereken bir handikap var:

40 yılda bir de olsa XKB’ye güncelleme gelirse, bu değişiklikler silinir.

XKB gerçekten kolay kolay güncelleme almaz ancak bu hiç olmayacağı anlamına da gelmiyor. Böyle bir durumu fark ettiğinizde tercih ettiğiniz çözüm yolunu tekrar uygulamanız kâfi olacaktır. Python script’lerini de biraz bu sebeple sağladım, el altında dursun diye. Gerek yeniden sistemi kurarsanız gerekse de pakete güncelleme gelirse hızlıca kullanabilin diye.

Fikrin çıkış noktası: https://forum.manjaro.org/t/caps-lock-behaviour-wayland/79868/8


Yorumunuzu Yazın