Настройка и работа в Linux



              

Настройка системы - часть 2


Далее. Можно проверить, что XKB действительно переключается на "русскую" раскладку и выдает коды Cyrillic.

Для этого можно воспользоваться программой xev (если ее нет в вашей системе, то можно найти ее в XFree86-contrib).

Вообще-то, это "универсальный тестер" "событий" (X events). Ее надо запустить из под xterm. При нажатии кнопок она должна писать что-то вроде этого

KeyPress event, serial 21, synthetic NO, window 0x5800001, root 0x25, subw 0x0, time 3744190622, (533,270), root:(610,437), state 0x2000, keycode 38 (keysym 0x6c6, Cyrillic_ef), same_screen YES, XLookupString gives 0 characters: ""

KeyRelease event, serial 21, synthetic NO, window 0x5800001, root 0x25, subw 0x0, time 3744190755, (533,270), root:(610,437), state 0x2000, keycode 38 (keysym 0x6c6, Cyrillic_ef), same_screen YES, XLookupString gives 0 characters: ""

Обратите внимание, что если у вас клавиатура перключена в "русский режим", то в третей строчке сообщения должно быть название Cyrillic кода клавиши

Кстати, xev - "неправильная" программа. Если сделать ее "правильной", добавив в начале вызов (и "пересобрав" ее)

setlocale(LC_CTYPE, "");

то она будет показывать и результат трансляции Cyrillic кодов в koi8-r

(ну, или iso8859-5), например -

KeyPress event, serial 21, synthetic NO, window 0x5800001, root 0x25, subw 0x0, time 3744190622, (533,270), root:(610,437), state 0x2000, keycode 38 (keysym 0x6c6, Cyrillic_ef), same_screen YES, XLookupString gives 1 characters: "ф"

KeyRelease event, serial 21, synthetic NO, window 0x5800001, root 0x25, subw 0x0, time 3744190755, (533,270), root:(610,437), state 0x2000, keycode 38 (keysym 0x6c6, Cyrillic_ef), same_screen YES, XLookupString gives 1 characters: "ф"

Ну и, наконец, надо убедится, что у вас не XFree86 3.3.3 (хотя с этого надо было начинать :-).
(Надо бы написать простенький "тестер", который проверяет правильность работы *LookupString при заведомо правильной encoding_name. Но пока сойдет "подправленная" xev. Она, кстати, использует только XLookupString.)

Итак, если

  • у вас стоят "кириллические" шрифты;
  • программа testXlc показала, что название "системной" и "иксовой" locale совпадают, и значение "encodingName" - KOI8-R;
  • xev показывает Cyrillic коды;
  • "поправленный" xev транслирует их в нормальные koi8-r коды;

то система у вас настроена. И "правильные" программы должны работать нормально.

А вот что делать с "неправильными" программами - разговор отдельный...




Содержание  Назад  Вперед