Название: Просмотреть коды клавиш Отправлено: reD_Rus от Ноябрь 17, 2008, 15:57 Хотелось бы посмотреть на коды клавиш сразу после нажания,
но показывает коды не сразу после нажатия, а только после того как нажму enter, сразу для всей кучи нажатых клавиш. Код: #include <QtCore/QCoreApplication> Название: Re: Просмотреть коды клавиш Отправлено: reD_Rus от Ноябрь 18, 2008, 12:48 Поробывал так
Код: #include <QtCore/QCoreApplication> Название: Re: Просмотреть коды клавиш Отправлено: pastor от Ноябрь 18, 2008, 14:04 getch() не входит в стандарт C, в линуксе ты его не найдешь. В винде эта функция есть в conio.h. Остальные извесные функции такие как getchar, cin требуют подтверждения ввода (нажатия Enter). Попробуй такой вот код:
Код: #include <stdio.h> ЗЫ: Эта тема не имеет никакого отношения к Qt. Переношу её в раздел С\С++ Название: Re: Просмотреть коды клавиш Отправлено: reD_Rus от Ноябрь 18, 2008, 15:58 Спасибо заработало, почему я постил в Qt форуме просто я на QtCreatore собираю -)
Только непонятен момент с Код: Key v code 118 Название: Re: Просмотреть коды клавиш Отправлено: xintrea от Ноябрь 18, 2008, 16:40 Спасибо заработало, почему я постил в Qt форуме просто я на QtCreatore собираю -) Только непонятен момент с Код: Key v code 118 Это видимо особенности взаимодействия данной программы с локалью UTF-8 (у тебя же UTF-8, не так ли?). Имеется в виду значки вместо букв и две строки для "й". У меня локаль KOI8-R, в ней всё нормально Код: Key a code 97 Название: Re: Просмотреть коды клавиш Отправлено: pastor от Ноябрь 18, 2008, 16:52 Знак "-" очевидно потому что идет переполнение типа char. Попробуй изменить код вот так:
Код: ...... Название: Re: Просмотреть коды клавиш Отправлено: pastor от Ноябрь 18, 2008, 16:54 почему я постил в Qt форуме просто я на QtCreatore собираю -) я пишу прогу на С\С++ в простом текстовом редакторе, комилю с консоли, куда мне постить вопросы? ;) Думаю намек понятен )) Название: Re: Просмотреть коды клавиш Отправлено: reD_Rus от Ноябрь 18, 2008, 16:55 да , локаль у меня utf8
с буквой "й" стало по лучше Key � code 208 Key � code 185 но все равно крозяблы Название: Re: Просмотреть коды клавиш Отправлено: xintrea от Ноябрь 18, 2008, 17:12 да , локаль у меня utf8 с буквой "й" стало по лучше Key � code 208 Key � code 185 но все равно крозяблы Ну тут то тебе Qt и поможет. попробуй воспользоваться функций QChar QChar::fromAscii ( char c ). То есть вместо Код: printf("Key %c code %d\n", ch, ch); напиши что-то в стиле Код: qDebug() << "Key " << QChar::fromAscii( (char)ch ) << " code " << ch; UPD: Не, щас проверил - не прокатит, всетаки Ascii - это первые 128 символов, а не все 256. Ну тогда ничего не остается как задать QTextCodec::codecForLocale(), а потом преобразовывать символ в сишную строку ( char s[2];s[0]=key;s[1]=0;); ) и после этого QString QString::fromLocal8Bit ( const char * str, int size = -1 ). Единственная проблема - понять в какой кодировке захватываются символы, чтоб настроить QTextCodec. То что для одних символов идет одинарный код, а для других - двойной, меня не удивляет, ибо ты работаешь фактически со скан кодами напрямую. А вот как такие вещи преобразовывать в обычную однобайтовую кодировку - подсказать не могу. Название: Re: Просмотреть коды клавиш Отправлено: Tonal от Ноябрь 19, 2008, 11:58 В UTF-8 символ представлен последовательностью байт длинной от 1 до 6 (UTF-8]http://ru.wikipedia.org/wiki/UTF-8]UTF-8 (http://ru.wikipedia.org/wiki/UTF-8))
Так что getch вполне может выдавать последовательность побайтово - на этот счёт нужно смотреть доки и рыть интернет. А со сканкодами можно работать или из голого ДОС-а по прерываниям, либо из драйвера клавиатуры, либо обращаясь к платформенному API (WinApi для винды или termios на никсах) Название: Re: Просмотреть коды клавиш Отправлено: xintrea от Ноябрь 19, 2008, 19:24 В UTF-8 символ представлен последовательностью байт длинной от 1 до 6 (UTF-8]http://ru.wikipedia.org/wiki/UTF-8]UTF-8 (http://ru.wikipedia.org/wiki/UTF-8)) Так что getch вполне может выдавать последовательность побайтово - на этот счёт нужно смотреть доки и рыть интернет. Ну в UTF-8 символы кириллицы обнобайтовыми вроде как не бывают. А у товарища - однобайтовые коды, только "й" двухбайтовая. Это на UTF-8 не похоже. Так что getch() явно не в UTF-8 коды возвращает. Тут видимо имеем не полную обработку сканкодов внутри getch(), есть видимо какие-то особенности, которые не учитываются. Название: Re: Просмотреть коды клавиш Отправлено: Tonal от Ноябрь 20, 2008, 11:34 Ещё раз, скан-коды клавиш обрабатывает драйвер клавиатуры а getch возвращает уже то, что ему отдал системный вызов.
Кроме того, на него скорее всего влияет ещё и текущая локаль установленная в программе. Так что не смешивай понятия. Нужно копать маны что же и как оно возвращает в таких случаях. начать можно отсюда: http://www.cl.cam.ac.uk/~mgk25/unicode.html |