CP1251 в консоли

Scr1pt аватар

Благодаря недавно появившемуся здесь патчу для NetBSD 3.1 (dixx - респект! ;)), позволяющему использовать в консоли кодировки, не поддерживаемые по умолчанию операционной системой, захотелось заиметь у себя $subj, ради совместимости в Windows машиной.

Что я сделал:

1) Проделал всё то, что написано здесь, после чего получил желаемую локаль: ru_RU.CP1251.

bash-3.2# locale -a | grep ru
ru
ru_RU.CP1251
ru_RU.CP866
ru_RU.CPISO8859-5
ru_RU.KOI8-R
ru_RU.UTF-8

2) Т.к. ранее моими усилиями консоль NetBSD была русифицирована, я поправил некоторые переменные окружения. Теперь стало:

bash-3.2# set | grep ru
LANG=ru_RU.CP1251
LC_CTYPE=ru_RU.CP1251

3) Далее я заменил шрифты в кодировке KOI8-R, которые у меня стояли, на соответствующие шрифты, только уже в кодировке CP1251. С помощью скриптов wsfontload и wsconsctl я добавил и установил их на нужную мне консоль. Впрочем, это всё замечательно описывается здесь.

Вот тут случилась загвоздка. Кириллица не показывалась, а при попытке её напечатать (предварительно, разумеется, переключившись в консоли на кириллицу с помощью Caps Lock) - я слышал лишь непродолжительный beep из внутреннего динамика компьютера.

На мой взгляд всё дело в файле перекодировки (keymap). Раньше для KOI8-R я использовал файл /usr/share/wscons/keymaps/pckbd.ru.koi8-r. Он указывался в конфиге /etc/wscons.conf следующим образом:

mapfile /usr/share/wscons/keymaps/pckbd.ru.koi8-r

Поискав в директории /usr/share/wscons/keymaps, я не нашёл ничего подходящего для решения моей задачи.

Далее я искал подобный файл уже в FreeBSD 6.1, надеясь, что структура этих файлов перекодировок в схожих ОС хотя бы примерно одинакова. Что-то нашёл, но, к моему сожалению, файлы были совсем не похожи друг на друга.

Подскажите, где можно взять нужный мне keymap? Или всё-таки придётся переделывать файл, взятый из FreeBSD? Не хотелось бы тратить время на то, что уже давным-давно сделано.

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".
Scr1pt аватар

Русский keymap

Русский keymap файл для кодировки CP1251:

Сразу. Из неожиданного - список символов, которые не указаны на стандартной клавиатуре, но благодаря "А почему бы и нет?" - были включены в данный keymap.

1. При нажатии сочетания клавиш '1'+Shift при включённом русском языке появился новый символ - так называемый символ copyright (с английского это переводится как "авторское право"). Выглядит как буква "C", начертанная в середине небольшой окружности.
Код в таблице кодировки CP1251: 0A9h = 169d

2. При нажатии сочетания клавиш '5'+Shift при включённом русском языке появился новый символ - символ "зарегистрированной марки". Выглядит как латинская буква 'R', начертанная в середине небольшой окружности.
Код в таблице кодировки CP1251: 0AEh = 174d

3. При нажатии сочетания клавиш '8'+Shift при включённом русском языке появился новый символ - символ "параграфа".
Код в таблице кодировки CP1251: 0A7h = 167d

4. При нажатии сочетания клавиш '9'+Shift при включённом русском языке появился новый символ - символ левосторонней двойной кавычки. Даже не знаю, как это лучше назвать, но на обычную кавычку этот символ не похож. В общем - смотрите по таблице кодировки.
Код в таблице кодировки CP1251: 0ABh = 171h

5. При нажатии сочетания клавиш '0'+Shift при включённом русском языке появился новый символ - символ правосторонней двойной кавычки. Тоже самое, что и в пункте под номером 3, только кавычка правосторонняя.
Код в таблице кодировки CP1251: 0BBh = 187h

6. При нажатии сочетания клавиш '='+Shift при включённом русском языке появился новый символ - символ "плюс-минус".
Код в таблице кодировки CP1251: 0B1h = 177h

Таблицу кодировки CP1251 можно посмотреть на wikipedia.org.

# This is an CP1251 keymap for NetBSD.
#
# Created Evgeny Levinskiy (aka Scr1pt). 
# Please send your remarks to Scr1pt at rambler.ru (at -> @) and send netmail 
# to 2:5014/25.1 (Fido).
#
#+==========================================================================+
#|             |  English Language  <--[ Caps Lock ]-->  Russian Language   |
#|keycode ##   | -              +shift     | -               +shift         |
#+==========================================================================+
keycode   2  =   1              exclam       1               copyright
keycode   3  =   2              at           2               quotedbl
keycode   4  =   3              numbersign   3               onesuperior
keycode   5  =   4              dollar       4               semicolon
keycode   6  =   5              percent      5               registered
keycode   7  =   6              asciicircum  6               colon
keycode   8  =   7              ampersand    7               question
keycode   9  =   8              asterisk     8               section
keycode   10 =   9              parenleft    9               guillemotleft
keycode   11 =   0              parenright   0               guillemotright
keycode   13 =   equal          plus         equal           plusminus
keycode   16 =   q              Q            eacute          Eacute
keycode   17 =   w              W            odiaeresis      Odiaeresis
keycode   18 =   e              E            oacute          Oacute
keycode   19 =   r              R            ecircumflex     Ecircumflex
keycode   20 =   t              T            aring           Aring
keycode   21 =   y              Y            iacute          Iacute
keycode   22 =   u              U            atilde          Atilde
keycode   23 =   i              I            oslash          Ooblique
keycode   24 =   o              O            ugrave          Ugrave
keycode   25 =   p              P            ccedilla        Ccedilla
keycode   26 =   bracketleft    braceleft    otilde          Otilde
keycode   27 =   bracketright   braceright   uacute          Uacute
keycode   30 =   a              A            ocircumflex     Ocircumflex
keycode   31 =   s              S            ucircumflex     Ucircumflex
keycode   32 =   d              D            acircumflex     Acircumflex
keycode   33 =   f              F            agrave          Agrave
keycode   34 =   g              G            idiaeresis      Idiaeresis
keycode   35 =   h              H            eth             ETH
keycode   36 =   j              J            icircumflex     Icircumflex
keycode   37 =   k              K            ediaeresis      Ediaeresis
keycode   38 =   l              L            adiaeresis      Adiaeresis
keycode   39 =   semicolon      colon        ae              AE
keycode   40 =   apostrophe     quotedbl     yacute          Yacute
keycode   41 =   grave          asciitilde   cedilla         diaeresis
keycode   43 =   backslash      bar          backslash       brokenbar
keycode   44 =   z              Z            ydiaeresis      ssharp
keycode   45 =   x              X            division        multiply
keycode   46 =   c              C            ntilde          Ntilde
keycode   47 =   v              V            igrave          Igrave
keycode   48 =   b              B            egrave          Egrave
keycode   49 =   n              N            ograve          Ograve
keycode   50 =   m              M            udiaeresis      Udiaeresis
keycode   51 =   comma          less         aacute          Aacute
keycode   52 =   period         greater      thorn           THORN
keycode   53 =   slash          question     period          comma

Если кто найдёт ошибку/неточность - пишите или сюда или по указанным выше координатам.

Если кто поспособствует включению данного файла в дистрибутив NetBSD, связавшись с разработчиками - буду очень признателен.

untitled аватар

О боже, прости

О боже, прости этого юзера, пожалуйста, прости!!