Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Соответствие PS/2 сканкодов ASCII кодам
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему
elektronshik
Выложите пожалуйста нормальный массив на C для перевода сканкодов PS/2 клавиатуры в ASCII коды.
Соответствие должно быть такое:

scan2ascii[0x16] == '1';
scan2ascii[0x2E] == '5';
scan2ascii[0x1C] == 'A';

зы: гугл и т.п не предлагать
rezident
А как быть со скан-кодами нажатия и отпускания? wink.gif
MrYuran
Цитата(elektronshik @ Dec 17 2008, 10:55) *
зы: гугл и т.п не предлагать

А зря, ведь там есть готовые проекты для подключения клавы к контроллеру, я видел для AVR (осмелюсь предположить, что он как раз и нужен).
Осмелюсь также заметить, что это не системный уровень проектирования, тем более не математика или физика. В крайнем случае в интерфейсы. А скорее в начинающие

Вот собственно, и сам проект

PS; сорри за занудство, день сегодня выдался тяжёлый, хоть и не понедельник
elektronshik
Цитата(rezident @ Dec 17 2008, 16:25) *
А как быть со скан-кодами нажатия и отпускания? wink.gif

Никак, нужны только те что соответствуют ASCII кодам.

Цитата
Вот собственно, и сам проект

Видел, это не то, здесь в цикле перебирают, а нужно сразу. Не стал бы ничего здесь спрашивать, непосмотрев в гугле.

Вобщем задаешь один вопрос - получаешь два...
rezident
Цитата(elektronshik @ Dec 17 2008, 19:03) *
Никак, нужны только те что соответствуют ASCII кодам.
Клавиатура выдает скан-коды как на нажатие кнопки так и на отпускание. К тому же есть скан-коды, вообще не имеющие аналогов в ASCII, например, функциональные кнопки, CTRL, ALT, PrintScreen и прочие. Потому я и спросил, какие именно коды вас интересуют?
Самое простое преобразование для данного случая - табличное. Берете две таблицы: таблицу скан-кодов и таблицу ASCII и составляете третью таблицу, где номер позиции ASCII-символа соответствует скан-коду. Тут работы на час с двумя перекурами по 10 минут. wink.gif
MrYuran
Может я конечно туплю с утра, но вот это разве не скан-коды?
CODE

Scancodes.h
// Нижние символы
flash unsigned char unshifted[][2] = {
0x0d,9,
0x0e,'|',
0x15,'q',
0x16,'1',
0x1a,'z',
0x1b,'s',
0x1c,'a',
0x1d,'w',
0x1e,'2',
0x21,'c',
0x22,'x',
0x23,'d',
0x24,'e',
0x25,'4',
0x26,'3',
0x29,' ',
0x2a,'v',
0x2b,'f',
0x2c,'t',
0x2d,'r',
0x2e,'5',
0x31,'n',
0x32,'b',
0x33,'h',
0x34,'g',
0x35,'y',
0x36,'6',
0x39,',',
0x3a,'m',
0x3b,'j',
0x3c,'u',
0x3d,'7',
0x3e,'8',
0x41,',',
0x42,'k',
0x43,'i',
0x44,'o',
0x45,'0',
0x46,'9',
0x49,'.',
0x4a,'-',
0x4b,'l',
0x4c,'ш',
0x4d,'p',
0x4e,'+',
0x52,'ж',
0x54,'е',
0x55,'\\',
0x5a,13,
0x5b,'Ё',
0x5d,'\'',
0x61,'<',
0x66,8,
0x69,'1',
0x6b,'4',
0x6c,'7',
0x70,'0',
0x71,',',
0x72,'2',
0x73,'5',
0x74,'6',
0x75,'8',
0x79,'+',
0x7a,'3',
0x7b,'-',
0x7c,'*',
0x7d,'9',
0,0
};
// Верхние символы
flash unsigned char shifted[][2] = {
0x0d,9,
0x0e,'§',
0x15,'Q',
0x16,'!',
0x1a,'Z',
0x1b,'S',
0x1c,'A',
0x1d,'W',
0x1e,'"',
0x21,'C',
0x22,'X',
0x23,'D',
0x24,'E',
0x25,'¤',
0x26,'#',
0x29,' ',
0x2a,'V',
0x2b,'F',
0x2c,'T',
0x2d,'R',
0x2e,'%',
0x31,'N',
0x32,'B',
0x33,'H',
0x34,'G',
0x35,'Y',
0x36,'&',
0x39,'L',
0x3a,'M',
0x3b,'J',
0x3c,'U',
0x3d,'/',
0x3e,'(',
0x41,';',
0x42,'K',
0x43,'I',
0x44,'O',
0x45,'=',
0x46,')',
0x49,':',
0x4a,'_',
0x4b,'L',
0x4c,'Ш',
0x4d,'P',
0x4e,'?',
0x52,'Ж',
0x54,'Е',
0x55,'`',
0x5a,13,
0x5b,'^',
0x5d,'*',
0x61,'>',
0x66,8,
0x69,'1',
0x6b,'4',
0x6c,'7',
0x70,'0',
0x71,',',
0x72,'2',
0x73,'5',
0x74,'6',
0x75,'8',
0x79,'+',
0x7a,'3',
0x7b,'-',
0x7c,'*',
0x7d,'9',
0,0
};

Ё-моё, как прокрутку прикрутить, чтобы не на весь лист было?
где-то обсуждали недавно...
gotty, thnks. Понял.
msalov
Цитата(MrYuran @ Dec 18 2008, 08:45) *
Ё-моё, как прокрутку прикрутить, чтобы не на весь лист было?
где-то обсуждали недавно...

CODE

Scancodes.h
// Нижние символы
flash unsigned char unshifted[][2] = {
0x0d,9,
0x0e,'|',
0x15,'q',
0x16,'1',
0x1a,'z',
0x1b,'s',
0x1c,'a',
0x1d,'w',
0x1e,'2',
0x21,'c',
0x22,'x',
0x23,'d',
0x24,'e',
0x25,'4',
0x26,'3',
0x29,' ',
0x2a,'v',
0x2b,'f',
0x2c,'t',
0x2d,'r',
0x2e,'5',
0x31,'n',
0x32,'b',
0x33,'h',
0x34,'g',
0x35,'y',
0x36,'6',
0x39,',',
0x3a,'m',
0x3b,'j',
0x3c,'u',
0x3d,'7',
0x3e,'8',
0x41,',',
0x42,'k',
0x43,'i',
0x44,'o',
0x45,'0',
0x46,'9',
0x49,'.',
0x4a,'-',
0x4b,'l',
0x4c,'ш',
0x4d,'p',
0x4e,'+',
0x52,'ж',
0x54,'е',
0x55,'\\',
0x5a,13,
0x5b,'Ё',
0x5d,'\'',
0x61,'<',
0x66,8,
0x69,'1',
0x6b,'4',
0x6c,'7',
0x70,'0',
0x71,',',
0x72,'2',
0x73,'5',
0x74,'6',
0x75,'8',
0x79,'+',
0x7a,'3',
0x7b,'-',
0x7c,'*',
0x7d,'9',
0,0
};
// Верхние символы
flash unsigned char shifted[][2] = {
0x0d,9,
0x0e,'§',
0x15,'Q',
0x16,'!',
0x1a,'Z',
0x1b,'S',
0x1c,'A',
0x1d,'W',
0x1e,'"',
0x21,'C',
0x22,'X',
0x23,'D',
0x24,'E',
0x25,'¤',
0x26,'#',
0x29,' ',
0x2a,'V',
0x2b,'F',
0x2c,'T',
0x2d,'R',
0x2e,'%',
0x31,'N',
0x32,'B',
0x33,'H',
0x34,'G',
0x35,'Y',
0x36,'&',
0x39,'L',
0x3a,'M',
0x3b,'J',
0x3c,'U',
0x3d,'/',
0x3e,'(',
0x41,';',
0x42,'K',
0x43,'I',
0x44,'O',
0x45,'=',
0x46,')',
0x49,':',
0x4a,'_',
0x4b,'L',
0x4c,'Ш',
0x4d,'P',
0x4e,'?',
0x52,'Ж',
0x54,'Е',
0x55,'`',
0x5a,13,
0x5b,'^',
0x5d,'*',
0x61,'>',
0x66,8,
0x69,'1',
0x6b,'4',
0x6c,'7',
0x70,'0',
0x71,',',
0x72,'2',
0x73,'5',
0x74,'6',
0x75,'8',
0x79,'+',
0x7a,'3',
0x7b,'-',
0x7c,'*',
0x7d,'9',
0,0
};
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.