субота, 31 травня 2008 р.

Коректуємо розкладку клавіатури в Linux

Я використовую стандартну українську розкладку Linux. Мені вона подобається більше за аналогічну у Windows бо на відміну від останньої включає апостроф та літеру Ґ. При наборі великих текстів це все ж таки не пустий звук. Інше розташування символів пунктуації мене не турбує, це діло звички, тим більше мене це не турбує бо моє знайомство з комп'ютерами припало на часи популярності MS-DOS, тому звикати то особливо й нема до чого. Проте є у цієї розкладки одна проблема - відсутність символа №. Замість нього при натисненні Shift+2 з'являється символ #, що не є правильним. Тому я й зацікавися питанням, як можна підредагувати стандартну розкладку. Як виявилося, все досить таки просто.

Файли з описами різних клавіатурних розкладок знаходяться у каталозі /etc/X11/xkb/symbols. Потрібний нам файл носить цілком очевидну назву - ua. Якщо ми відкриємо цей файл у текстовому редакторі то десь починаючи з десятого рядка зможемо побачити такий текст (це не весь файл, лише частина):

partial default alphanumeric_keys
xkb_symbols "basic" {

name[Group1]= "Ukraine";

key <TLDE> { [ apostrophe, asciitilde ] };
key <AE01> { [ 1, exclam ] };
key <AE02> { [ 2, quotedbl ] };
key <AE03> { [ 3, numbersign ] };
key <AE04> { [ 4, asterisk ] };
key <AE05> { [ 5, colon ] };
key <AE06> { [ 6, comma ] };
key <AE07> { [ 7, period ] };
key <AE08> { [ 8, semicolon ] };
key <AE09> { [ 9, parenleft ] };
key <AE10> { [ 0, parenright ] };
key <AE11> { [ minus, underscore ] };
key <AE12> { [ equal, plus ] };


Як бачимо, формат дуже простий та інтуітивно зрозумілий. Нас цікавить опис клавіші з кодом AE03, це і є клавіша з цифрою 3 у верхньому ряді клавіатури. Як бачимо з нею асоційовано символ, що носить назву numbersign. Це і є символ # який в англомовних текстах саме й виконує роль того, що в нас прийнято позначати символом №. Все, що нам потрібно це змінити numbersign на numerosign. Ось так:

Було:
key <AE03> { [ 3, numbersign ] };
Стало:
key <AE03> { [ 3, numerosign ] };

Все.

Звичайно зміни у даному файлі потрібно виконувати з правами root, тобто відкривати текстовий редактор наприклад так:

sudo gedit /etc/X11/xkb/symbols/ua

І ще, бажано спочатку, перед редагуванням, зробити копію оригінального файлу (про всяк випадок):

sudo cp /etc/X11/xkb/symbols/ua /etc/X11/xkb/symbols/ua_backup


Після внесення правок у файл потрібно перезапустити ікси - Ctrl+Alt+Backspace. Тепер ви можете користуватися новою розкладкою.Подработка в Строгино,

4 коментарі:

  1. Давно хотів у цьому розібратись. Виявляється у Linux це не складно.

    >Мені вона подобається більше за аналогічну у Windows бо на відміну від останньої включає апостроф та літеру Ґ.
    Справа у тім, що розкладка Windows у Linux містить і апостроф (кнопка під ескейпом) і літеру Ґ (на місці оберненого слешу у латинці), і символ №. Тож якщо розміщення інших символів, таких як крапка й кома є не принциповим, то нашо платити більше?

    ВідповістиВидалити
  2. Ги ))) оце я лажонувся так лажонувся ))) Ну нічого, у всякому разі розібрався як робити власні розкладки, а це імхо корисно. Можливо й ще комусь знадобиться.

    ВідповістиВидалити
  3. Дивно, але в Харді розкладка ua unicode вже мала в собі знак №, Shift+3, так само як і ґ (Shift+\).

    ВідповістиВидалити
  4. У мене трішки інша проблема.. Знаменитий символ № я бачу не так, як ви -- неправильно відображається у KDE! ПРи чому, OpenOffice.org зокрема його показує коректно. Проблем із вводом символу № у мене нема, але я на всяк випадок змінив той файл в надії, що після перезапуску Xorg я побачу цей символ. Я використовую MS Windows шрифти, а саме Arial в KDE (взяв з Windows 2000, файл arial.ttf, він ідентичний тому, що є в наборі до Windows XP). От цей же Arial я встановлював у OpenOffice.org, де символ № прекрасно відображається буквою N з підкресленням та маленьким нуликом, а не квадратом з штрихпунктирною границею, як я його бачу зараз.

    ВідповістиВидалити