Автор Гілка: Два альтернативні варіянти української клавіятури  (Прочитано 27332 раз)

Відсутній Yury_Bulka

  • Графоман
  • ****
  • дописів: 440
  • Карма: +0/-0
  • муз́ика
Після переходу на англійський Dvorak типова українська клавіятура почала здаватись мені дуже незручною. В порівнянні з «двораком» клавіші здавались занадто розкиданими.

Тоді я натрапив на такий варіянт української клавіятури. На жаль, версії для *nix там не було, тому мені довелось зробити її самому. Автор цього розкладу сприйняв ініціятиву перенесення на Linux позитивно. Тому код цього розкладу для Xorg тут публікую.

Проте, як користувачу програмістичного «дворака» мені цього було замало. Мені заважала буква «Ф» на позиції одної з найлегше доступних клавіш (т.зв. «home row»), занадто далеко розташовані літери «П», «Е», і заблизько — «Ш» і «Щ». Окрім того, мені хотілось, щоб голосні літери за можливости відповідали англійському «двораку».

Очевидно, автор цієї альтернативної української клавіятури не хотів завдавати користувачам занадто багато клопоту при звиканні до нового розташування літер, і пішов на певні компроміси.

Окрім того, я мав просканований український словник aspell на предмет частоти вживаности літер, ось:
и 100229
а 97153
н 90849
о 88662
т 72606
в 62178
р 61693
е 51434
і 51407
с 47075
к 42204
л 40400
п 37151
й 35655
у 35128
д 30555
я 25890
з 24965
м 23236
ь 21574
б 19128
г 17363
ч 17030
ю 9651
ш 8578
ц 7984
ж 7537
х 6789
ф 4937
щ 2191
- 1921
є 1540
' 1518
ї 1217
ґ 305

Отож, я таки не втримався, і зробив власний варіянт української клавіятури, що базується на вищеописаному, і відповідає програмістичному «двораку» (хоча є й для звичайного «дворака»). Образ нижче.

А ось код усіх трьох варіянтів:
partial alphanumeric_keys
xkb_symbols "ergo" {
      include "ua(unicode)"

      name[Group1]= "Ukraine - ergonomic variant";
      // By Alex Sharapov <alex@sharapov.com>
      // xkb port by Yury Bulka <yurkobb@gmail.com>

      key <AD06> { [Cyrillic_pe, Cyrillic_PE ]};
      key <AD07> { [Cyrillic_el, Cyrillic_EL ]};
      key <AC03> { [Cyrillic_i, Cyrillic_I ]};
      key <AC05> { [Cyrillic_o, Cyrillic_O ]};
      key <AC07> { [Cyrillic_en, Cyrillic_EN ]};
      key <AC08> { [Cyrillic_te, Cyrillic_TE ]};
      key <AC09> { [Cyrillic_ve, Cyrillic_VE ]};
      key <AC10> { [Cyrillic_de, Cyrillic_DE ]};
      key <AB05> { [Cyrillic_zhe, Cyrillic_ZHE ]};
      key <AB06> { [Cyrillic_ghe, Cyrillic_GHE ]};
      key <AB10> { [comma, period, question, ellipsis ]};

};
xkb_symbols "ergodv" {
      include "ua(unicode)"

      name[Group1]= "Ukraine - ergonomic variant (more radical, easier for Dvorak users)";
      // by Yury Bulka <yurkobb@gmail.com>, inspired by Alex Sharapov's <alex@sharapov.com>
      // layout and english Dvorak keyboard

      key <AD01> { [Cyrillic_shorti, Cyrillic_SHORTI, semicolon, colon ]};
      key <AD02> { [Cyrillic_tse, Cyrillic_TSE, less, greater ]};
      key <AD03> { [Cyrillic_ie, Cyrillic_IE, Cyrillic_e, Cyrillic_E]};
      key <AD04> { [Cyrillic_pe, Cyrillic_PE ]};
      key <AD05> { [Cyrillic_sha, Cyrillic_SHA ]};
      key <AD06> { [Cyrillic_ef, Cyrillic_EF ]};
      key <AD07> { [Cyrillic_ze, Cyrillic_ZE ]};
      key <AD08> { [Cyrillic_ka, Cyrillic_KA ]};
      key <AD09> { [Cyrillic_es, Cyrillic_ES ]};
      key <AD10> { [Cyrillic_el, Cyrillic_EL ]};
      key <AD11> { [Cyrillic_shcha, Cyrillic_SHCHA, slash, backslash ]};

      key <AC01> { [Cyrillic_a, Cyrillic_A ]};
      key <AC02> { [Cyrillic_o, Cyrillic_O ]};
      key <AC03> { [Cyrillic_i, Cyrillic_I ]};
      key <AC04> { [Cyrillic_u, Cyrillic_U ]};
      key <AC05> { [Ukrainian_i, Ukrainian_I, Cyrillic_yeru, Cyrillic_YERU ]};
      key <AC07> { [Cyrillic_en, Cyrillic_EN ]};
      key <AC08> { [Cyrillic_te, Cyrillic_TE ]};
      key <AC09> { [Cyrillic_ve, Cyrillic_VE ]};
      key <AC10> { [Cyrillic_de, Cyrillic_DE ]};
      key <AC11> { [Ukrainian_ie, Ukrainian_IE, emdash, minus ]};

      key <AB03> { [Cyrillic_softsign, Cyrillic_SOFTSIGN, Cyrillic_hardsign, Cyrillic_HARDSIGN ]};
      key <AB07> { [Cyrillic_be, Cyrillic_BE ]};
      key <AB08> { [Cyrillic_ha, Cyrillic_HA ]};
      key <AB10> { [comma, period, question, ellipsis ]};

      key <AB05> { [Cyrillic_zhe, Cyrillic_ZHE ]};
      key <AB06> { [Cyrillic_ghe, Cyrillic_GHE ]};
      
};

partial alphanumeric_keys
xkb_symbols "ergodvp" {
      include "ua(ergodv)"
      
      name[Group1]= "Ukraine - ergonomic variant (as programmer's Dvorak for English)";
      // by Yury Bulka <yurkobb@gmail.com>, inspired by Alex Sharapov's <alex@sharapov.com>
      // layout and english programmer's Dvorak keyboard
      
      key <AE01> { [ question, percent, less ] };
    key <AE02> { [ bracketleft,     7,              currency, dollar            ], type[Group1] = "FOUR_LEVEL_ALPHABETIC" };
    key <AE03> { [ colon,       5,              percent, degree             ], type[Group1] = "FOUR_LEVEL_ALPHABETIC" };
    key <AE04> { [ semicolon,   3,                U00A7,    U20B4             ], type[Group1] = "FOUR_LEVEL_ALPHABETIC" }; // Pagargaph and Hryvnia
    key <AE05> { [ parenleft,       1,              EuroSign, onesuperior       ], type[Group1] = "FOUR_LEVEL_ALPHABETIC" };
    key <AE06> { [ minus,           9,              equal, sterling             ], type[Group1] = "FOUR_LEVEL_ALPHABETIC" };
    key <AE07> { [ asterisk,        0,              emdash                      ], type[Group1] = "FOUR_LEVEL_ALPHABETIC" };
    key <AE08> { [ parenright,      2,              onehalf, twosuperior        ], type[Group1] = "FOUR_LEVEL_ALPHABETIC" };
    key <AE09> { [ plus,            4                                           ], type[Group1] = "FOUR_LEVEL_ALPHABETIC" };
    key <AE10> { [ bracketright,    6                                           ], type[Group1] = "FOUR_LEVEL_ALPHABETIC" };
    key <AE11> { [ exclam,          8,              greater                     ], type[Group1] = "FOUR_LEVEL_ALPHABETIC" };
    key <AE12> { [ numerosign,      grave,          underscore                  ] };
      key <AB10> { [comma, period, minus, ellipsis ]};

};

Цей код потрібно додати у файл xkb/symbols/ua у Вашому каталозі X11. У Debian це /usr/share/X11/xkb/symbols/ua.

Щоб його увімкнути, потрібно обрати один з таких параметрів variant для української клавіятури:
  • ergo — перша з описаних альтернатив
  • ergodv — «дворакоподібний» варіянт, але зі звичайним числовим рядом
  • ergodvp — як попередній, але з числовим рядом «за мотивами» програмарського «дворака»
також раджу скористатись такими параметрами xkboptions:
  • nbsp:level2 — дає можливість вписувати нерозривний пробіл з допомогою Shift + Space
  • ctrl:swapcaps — (на любителя) міняє місцями лівий Control та Caps Lock. Мені особисто так набагато зручніше.
А, до речі. Я міг наробити купу помилок чи забути якийсь важливий символ. Виправляйте мене.
« Змінено: 2011-12-10 21:32:24 від Yury_Bulka »
http://freeUser.org.ua/ — колективний досвід із застосування вільних програм

Відсутній Михайло Даниленко

  • Адміністратор ЩОДО
  • Літератор
  • *****
  • дописів: 1262
  • Карма: +0/-0
  • [Debian Stretch]
Я робив собі двораківську розкладку за даними вживання символів у історії жабера за кілька років і за якоюсь книжкою, здається, то була "Чорна рада". При цьому виявилося, що результат можна зробити у вигляді, доволі близькому до фонетичної розкладки. Таким чином мені не потрібно в голові "перемикатись" між режимами, і навіть якщо ненароком набереш кирилицю в латиниці, вийде майже трансліт. Але в кінці-кінців повернувся на звичайну ua(unicode), бо по роботі доводиться трохи працювати на інших машинах, в тому числі й з windows, де з коробки є англійський дворак, але, звісно, нема українського. Набирати, дивлячись на клавіатуру - довго і втомлює. Зробити свою розкладку у mskeyboardlayoutcreator (чи якось так) - неважко, але встановлювати її повсюдно, на чужих машинах?

Проте, задля довідки, наводжу свій варіант.

// Dvorak Ukrainian
partial default alphanumeric_keys
xkb_symbols "ua" {

    name[Group1]= "Ukraine - us(dvorak-classic) compliant";

    key <TLDE> { [ Ukrainian_ghe_with_upturn, Ukrainian_GHE_WITH_UPTURN, U0301  ] };
    key <AE01> { [ semicolon,       colon                                       ] };
    key <AE02> { [ 7,               ampersand                                   ], type[Group1] = "FOUR_LEVEL_ALPHABETIC" };
    key <AE03> { [ 5,               percent                                     ], type[Group1] = "FOUR_LEVEL_ALPHABETIC" };
    key <AE04> { [ 3,               numerosign                                  ], type[Group1] = "FOUR_LEVEL_ALPHABETIC" };
    key <AE05> { [ 1,               exclam                                      ], type[Group1] = "FOUR_LEVEL_ALPHABETIC" };
    key <AE06> { [ 9,               parenleft                                   ], type[Group1] = "FOUR_LEVEL_ALPHABETIC" };
    key <AE07> { [ 0,               parenright                                  ], type[Group1] = "FOUR_LEVEL_ALPHABETIC" };
    key <AE08> { [ 2,               at                                          ], type[Group1] = "FOUR_LEVEL_ALPHABETIC" };
    key <AE09> { [ 4,               question                                    ], type[Group1] = "FOUR_LEVEL_ALPHABETIC" };
    key <AE10> { [ 6,               plus                                        ], type[Group1] = "FOUR_LEVEL_ALPHABETIC" };
    key <AE11> { [ 8,               asterisk                                    ], type[Group1] = "FOUR_LEVEL_ALPHABETIC" };
    key <AE12> { [ Cyrillic_ef,     Cyrillic_EF,   dead_grave                   ] };
    key <BKSP> { [ BackSpace                                                    ] };

    key <AD01> { [ Ukrainian_yi,    Ukrainian_YI,  slash,                   bar ] };
    key <AD02> { [ comma,           U2019,    guillemotleft, doublelowquotemark ] };
    key <AD03> { [ period,          quotedbl, guillemotright, leftdoublequotemark ] };
    key <AD04> { [ Cyrillic_pe,     Cyrillic_PE                                 ] };
    key <AD05> { [ Cyrillic_u,      Cyrillic_U, Byelorussian_shortu, Byelorussian_SHORTU ] };
    key <AD06> { [ Cyrillic_softsign, Cyrillic_SOFTSIGN, Cyrillic_hardsign, Cyrillic_HARDSIGN ] };
    key <AD07> { [ Cyrillic_ghe,    Cyrillic_GHE                                ] };
    key <AD08> { [ Cyrillic_ka,     Cyrillic_KA                                 ] };
    key <AD09> { [ Cyrillic_er,     Cyrillic_ER,   registered                   ] };
    key <AD10> { [ Cyrillic_el,     Cyrillic_EL                                 ] };
    key <AD11> { [ Cyrillic_sha,    Cyrillic_SHA                                ] };
    key <AD12> { [ Cyrillic_shcha,  Cyrillic_SHCHA                              ] };
    key <BKSL> { [ Ukrainian_ie,    Ukrainian_IE,  Cyrillic_e,       Cyrillic_E ] };

    key <AC01> { [ Cyrillic_a,      Cyrillic_A                                  ] };
    key <AC02> { [ Cyrillic_o,      Cyrillic_O                                  ] };
    key <AC03> { [ Cyrillic_ie,     Cyrillic_IE,   Cyrillic_io,     Cyrillic_IO ] };
    key <AC04> { [ Cyrillic_i,      Cyrillic_I,    Cyrillic_yeru, Cyrillic_YERU ] };
    key <AC05> { [ Ukrainian_i,     Ukrainian_I                                 ] };
    key <AC06> { [ Cyrillic_de,     Cyrillic_DE                                 ] };
    key <AC07> { [ Cyrillic_ve,     Cyrillic_VE                                 ] };
    key <AC08> { [ Cyrillic_te,     Cyrillic_TE,   trademark                    ] };
    key <AC09> { [ Cyrillic_en,     Cyrillic_EN                                 ] };
    key <AC10> { [ Cyrillic_es,     Cyrillic_ES,   copyright                    ] };
    key <AC11> { [ minus,           underscore,    emdash,               endash ] };

    key <AB01> { [ Cyrillic_tse,    Cyrillic_TSE                                ] };
    key <AB02> { [ Cyrillic_che,    Cyrillic_CHE                                ] };
    key <AB03> { [ Cyrillic_yu,     Cyrillic_YU                                 ] };
    key <AB04> { [ Cyrillic_ya,     Cyrillic_YA                                 ] };
    key <AB05> { [ Cyrillic_shorti, Cyrillic_SHORTI                             ] };
    key <AB06> { [ Cyrillic_be,     Cyrillic_BE                                 ] };
    key <AB07> { [ Cyrillic_em,     Cyrillic_EM                                 ] };
    key <AB08> { [ Cyrillic_ze,     Cyrillic_ZE                                 ] };
    key <AB09> { [ Cyrillic_ha,     Cyrillic_HA                                 ] };
    key <AB10> { [ Cyrillic_zhe,    Cyrillic_ZHE                                ] };
    
    include "my(exchange_pgupdn_home_end)"
    include "my(caps_on_numlock)"

//  key <LSGT> { [ slash,           bar                                         ] };
    // End alphanumeric section
};


Off-topic:
До речі, чого текст у [code] не monospace? Чи це тільки у SubBlack? Власне, чого я й загорнув вищенаведене у ...

Відсутній Михайло Даниленко

  • Адміністратор ЩОДО
  • Літератор
  • *****
  • дописів: 1262
  • Карма: +0/-0
  • [Debian Stretch]
P.S. Щодо nbsp:level2 - мені воно сильно заважає при написанні коду і введенні команд, тому я використовую nbsp:level4 (meta-shift-space).

Off-topic:
Також використовую перемикання на українську по shift-caps і на англійську по caps (grp:shift_caps_switch) — так не треба думати, на яку розкладку попадеш, коли наступний раз натиснеш перемикача.

Відсутній Ign1111

  • Письменник
  • *****
  • дописів: 829
  • Карма: +0/-0
  • Linux 4ever!
А це ви наліпки на клавіатуру інші наліплюєте, чи на помацки тицяєте?
Linux. The future is open.

Відсутній Yury_Bulka

  • Графоман
  • ****
  • дописів: 440
  • Карма: +0/-0
  • муз́ика
А це ви наліпки на клавіатуру інші наліплюєте, чи на помацки тицяєте?

Фактично, вся суть «дворака» в тому, щоб на клавіятуру взагалі не дивитись. Руки постійно знаходяться в одній позиції. Я зустрічав думку, що наліпки з «двораком» не допомагають, а навпаки, заважають — постійно виникає спокуса заглянути, де ж та клавіша, і навчання проходить повільніше, і, до того ж людина звикає піднімати руки.

Якщо я знайду білі (пусті) наліпки, то, може, скористаюсь ними. Буде весело виглядати (коли пересяду на лептоп). [smiley=thumbsup.gif]
http://freeUser.org.ua/ — колективний досвід із застосування вільних програм

Відсутній tech

  • Письменник
  • *****
  • дописів: 586
  • Карма: +1/-0
  • Гигик
А це ви наліпки на клавіатуру інші наліплюєте, чи на помацки тицяєте?

Методом тику: "з" - "не те", "и" - не те"... :)

Раз мова зайшла про це, то користуюсь трохи зміненою фонетичною розкладкою:


// Phonetic. Modified by Vitaliy Tsybulyak <uatech@meta.ua>.
partial alphanumeric_keys
xkb_symbols "myphonetic" {
  include "ua(legacy)"
  
  name[Group1]= "Ukraine - Phonetic";

  key <TLDE> {   [ Cyrillic_yu,       Cyrillic_YU               ]    };
  key <AE02> {   [ 2,                 numerosign                ]    };
  key <AE03> {   [ 3,                 Ukrainian_ghe_with_upturn ]    };
  key <AE04> {   [ 4,                 Ukrainian_GHE_WITH_UPTURN ]    };
  key <AE05> {   [ 5,                 Ukrainian_ie              ]    };
  key <AE06> {   [ 6,                 Ukrainian_IE              ]    };
  key <AE07> {   [ 7,                 Cyrillic_che              ]    };
  key <AE08> {   [ 8,                 Cyrillic_CHE              ]    };
  key <LatQ> {   [ Cyrillic_ya,       Cyrillic_YA         ]    };
  key <LatW> {   [ Cyrillic_zhe,      Cyrillic_ZHE        ]    };
  key <LatE> {   [ Cyrillic_ie,       Cyrillic_IE         ]    };
  key <LatR> {   [ Cyrillic_er,       Cyrillic_ER         ]    };
  key <LatT> {   [ Cyrillic_te,       Cyrillic_TE         ]    };
  key <LatY> {   [ Cyrillic_i,        Cyrillic_I          ]    };
  key <LatU> {   [ Cyrillic_u,        Cyrillic_U          ]    };
  key <LatI> {   [ Ukrainian_i,       Ukrainian_I         ]    };
  key <LatO> {   [ Cyrillic_o,        Cyrillic_O          ]    };
  key <LatP> {   [ Cyrillic_pe,       Cyrillic_PE         ]    };
  key <AD11> {   [ Cyrillic_sha,      Cyrillic_SHA        ]    };
  key <AD12> {   [ Cyrillic_shcha,    Cyrillic_SHCHA      ]    };
  key <BKSL> {   [ Ukrainian_yi,      Ukrainian_YI              ]    };
  key <LatA> {   [ Cyrillic_a,        Cyrillic_A          ]    };
  key <LatS> {   [ Cyrillic_es,       Cyrillic_ES         ]    };
  key <LatD> {   [ Cyrillic_de,       Cyrillic_DE         ]    };
  key <LatF> {   [ Cyrillic_ef,       Cyrillic_EF         ]    };
  key <LatG> {   [ Cyrillic_ghe,      Cyrillic_GHE        ]    };
  key <LatH> {   [ Cyrillic_ha,       Cyrillic_HA         ]    };
  key <LatJ> {   [ Cyrillic_shorti,   Cyrillic_SHORTI     ]    };
  key <LatK> {   [ Cyrillic_ka,       Cyrillic_KA         ]    };
  key <LatL> {   [ Cyrillic_el,       Cyrillic_EL         ]    };
  key <AC10> {   [ semicolon,         colon                     ]    };
  key <AC11> {   [ quoteright,        quotedbl                  ]    };
  key <LatZ> {   [ Cyrillic_ze,       Cyrillic_ZE         ]    };
  key <LatX> {   [ Cyrillic_softsign, Cyrillic_SOFTSIGN   ]    };
  key <LatC> {   [ Cyrillic_tse,      Cyrillic_TSE        ]    };
  key <LatV> {   [ Cyrillic_ve,       Cyrillic_VE               ]    };
  key <LatB> {   [ Cyrillic_be,       Cyrillic_BE         ]    };
  key <LatN> {   [ Cyrillic_en,       Cyrillic_EN         ]    };
  key <LatM> {   [ Cyrillic_em,       Cyrillic_EM         ]    };
  key <AB08> {   [ comma,             less                      ]    };  // or U00AB
  key <AB09> {   [ period,            greater                   ]    };  // or U00BB
  key <AB10> {   [ slash,             question            ]    };
};

Схематично виглядає так:

[юЮ][1!][2№][3ґ][4Ґ][5є][6Є][7ч][8Ч][9(][0)][-_][=+][Backspace]
[Tab]  [яЯ][жЖ][еЕ][рР][тТ][иИ] [уУ][іІ][оО][рР][шШ][щЩ]   [їЇ]
[Caps] [аА][сС][дД][фФ][гГ][хХ] [йЙ][кК][лЛ][;:]['"]    [Enter]
[Shift]    [зЗ][ьЬ][цЦ][вВ][бБ] [нН][мМ][,<][.>][/?]    [Shift]
[Ctrl] [Win] [Alt] [         Space         ] [Alt] [Win] [Ctrl]

Така сама розкладка в консолі. (Наведено в долученні.)

Не вважаю її найкращою. Просто вже звик. Переваги фонетичної розкладки:
   1) Не залежиш від клавіатури/наліпок (крім деяких клавіш).
   2) Не треба переучуватись з англійської на українську чи навпаки.
   3) Не треба купувати нової клавіатури/наліпок.

От такоє от.
« Змінено: 2011-12-11 15:26:50 від tech »

Відсутній tech

  • Письменник
  • *****
  • дописів: 586
  • Карма: +1/-0
  • Гигик
Підкину цікаву ідею для проекту: програма (сценарій), ака парсить файл мап kbd або xkb (ідеально - і те, і те) і виводить от таку от схемку, як показано в попередньому дописі, для різних режимів клавіатури.


Відсутній Михайло Даниленко

  • Адміністратор ЩОДО
  • Літератор
  • *****
  • дописів: 1262
  • Карма: +0/-0
  • [Debian Stretch]
Off-topic:
Така сама розкладка в консолі. (Наведено в долученні.)
Добре в деб’яні, є console-setup, що зробить це автоматично... ;)

Відсутній Михайло Даниленко

  • Адміністратор ЩОДО
  • Літератор
  • *****
  • дописів: 1262
  • Карма: +0/-0
  • [Debian Stretch]
Підкину цікаву ідею для проекту: програма (сценарій), ака парсить файл мап kbd або xkb (ідеально - і те, і те) і виводить от таку от схемку, як показано в попередньому дописі, для різних режимів клавіатури.
Для цього є xkbprint, але воно кирилицю і юнікод зображає у тому ж вигляді, що й xkb - Cyrillic_X та UXXXX.

Відсутній tech

  • Письменник
  • *****
  • дописів: 586
  • Карма: +1/-0
  • Гигик
Да, непогано. Тепер потрібно знайти Postscript/sed-генія, щоб відфільтрував усі ці Cyrillic-* у файлі. :)
 
Трохи довелося погуглити. Для непосвячених:

Компіляція поточних параметрив клавіатури X-сервера:
  xkbcomp -w3 -xkm 0:0 0-0.xkm
  xkbprint 0-0.xkm
  gv 0-0.ps


а простіше можна так (друга група тільки -lg 2) :
  xkbprint -lg 2 0:0
  gv 0-0.ps


Компіляція стандартної мапи ua:
  setxkbmap ua -print | xkbcomp -w3 -xkm - ua.xkm
  xkbprint ua.xkm
  gv ua.ps


Компіляція одного з її варіантів:
  setxkbmap ua -variant phonetic -print | xkbcomp -w3 -xkm - ua-phonetic.xkm
  xkbprint ua-phonetic.xkm
  gv ua-phonetic.ps
« Змінено: 2011-12-11 20:29:21 від tech »

Відсутній DalekiyObriy

  • Літератор
  • ******
  • дописів: 1923
  • Карма: +4/-0
Окрім того, я мав просканований український словник aspell на предмет частоти вживаности літер, ось:
Це не зовсім правильний підхід, треба аналізувати не список слів в мові, а тексти, наприклад, літера «і» може вживатися x разів в списку слів, але 2*x в текстах (бо, сполучник «і» дуже популярний), тобто для аналізу тре взяти щось на штиб десятка номерів Дзеркала Тижня, або (сучасну) книжку, якогось там Андруховича і т.п.
Але навіть якщо аналізувати лише по списку слів то тре брати всі словоформи, з чисел вище таке враження, що взято лише початкові словоформи, напр. «ґава» враховано, а «ґави», «ґаві», «ґавою» тощо — ні...
І хоча результат може не надто відрізнятися, але коректність алгоритму є досить важливою для таких речей.
Fedora 35 (x86-64)

Відсутній Михайло Даниленко

  • Адміністратор ЩОДО
  • Літератор
  • *****
  • дописів: 1262
  • Карма: +0/-0
  • [Debian Stretch]
Це не зовсім правильний підхід.
Я аналізував за історією джабера (себто реальне розмовне використання клавіатури) плюс за старою книжкою окремо і разом. Також я аналізував комбінації послідовних літер - літери, які найчастіше йдуть одна за іншою не мають бути на одному пальці. Здається щось ще було стосовно розподілу послідовних літер між руками, але зараз я вже не пам’ятаю. Звичайно, обидва джерела не є об’єктивними (наприклад, у книжці взагалі не було ґ — чи то артефакти розпізнавання, чи то мова така).
Власне, результати для книжки:
tsubasa:~$ countletters.pl -u -f 7 <library/куліш\ пантелеймон/chorna_r.txt|graph.pl
:  5150 | =====
  : 63838 | ===================================================================
 !:  1332 | =
 ":   336 |
 ':   232 |
 (:    30 |
 ):    30 |
 ,:  6910 | =======
 -:  3112 | ===
 .:  3058 | ===
 ::   460 |
 ;:   433 |
 ?:   649 |
 _:   100 |
 v:    10 |
 x:     9 |
 а: 21732 | ======================
 б:  5236 | =====
 в: 11725 | ============
 г:  4470 | ====
 д:  8112 | ========
 е: 12310 | ============
 ж:  3543 | ===
 з:  5560 | =====
 и: 14196 | ==============
 й:  3539 | ===
 к:  9899 | ==========
 л:  7324 | =======
 м:  7205 | =======
 н: 11753 | ============
 о: 24599 | =========================
 п:  6590 | ======
 р:  9928 | ==========
 с: 10025 | ==========
 т: 12246 | ============
 у:  8482 | ========
 ф:     8 |
 х:  2735 | ==
 ц:  1381 | =
 ч:  3581 | ===
 ш:  2387 | ==
 щ:  1797 | =
 ь:  5427 | =====
 ю:  1974 | ==
 я:  4445 | ====
 є:  1139 | =
 і: 10462 | ==========
 ї:  1359 | =

Відсутній Yury_Bulka

  • Графоман
  • ****
  • дописів: 440
  • Карма: +0/-0
  • муз́ика
до DalekiyObriy:
цілком маєте рацію, і результати Михайла Даниленка це демонструють. На жаль, я це зрозумів досить пізно :-/

---

Друзі, то які плани? Може на dlou розмістити (варіянт Михайла має найсоліднішу наукову основу), далі, може, ще трохи там обговорити, а тоді запропонувати його иншим зацікавленим людям, хай висловлять свою думку, ну а далі — на x.org?
http://freeUser.org.ua/ — колективний досвід із застосування вільних програм

Відсутній DalekiyObriy

  • Літератор
  • ******
  • дописів: 1923
  • Карма: +4/-0
якщо вже дійсно підходити до цього науково, то тре враховувати набагато більше факторів:
* частоту символів в текстах (переважно тих, що набирають), причому взяти великий діапазон матеріалів: короткі листи, повідомлення в блогах/форумах, середні доповіді, статті (в журнали тощо), велики тексти/реферати/дипломи; також треба охопити різні галузі: література/журналістика, наукові тексти, комп’ютерні, фліртування на форумах ;)
* (дуже важливо) частоту комбінацій символів, напр. якщо скажімо, в і е зустрічаються часто, але також часто зустрічаються разом то їх тре в центр, але на різні половини, щоб чергувати праву/ліву руку; часто вживані комбінації символів не повинні бути поруч і з одного боку на клавіатурі (!)
* при створенні турецької розкладки (Turkish (F-keyboard)) було також враховано анатомію пальців (набір на цій клаві поставив 14 світових рекордів), щоправда думаю аналіз анатомії ми тут не зробимо, але ніхто не забороняє підглянути резултати інших досліджень (думаю пальці тих же турків не дуже відрізняються від наших :))
* також тре врахувати основні типи клавіатур (розміри кнопок, розташування тощо, напр, клавіатури ноутів будуть дещо відрізнятися по ефективності кнопок від звичайних клавіатур)

дещо про те як створювалися деякі розкладки є на англ. вікіпедії (http://en.wikipedia.org/wiki/Keyboard_layout)

якщо вже додавати нову «найправильнішу» розкладку то тре виконати серйозний аналіз, простий аналіз частоти символів в тексті-другому і запихання найчастіших в центр буде недостатньо

P.S. для додавання розкладок, автор xkeyboard-config захоче серйозне обґрунтування і наявність хоча б десятка користувачів
P.P.S. скажу чесно, мене буде страшенно важко загітувати користуватися новою клавітурою з двох простих причин: я набираю всліпу англ/укр/рос тексти вже років 15 і перенавчатися навіть якщо це дещо прискорить набирання буде дуже недоцільно, також я набираю на 10-15 різних компах/пристроях, поки на всіх не буде поширено нову розкладку, мені не буде сенсу запам’ятовувати дві розкладки; попри це я не агітую проти, навпаки, завжди лише за «правильне технічне рішення», але лише якщо воно дійсно зроблене правильно, тому наполягаю на серйозному підході, проблема лише в тому, що тут роботи принаймні на кандидатську :)
Fedora 35 (x86-64)

Відсутній Yury_Bulka

  • Графоман
  • ****
  • дописів: 440
  • Карма: +0/-0
  • муз́ика
якщо вже дійсно підходити до цього науково, то тре враховувати набагато більше факторів:
Дякую, слушні міркування. Ясно, я такого не потягну, але, може, потягне автор варіянту, з якого все почалось (Алекс Шарапов) — він мені написав, що то була його бакалаврська, отже він налаштований науково. Я дам йому лінк сюди.

P.P.S. скажу чесно, мене буде страшенно важко загітувати користуватися новою клавітурою [...]
Ну так, тут справа радше «на майбутнє», коли розкла́д можна буде обирати тоді, коли людина тільки починає.
http://freeUser.org.ua/ — колективний досвід із застосування вільних програм