Ubuntu'da yeni klavye düzeni oluşturmak için gerekli adımlar nelerdir?


43

Oluşturmaya çalıştığım klavye çok fazla Unicode'a sahip ve şöyle görünüyor: Oluşturmaya çalıştığım klavye

Aşağıdaki öğretici ile başarısız olmak:

Acaba, adım adım talimatlarla daha iyi bir öğretici sağlamak için bu kadar kibar biri olacak mıydı?


2
Mmh, bu benim için bir kopyası gibi görünüyor . Ne yazık ki, sorunuza zaten bir ödül verdiniz:.
Glutanimate

@ Glutanimate oh temiz; bunu görmedim. Yine de daha iyi bir cevap almak için hala ödül alırdım.
Akiva


Yanıtlar:


69

In Ubuntu 14.04 , klavye düzenleri tutulur

/usr/share/X11/xkb/symbols/


Bu dizindeki dosyaların her biri, aşağıdaki türde bir dizi giriş içerir:

    anahtar <AC01> {[a, A, aacute, Aacute]};

Bu girdi, aşağıdaki kuralları kullanarak klavyedeki bir tuşu belirli karakterlerle eşleştirir:

  1. < A C01> ilk harfi Abiz alfanümerik tuş bloğu (diğer seçenekler şunlardır içinde aradığınız gösterir KP [for keypad]ve FK [for Function Key]);

  2. <A C 01> İkinci harf C, anahtarın bulunduğu alttan sayılan satırı belirtir. (Standart bir ABD klavyesinde, boşluk çubuğu satır AAve sayı tuşları satır satırdır AE).

  3. <AC 01 > Rakamlar 01, tuşun konumunu, soldan sayma ve özel TABveya ~(tilde) gibi özel olarak adlandırılmış herhangi bir tuşu AC01görmezden Caps Lockgelmediğini gösterir : üçüncü sırada, ilk önce soldan ( eğer yok sayarak ); Standart bir ABD klavyesinde, “a” işaretli tuş budur.

  4. Parantezler, her bir tuşa atanan karakterlerin listesini içerir. Bu, virgülle ayrılmış en çok dört giriş içerir:

    1. a - Değiştirilmemiş anahtar.
    2. A - Shiftkarakter.
    3. á - Alt Grkarakter. ( aacute )
    4. Á - Shift+ Alt Grkarakteri. ( Aacute )

Özel bir klavye haritası oluşturmak, belirli bir satırda istemediğiniz karakterleri, yaptığınız karakterlerle değiştirmek kadar kolaydır!

Örneğin:

Anglo-Saxonist olarak, yazın áve Ádaha az sıklıkla yazarken daha æve Æ.

Listeme Anglosakson karakterler eklemek için, ben sadece yerine aacuteve Aacutevarlık adlarını veya Unicode kod noktaları için æve Æ( “aelig” veya U00E6 ve “AElig” veya U00C6 sırasıyla):

    anahtar {[a, A, aelig, AElig]};

veya

    anahtar {[a, A, U00E6, U00C6]};

Klavye düzenimi değiştirmeyi bitirdiğimde , dosyayı aynı dizinde "oe" adlı yeni bir adla kaydederim.

evdev.xmlDosyaya yeni bir klavye düzeni eklemek .

Yeni klavye düzenini kullanmak için X11, onun var olduğunu söylememiz gerekir . Ubuntu'da 14.04 X11, yüklü klavyeleri /usr/share/X11/xkb/rules/evdev.xmldosyada tutar . O zaman içine yeni düzeni ekleyelim.

  1. X11/xkb/rules/evdev.xmlEditörde aç
  2. <layoutList>Bölümün sonuna gidin (arayın </layoutList>). Son </layout>etiketin Xarkasına şunu ekleyin, klavye düzeninizin dosya adı /usr/share/X11/xkb/symbols(benim durumumda oe); Yuygun bir kısa isim; ve Zbir ya da daha fazla dilde ve uygun bir uzun isim aaabir yasal üç harf (ISO 639-2) dil kodu (örneğin eng İngilizce için):

    <layout>
     <configItem>
       <name> X </name>
       <shortDescription> Y </shortDescription>
       <description> Z </description>
       <languageList>
          <iso639Id> aaa </iso639Id>
       </languageList>
     </configItem>
     <variantList/>
    </layout>
    

İşte, tam tanıtım izleyin

Diğer ilgili bağlantılar:
http://ubuntuforums.org/showthread.php?t=188761&p=1092145#post1092145 http://www.charvolant.org/~doug/xkb/html/index.html


Bu yazı üzerinde biraz çalıştım; Sağladığınız içerik çok yüksek kalitede, ancak bence yine de çalışması gerekiyor. Bağlantılı olduğunuz dersler çok eski ve güncel değil ve "8.04 kullanıyorsanız, xy ve z yapın" ifadesiyle dolu. Tam bir öğretici cevap görmek isterdim (keşke ödülünü yükseltebilseydim)
Akiva

@Akiva Bu cevap size yardımcı olmadı mı? Sorunun neresinde?
αғsнιη

3
Cevap yardımcı oldu; AC01'in açıklanması gerçekten iyi yazılmış, ancak tüm adımlarla tam bir cevap istedim. Diğer derslere bağlandığınızda; Onlar yaşlılar ve üç tane var. Diğer kullanıcılar adına, burada verilen cevapların tamamını almayı tercih ederim. Mesela; metin dosyasında <ac01> {[a, b, c, d]} Anahtarının ötesinde bulunan daha fazla öğe var ve ayrıca düzenlenmesi gereken bir XML dosyası da var. Bunun nasıl test edileceği sorusu da var. Söylendiği gibi; Bu konuda 500 rep ödül almalıydım, çünkü iyi bir eğitim oluşturmak oldukça büyük bir iştir.
Akiva

2
Bunu tam anlamıyla yanıtlamaya başlayacağım çünkü klavye düzenimi zaten tanımlamalıyım. Etrafı dolaştığımda, doğru cevaplayacağım.
Akiva

Sadece Xorg için mi yoksa tty'ler için mi çalışıyor?
Narcolessico

18

Not : Wayland xkb kullanıyor, ancak birçok xTools düzgün çalışmayı bıraktı (örneğin, xdotool)

Not : Bu ayrıntılı olmayan bir öğreticidir. Yeni bir sekiz seviyeli düzen oluşturmak ve sözdizimini anlamak isteyen bir kişi için en kullanışlıdır.

Not: Hızlı ve kirli bir çözüm sağlanır. İhtiyacınız olan kodu otomatik olarak üreten bir elektronik tablo içerir.


XKB Dizinini Anlamak

cd /usr/share/X11/xkb/ && ls
  1. types- Üretilen anahtarlar Aktif Değiştiriciler tarafından nasıl değiştirilir ? (Shift, Control, Alt ~)
    Değiştirici Tuşları özelleştirmek istiyorsanız, önemli.
  2. geometry- Klavye grafiklerini çizmek için kullanılır.
    Standart olmayan bir klavye donanımı tasarlıyorsanız önemlidir.
  3. rules- Geçerli kurulumunuz için uygun yapılandırmayı alma.
    Bunu tanımlamanız gerekecek
  4. keycodes- Klavye donanımı için kullanılan tuş kodlarının yorumlayıcısı.
    Örnek: Macintosh Klavye, boşluk çubuğunu olduğu gibi anlar 57. Ancak yazıyoruz<SPCE>
  5. symbols- Hangi Anahtar Kodlara hangi Değerler atanmıştır . Özel düzenimizi tanımlayacağımız yer burasıdır.
  6. compat- Uyumluluk için kısa . Değiştiricilerin
    iç davranışı (Shift, Control, Alt ...)

İş Akışı

keycodes > symbols > compat

Ben sadece dokunun symbols: Hızlı ve Kirli çözümü için aşağıya bakın .


Sembol Haritaları

/symbols/us Bu dizindeki herhangi bir dosya aynı yapıyı izler.

partial alphanumeric_keys
xkb_symbols "basic" {
    name[Group1]= "US/ASCII";
    key <TLDE> {        [ quoteleft,    asciitilde      ]       };
    key <AE01> {        [         1,    exclam          ]       };
    modifier_map Shift  { Shift_L, Shift_R };
};

partial - Tam bir klavye haritası değil

alphanumeric_keysEşleştirilmekte olan klavyenin bölümü. Birden çok kullanılan olabilir
Not: Hayır ise *_keysbelirtilen, tam bir klavye varsayılır.

"basic" - Sembol haritasının adı

name[Group1]= "US/ASCII";Bu klavye grubuna benzersiz bir ad verir .

modifier_mapDeğiştirici tuşları düzenlemek için . (ctrl, shift, alt ~)

Shift { Shift_L, Shift_R };Normalde gerekli değildir. Her iki vardiyayı da değiştiriciye, yani seviye 2'ye eşler.

key <TLDE> Tilde Tuşu - Genellikle Sekme'nin hemen üst sol tuşu

key <AE01> Stok Fotoğraf - Üç Parçadan Oluşan,AE01

  1. A= alfanümerik tuş bloğu.
    KP= Tuş takımı
    FK= İşlev Tuşu

  2. E= Klavyede Satır.
    Space Key= Arow
    Shift Key= Brow
    Caps Lock= Crow
    Tab Key= Dsatır

  3. 01= Anahtarın satırdaki konumu.
    AE01= 1
    AB02= X
    AC05=G

[+ ]- C Dillerinde; Köşeli ayraçlar, öğelerin bölündüğü bir listeyi belirtir ,. Listenin uzunluğu, seviyelerin miktarını belirler. Örneğin:

key<AE01> { [ Level 1 , Level 2 , Level 3 , Level 4 , Level 5 ] }

Genellikle, Düzeyler aşağıdaki tuşa basmayı gösterir:

  1. Değiştirici Anahtar Yok
  2. Shift
  3. Alt Gr
  4. Shift + Alt Gr
  5. Custom - 4. seviyenin ötesinde bir şey görmemek.

Kısacası, shift + altgr için bir anahtar eşlemek istiyorsanız listeniz en az dört öğe uzunluğunda olmalıdır.


UYARI - Yaygın Hatalar

Bu satırlardan biri kritik bir hataya neden olacak ve kullanılabilir bir klavye olmadan sizi bırakacaktır:

key<AE01> { [ Backspace ] }
key<AE02> { [ a, b, , C ] }
  • BackspaceOlması gerekenler BackSpace: Yazım kurallarına çok dikkat edin.
  • Boş bir giriş olmalı VoidSymbol.

En İyi Güvenlik Ölçüsü!

  1. Düzenlemekte olduğunuz dosyanızı yedekleyin:

    sudo /bin/cp /usr/share/X11/xkb/symbols/us /usr/share/X11/xkb/symbols/usBACKUP

  2. Kök şifresi olmadan çalıştırabileceğiniz bir komut dosyası oluşturun

Gibi bir şey:

#!/bin/bash
sudo /bin/cp -rf /usr/share/X11/xkb/symbols/usBACKUP /usr/share/X11/xkb/symbols/us

Bir şey ters giderse, farenizi kullanarak bu kod satırını çalıştırın (sudo'lara izin verdiğiniz bash komut dosyasında bulunur. chmod +xYürütülebilir olarak çalıştırmaya izin vermeyi unutmayın .)


Kırık bir sistemi kurtarmak için yedekleme stratejileri

  • UYARI: Klavye ve Ekran klavyesi en ufak bir hatayla çalışmayı keser.
  • Fare işe yarayacak . Yazma, karakterleri vurgulayarak ve orta tıklamayı kullanarak yapıştırarak yapılabilir. Bash'de, returnbir satır sonu yapıştırarak (Enter tuşuna basarak) yapabilirsiniz .
  • Klavye kök kabuğundaki kurtarma modunda çalışacaktır . (Bash erişimi)
  • Dosyaları düzeltmek için her zaman canlı bir ortam kullanabilirsiniz.

Hızlı ve Kirli çözüm

  1. Buraya gidin
  2. Dosya> Bir Kopyalama Yap
  3. Mapper Sayfa , düzeninizi tanımladığınız yerdir.
    • Tek Karakter girişleri program tarafından anlaşılan koda çevrilir.
      ( !olur U0021). Unicode destekledi!
    • Dizeler çevrilmez ve olduğu gibi ele alınır. Heceleme veya HAZIRLAMA hataları OLMADAN EMİN OLUN!
    • Boş Kareler otomatik olarak doldurulur VoidSymbol.
  4. XKB-Sort Sayfada anahtar grupları var, örneğin:
    key <AE01> { [U0021, U0021, U0021, U0021, U0021, U0021, U0021, U0021] };
    key <AE02> { [U005B, U005B, U005B, U005B, U005B, U005B, U005B, U005B] };
    key <AE03> { [U005D, U005D, U005D, U005D, U005D, U005D, U005D, U005D] };
    key <AE04> { [U0022, U0022, U0022, U0022, U0022, U0022, U0022, U0022] };
    key <AE05> { [U002A, U002A, U002A, U002A, U002A, U002A, U002A, U002A] };
    key <AE06> { [U007B, U007B, U007B, U007B, U007B, U007B, U007B, U007B] };
    key <AE07> { [U007D, U007D, U007D, U007D, U007D, U007D, U007D, U007D] };
    key <AE08> { [U002F, U002F, U002F, U002F, U002F, U002F, U002F, U002F] };
    key <AE09> { [U0027, U0027, U0037, U0027, U0027, U0027, U0027, U0027] };
    key <AE10> { [U0029, U0029, U0038, U0029, U0029, U0029, U0029, U0029] };
    key <AE11> { [U0028, U0028, U0039, U0028, U0028, U0028, U0028, U0028] };
    key <AE12> { [U005C, U005C, U005C, U005C, U005C, U005C, U005C, U005C] };
    
    Tüm 8 seviyelerde bunu değiştirir:
    1234567890-= // Physical Keys
    ![]"*{}/')(\ // Changed to these characters
  5. XKBSekmede ayrıca çizgiler var. Diğer her sekme yoksayılabilir (kodu).
  6. sudo vim /usr/share/X11/xkb/symbols/us
  7. Bir düzen içeriğini değiştirin. Kullanmayacağınız birini seçin. Örneğin: Colemak girişini yapı bozulmadan bırakarak değiştirdim ve anahtarları değiştirdim.

İlgi alanları:

key.type[group1]="EIGHT_LEVEL";          // Enables 8 levels
modifier_map Control { <LFSH>, <RTSH> }; // Maps ctrl`s to shift keys.
key  { [Control_R, Control_R, Control_R, Control_R, Control_R, Control_R, Control_R, Control_R] }; 
key  { [Control_L, Control_L, Control_L, Control_L, Control_L, Control_L, Control_L, Control_L] };
include "level3(lalt_switch)" // Hold Left  Alt for Level 3
include "level5(ralt_switch)" // Hold Right Alt for Level 5


Cevabınızın en üst satırında: "(WIP - Oy kullanma.)". Cevap bana göre oldukça tamamlanmış gibi görünüyor - belki de bu not kaldırılmalı mı?
MattKelly

1
@MattKelly Ahh Ben sadece güncellenen etrafında aldım. Aslında sahte klavye düzenine hangi karakterleri koyduğunuza bağlı olarak kodu otomatik olarak oluşturan bir elektronik tablo oluşturdum.
Akiva

Faydalı bir elektronik tabloya benziyor - kamuya açık mı?
MattKelly

@MattKelly İşte bir kopyası. Çok fazla zorlanmaya ihtiyacı var ve belki bazı gidonlar eklendi, ancak gördüğünüz gibi kod üretiyor: docs.google.com/spreadsheets/d/…
Akiva

Bu yaklaşım, RALT'ın başka bir geri alanı olarak işlev görmesine ya da ekleme tuşunun geri / tilde olarak işlev görmesine izin vermez.
Craig Hicks
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.