Ключевые слова:keyboard, scancode, print, charset, (найти похожие документы)
Date: Thu, 11 Nov 2004 22:49:40 +0500
From: Sergey Mudry <upx@nsk.ru.>
Newsgroups: ftn.ru.linux
Subject: Перекодировка для матричного принтера Epson
SM>> Если не найдешь подходящей, можно и свой пеpекодиpовщик сделать, не
SM>> пpоблема. Или еще однy табличкy набить в исходники iconv/recode.
L> Хотелось бы по-подpобнее как набить новyю таблицy. Я создал свою
L> таблицy в каталоге /usr/share/i18n/charmap/ , но пpи выполнении
L> команды iconv она не видит мою новyю кодиpовкy и не хочет
L> тpанспониpовать
Ээээ... насчет тех не знаю, IMHO, их использует только localedef.
Для iconv'а таблички я видел где-то в другом месте, и в виде .so -
файлов.
Я бы взял исходники recode, и аккуратно вбил туда.
А еще быстрее - сделать простенькую программку типа:
$ cat >koi2cpf.c
#include<stdio.h>
static char koi2cpf[256]={
0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,
0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,
0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,
0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,
0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,
0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,
0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,
0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F,
0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,
0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,
0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,
0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,
0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,
0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F,
0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,
0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F,
0xC4,0xB3,0xDA,0xBF,0xC0,0xD9,0xC3,0xB4,
0xC2,0xC1,0xC5,0xDF,0xDC,0xDB,0xDD,0xDE,
0xB0,0xB1,0xB2,0x3F,0xFE,0xF9,0xFB,0x3F,
0x3F,0x3F,0xFF,0x3F,0xF8,0x3F,0xFA,0x3F,
0xCD,0xBA,0xD5,0xF1,0xD6,0xC9,0xB8,0xB7,
0xBB,0xD4,0xD3,0xC8,0xBE,0xBD,0xBC,0xC6,
0xC7,0xCC,0xB5,0xF0,0xB6,0xB9,0xD1,0xD2,
0xCB,0xCF,0xD0,0xCA,0xD8,0xD7,0xCE,0x3F,
0xEE,0xA0,0xA1,0xE6,0xA4,0xA5,0xE4,0xA3,
0xE5,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,
0xAF,0xEF,0xE0,0xE1,0xE2,0xE3,0xA6,0xA2,
0xEC,0xEB,0xA7,0xE8,0xED,0xE9,0xE7,0xEA,
0x9E,0x80,0x81,0x96,0x84,0x85,0x94,0x83,
0x95,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,
0x8F,0x9F,0x90,0x91,0x92,0x93,0x86,0x82,
0x9C,0x9B,0x87,0x98,0x9D,0x99,0x97,0x9A
};
int main() {
int c;
while((c=getchar())!=EOF)
putchar(koi2cpf[c]);
return 0;
}
Сейчас здесь набита таблица перекодировки koi8-r -> 866.
Hе знаю где там у тебя псевдографика, в общем коцай как тебе нравится.
From: Zurawlev Maksim <maximnik@mail.iks.ru.>
Таблица Esc-последовательностей для пpинтеpа Epson
Коды ASCII
Клавиша Код нажатия Клавиша Код нажатия Клавиша Код нажатия
"1" 2 "T" 20 "L" 38
"2" 3 "Y" 21 ";" 39
"3" 4 "U" 22 "'" 40
"4" 5 "I" 23 "`" 41
"5" 6 "O" 24 "\" 43
"6" 7 "P" 25 "Z" 44
"7" 8 "[" 26 "X" 45
"8" 9 "]" 27 "C" 46
"9" 10 "A" 30 "V" 47
"0" 11 "S" 31 "B" 48
"-" 12 "D" 32 "N" 49
"=" 13 "F" 33 "M" 50
"Q" 16 "G" 34 "," 51
"W" 17 "H" 35 "." 52
"E" 18 "J" 36 "/" 53
"R" 19 "K" 37 пробел 57
Управляющие клавиши
Esc - 1 Ctrl - 29 Alt - 56
BackSpace - 14 left shift - 42 CapsLock - 58
Tab - 15 right shift - 42 NumLock - 58
Enter - 28 PrtSc - 55 ScrollLock - 70
В текстовом редакторе (пустом и с английской кодировкой водиш следующим
образом : любой код ASCII от 1 до 255
может быть введен с клавиатуры, если держать нажатой клавишу Alt
при наборе номера кода на дополнительной клавиатуре (с соответст-
венно установленным режимом NumLock). Когда клавиша Alt затем
освобождается, то код вводится.Закрываешь редактор и печатаешь - есть
проще способ через команду echo но сейчас не помню.
Привожу еще некоторые управляющие коды :
DEL Стереть символ
Esc SO то же что SO
Esc SI то же что SI
Esc EM Включить/выключить режим автоподачи
Esc SP Установить межсимвольное расстояние
Esc ! Установить стиль печати
Esc # Выключить контроль MSB (8-го бита данных)
Esc $ (n1) (n2) Переместить в абс.позицию по горизонтали
Esc % Включить загружаемый шрифт
Esc & (0) (n1) (n2) Загрузить шрифт
Esc + L Включить n/360-дюймовый интервал
Esc - P Включить или выключить подчеркивание
Esc / Select (включить) Vertical Tab Channel
Esc 0 P Включить 1/8-дюймовый интервал
Esc 1 P E Включить 7/72-дюймовый интервал
Esc 2 Включить 1/6-дюймовый интервал
Esc 2 P Включить интервал Esc A (или 1/6")
Esc 3 Включить n/216-дюймовый интервал
Esc 3 L N Включить n/180-дюймовый интервал
Esc 4 Включить курсив
Esc 4 P Установить верхнюю границу формата
Esc 6 P Подключить коды 128-159 к печати (printable коды)
Esc 7 P Отключить коды 128-159 от печати (upper control)
Esc 8 E Отключить контроль конца бумаги
Esc 9 E Подключить контроль конца бумаги
Esc : Копировать текущий ROM в RAM
Esc : P Включить плотность 12 Pitch
Esc < Включить однонаправленный режим (на одну строку)
Esc = Установить MSB (8-й бит данных) в 0
Esc = P Загрузить шрифт
Esc > Установить MSB в 1
Esc ? (s) (m) Переназначить графический режим
Esc @ Инициализировать принтер
Esc A P E Установить n/72-дюймовый интервал
Esc A L N Установить n/60-дюймовый интервал
Esc I E Расширить область печатных кодов
Esc I P Выбрать NLQ/DRAFT и ROM/RAM шрифт
Esc J P E Исполнить n/216-дюймовый интервал
Esc J L N Исполнить n/180-дюймовый интервал
Esc K (n1) (n2) P Включить режим плотности 60 dpi графики
Esc L (n1) (n2) P Включить режим плотности 120 dpi графики
Esc M Включить плотность 12 Pitch
Esc N P Включить пропуск перфорации
Esc O P Отключить пропуск перфорации
Esc P Включить плотность 10 Pitch
Esc Q P Выключить принтер
Esc R Включить международный кодовый набор
Esc R P Сбросить все табуляторы (to power on)
Esc S (0) P Включить режим надстрочника
Esc S (1) P Включить режим подстрочника
Esc T P Выключить режим над/под-строчника
Esc U P Включить/выключить однонаправленный режим
Esc V N Повторяемые данные
Esc Y (n1) (n2) P Включить режим графики плотности 120 dpi
и высокой скорости
Esc Z (n1) (n2) P Включить режим плотности 240 dpi графики
Esc [ @ P Установить режим двойной высоты, двойной ширины
Esc \ (n1) (n2) Установить относ. гориз. позицию печати
Esc \ (n1) (n2) P Печатать все символы (0-255)
Esc ^ E Включить режим 9-точечной графики
Esc ^ P Печатать один символ (0-255)
Esc _ P Включить/выключить режим зачеркивания
Esc a Включить выравнивание (justification)
Esc b (c) (n1) (n2) Set vertical tabs in channels
(n...) (0)
Esc e 0 N Repeated horizontal tabs
Esc e 1 N Repeated vertical tabs
Esc f 0 N Print head moved
Esc f 1 N Paper advanced
Esc g L N Включить 15 Pitch
Esc j N Исполнить n/180-дюймовый возврат бумаги
Esc k Включить Typestyle Family (select a font)
Esc l Установить левую границу
Esc p Включить/выключить пропорциональный режим
Esc s E N Включить/выключить режим половинной скорости
Esc t Select character table
Esc w E L Включить/выключить режим двойной высоты
Esc x Включить режим NLQ или DRAFT