Powered By Blogger

18 Nisan 2016 Pazartesi

Bir yazılımcı olarak F Klavye yi özelleştirmek ve kullanmak.

Yaklaşık üç aydır klavyeyi daha verimli kullanmak ve kodlama yapıyorken hız kazanmak için on parmak klavye öğrenmeye karar verdim. Tercihimi ise F klavyeden yana kullandım. Nede olsa bilimsel olarak araştırma yapılarak oluşturulmuş bir klavye idi ve uluslararası stenografi yarışmalarında başarısını fazlası ile ispat etmişti. Özetle, F klavye seçim kararı öncesinde uzun uzun yaptığım araştırmalar bana seçimimin ne kadar doğru olduğunu gösteriyordu.

Çalışmalarımın ilk iki ayında düz metin yazıları çalıştım. Samimi olarak itiraf etmeliyim ki yirmi yılı aşkın bir süredir Türkçe Q klavye kullanan birisi için yeni bir klavye öğrenmek başlangıçta çok zor bir süreç. Hafızaya kazınmış olan motor hareketler siz istemeseniz de parmaklarınızı otomatik olarak yanlışa yönlendiriyor. Temel harfleri öğrendikten sonra hızlanmak ve performanslı bir şekilde klavyeye hakim olmak; temel harflerin yerini öğrendikten sonra bir kaç haftalık bir çalışma gerektiriyor; ki bu bir genelleme olmamak kaydı ile benim tecrübelerimde bu şekilde gerçekleşti. Toplamda ise üç aylık süre sonunda düz yazı ile F klavye çalışıyorken beklentimin de ötesinde hızlanma sağladım.  "Yaşasın!" dedim kendi kendime. Artık on parmak klavye kullanıyordum ve klavyeye bakmadan hızlı bir şekilde yazabilmek tarifsiz bir keyifti. Taki iş program kodlamaya gelinceye dek.

F klavye ile kısa bir süre yazılım geliştirme denemeleri yaptığımda acı gerçekle yüzleşme vaktinin geldiğini anlamam çok kısa sürdü: Bir yazılımcı iseniz kodlama yapıyorken F klavye gerçekten de işleri zorlaştırıyordu. İşin aslı Türkçe Q klavye ile de sonuç aynıydı (Tecrübe ile sabit!). Oysa ben daha verimli ve hızlı bir şekilde program geliştirebilmek için F klavye öğrenmiştim. İşte tam bu sırada bir karar vermem ve edindiğim F klavye tecrübelerini bir şekilde faydalı hale getirmem; programlama yapıyorken de bir şekilde F klavyeyi kullanabilmem gerektiğini anladım.

Temel olarak izlediğim yol şu şekilde oldu:
- Temel olarak Standart F klavye düzenine sadık kalmak,
- Kodlama yapıyorken hiç bir şekilde kullanılmayan ve İngiliz alfabesinde bulunmayan  "Türkçe Karakterleri" kaldırmak. (Aslında zor kullanır hale getirmek daha doğru bir anlatım olur.)
* İlk olarak standart F klavyedeki Türkçeye özel " ıİ öÖ ğĞ çÇ üÜ şŞ" karakterleri yerine, program yazıyorken sıklıkla kullanılan İngilizce karakterler ile beraber =!  _? () {} \/ ., :; karakterlerine öncelik verdim.
* Standart F klavye düzeninden kaldırdığım Türkçeye özel " ıİ öÖ ğĞ çÇ üÜ şŞ " karakterlerini ise AltGr ile AltGr+Shift kombinasyonlarında kullandım.
- Ve tüm bunları yapıyorken de kullandığım işletim sisteminde kendim için "geliştirdiğim" "Özelleştirilmiş F Klavye" yi tanıttım.

Yukarıda temel maddeler halinde sıraladığım başlıklar kısa ve kolay görünsede uygun ve doğru bir araç bulmak için oldukça uzun bir süre araştırma yapmam gerekti. Bu iş için bulduğum araç hem kullandığım Windows (10 + 8 + 7 + XP + NT tabanlı Windows Server 2000+2003+2008+2012 -> tüm x86+x64 ve Itanium işlemci destekleri) işletim sistemi ile yüzde yüz uyumluydu hemde Microsoft un kendisi tarafından üretilmişti: "Microsoft Keyboard Layout Creator 1.4" (Kurulum linkine ve detaylara şuradan ulaşabilirsiniz: https://msdn.microsoft.com/en-us/goglobal/bb964665.aspx )

Sonraki ve en zor olan adım ise yeni klavye düzeninde hangi harflerin klavyenin neresinde konumlandırılacağı idi. İlk olarak kendi yazdığım yazılım arşivinden sıklıkla kullandığım özel karakterlerin istatistik bilgilerini derledim. (Derleme için yazdığım kısa kod parçacığını aşağıda sizlerle paylaşıyorum. Üzerinde istediğiniz gibi değişiklik yapabilir yada kendinizin kullandığı dile göre revize edebilirsiniz.). Yoğun olarak  "Microsoft Visual Foxpro" + SQL ile kodlama yaptığım bu arşivin yanında C#, Python ve JavaScript ile birkaç kütüphaneden programlamada dillerinde sıklıkla kullanılan karakterlere ait istatistik verileri ekledim. Elde ettiğim sonuç; standart az-AZ diziliminden sonra öncelikli karakterlin ne şekilde yerleşmesine karar vermemi sağladı. Ancak tekrar altını çizerek ifade etmeliyim ki bu özelleştirilmiş klavye seçimi tamamen benim kodlama stilim ve kullandığım dillere özel olarak oluşturuldu. Sizde kendi kullandığınız dil ve kodlama standartlarınıza göre istediğiniz klavye düzenini oluşturabilirsiniz.

Klavye düzenine ait görselleri, ve  "Microsoft Keyboard Layout Creator 1.4" ile kendi özelleştirdiğim ".klc" uzantılı klavye dosyasını ve bu klavye düzenini Windows işletim sistemine kurmanız için gerekli olan tüm kurulum dosyalarını ekteki linklerde bulabilirsiniz.

F klavye öğreniyorken sıklıkla kullandığım www.m5bilisim.com sitesinin geliştiricisi Mustafa Bey 'e; ayrıca bir çok forumda ve facebook da paylaşımlarından ve önerilerinden yararlandığım "Mustafa Boz" a teşekkürlerimi özel olarak iletiyorum. Bu iki harika insanın katkıları ve önerileri olmadan F Klavye yi öğrenmem asla bu kadar hızlı ve kolay olamazdı.

Denizde bir damla misali; F Klavyenin, bir yazılımcı için de kullanılabilir olabilmesi adına kendi yeteneklerim ve tecrübelerime dayanarak bir adım attığıma inanıyorum, dilerim bir başlangıç olan bu adım tüm yazılım geliştiricilerin işine yarar ve bu makale, konu ile ilgili akademik çalışma yapan insanlara yol gösterici olur.

Sevgiyle kalın,

Uğur YILMAZ
(ugurlu2001 [at]  hotmail [dot]  com)


Program Geliştirmek için özelleştirilmiş F English Klavye düzeni.


--------
Program Geliştirmek için özelleştirilmiş F English Klavye düzeni.  ( SHIFT )


--------
Program Geliştirmek için özelleştirilmiş F English Klavye düzeni.  ( AltGr )

--------
Program Geliştirmek için özelleştirilmiş F English Klavye düzeni.  ( AltGr +Shift)



----------
VFP kod örneği : Karakter sayısını hesaplamak için

*!* Author: Ugur YILMAZ
*!* karakter_say.prg -> Developed by Microsoft Visual Foxpro
*!* Kodlamada kullanılan özel karakterler için Karakter Sayıcı -> Character Counter for development chars at your source code
CLEAR 

LOCAL lcString As String, laString(1), lni, laSpecialKeys(255,2), lnAscChar 

FOR m.lni = 1 TO 255
m.laSpecialKeys(m.lni,1) = CHR(m.lni)
m.laSpecialKeys(m.lni,2) = 0
* ?? Chr(m.lni)
ENDFOR 

m.lcString = Filetostr(Getfile('prg','Karakter Saymak İstediğiniz Dosyayı Seçiniz?','Seçiminiz?'))
Alines(laString,m.lcString,1)

LOCAL lnDiziBoy, lnSatirBoy
m.lnDiziBoy = Alen(lastring,1)
FOR m.lnx = 1 TO m.lnDiziBoy 
m.lnSatirBoy = Len(lastring[m.lnx])
FOR m.lnz = 1 TO m.lnSatirBoy
m.lnAscChar = Asc(Substr(lastring(m.lnx),m.lnz,1))
laSpecialKeys(lnAscChar ,2) = laSpecialKeys(lnAscChar ,2) + 1
ENDFOR 
ENDFOR 

CREATE CURSOR CrsChar(CharName C(1), Sayac Int)
INSERT INTO CrsChar FROM ARRAY laSpecialKeys 

SELECT * FROM CrsChar ;
WHERE ;
Sayac >= 1 AND ;
!Empty(CharName) AND Asc(CharName) >= 33 AND ;
( Between(ASC(CharName),33,47) OR Between(ASC(CharName),58,64) OR Between(ASC(CharName),91,96) ;
OR Between(ASC(CharName),123,126));
ORDER BY Sayac Desc

1 yorum:

  1. Merhabalar. Ben de aynı soruna çözüm ararken yazınıza denk geldim. Gerçekten faydalı oldu. x q w gibi İngilizce harflerin de yerini değiştirmişsiniz. Onları yerinde bıkarak sadece Türkçe harfleri değiştirmek nasıl olur sizce? Fikrinizi merak ettim.

    YanıtlaSil