функции ввода (встроенный ассемблер)

Модератор: Модераторы разделов

Аватара пользователя
COKPOWEHEU
Сообщения: 47
ОС: Debian (ядро 4.4.2) / Win7

функции ввода

Сообщение COKPOWEHEU »

Недавно баловался с функциями in/out в asm'e на Винде. Особенно понравилась in AL,60h. Непосредственный ввод с клавы. Написял прогу, которая в DOS-эмуляторе распознает до 8 (! в DirectInput максимум-4)одновременно нажатых клавиш. Причем сбоев (когда их отпускаю одновременно, например) вроде не было. Теперь хочется узнать как что-нибудь подобное написать в Линуксе (OpenSuSE11) и соответственно gcc. Пытался писать
asm("in al,60h"); вместо al пробовал ax и eax, вместо 60h - 0x60. еще пробовал % ставить везде. Не работает. Подскажите как надо. Еще лучше вместо Асма что-нибудь попроще. Нужно определение нажатых в данный момент клавиш.
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu
Контактная информация:

Re: функции ввода

Сообщение serzh-z »

COKPOWEHEU писал(а):
29.04.2009 16:35
Нужно определение нажатых в данный момент клавиш.
Может стоит использовать curses/ncurses?
Спасибо сказали:
Аватара пользователя
Stauffenberg
Сообщения: 2042
Статус: ☮ PEACE ☮
ОС: открытая и свободная

Re: функции ввода

Сообщение Stauffenberg »

COKPOWEHEU писал(а):
29.04.2009 16:35
Еще лучше вместо Асма что-нибудь попроще. Нужно определение нажатых в данный момент клавиш

man showkey
Labor omnia vincit

"Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.” (Brian Kernighan)
Спасибо сказали:
Аватара пользователя
кодировщик
Сообщения: 974
Статус: зарёган в пятницу 13
ОС: Linux

Re: функции ввода

Сообщение кодировщик »

COKPOWEHEU писал(а):
29.04.2009 16:35
Недавно баловался с функциями in/out в asm'e на Винде. Особенно понравилась in AL,60h. Непосредственный ввод с клавы. Написял прогу, которая в DOS-эмуляторе распознает до 8 (! в DirectInput максимум-4)одновременно нажатых клавиш. Причем сбоев (когда их отпускаю одновременно, например) вроде не было. Теперь хочется узнать как что-нибудь подобное написать в Линуксе (OpenSuSE11) и соответственно gcc. Пытался писать
asm("in al,60h"); вместо al пробовал ax и eax, вместо 60h - 0x60. еще пробовал % ставить везде. Не работает. Подскажите как надо. Еще лучше вместо Асма что-нибудь попроще. Нужно определение нажатых в данный момент клавиш.

использовали nasm?!
Спасибо сказали:
Аватара пользователя
Stauffenberg
Сообщения: 2042
Статус: ☮ PEACE ☮
ОС: открытая и свободная

Re: функции ввода

Сообщение Stauffenberg »

COKPOWEHEU писал(а):
29.04.2009 16:35
Теперь хочется узнать как что-нибудь подобное написать в Линуксе (OpenSuSE11) и соответственно gcc. Пытался писать
asm("in al,60h"); вместо al пробовал ax и eax, вместо 60h - 0x60. еще пробовал % ставить везде. Не работает

Дык а что пишет? Вы исходник лучше выложите. Посмотрите это.


кодировщик писал(а):
29.04.2009 17:08
использовали nasm?!

Как я понял, он хочет c AT&T синтаксисом поиграть
Labor omnia vincit

"Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.” (Brian Kernighan)
Спасибо сказали:
sim1
Сообщения: 155
ОС: GNU,BSD
Контактная информация:

Re: функции ввода

Сообщение sim1 »

COKPOWEHEU писал(а):
29.04.2009 16:35
asm("in al,60h"); вместо al пробовал ax и eax, вместо 60h - 0x60. еще пробовал % ставить везде. Не работает. Подскажите как надо. Еще лучше вместо Асма что-нибудь попроще. Нужно определение нажатых в данный момент клавиш.


на Си как-то так

Код: Выделить всё

#include <asm/io.h>
#include <sys/io.h>
#include <unistd.h>
....
if( ioperm(0x60,1,1) == 0 ) { // разрешить доступ к порту
      char state = inb_p(0x60);  // считать байт с задержкой
      .....

}
..


запускать подобную программу с правами суперпользователя конечно же
Спасибо сказали:
Аватара пользователя
Portnov
Модератор
Сообщения: 1786
Статус: Матёрый линуксоид
ОС: Debian testing/unstable
Контактная информация:

Re: функции ввода

Сообщение Portnov »

Если всё-таки обязательно хочется ассемблера - inb %al, 0x60 - если не ошибаюсь...
Работа: Ubuntu 9.10
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu
Контактная информация:

Re: функции ввода

Сообщение serzh-z »

Portnov писал(а):
29.04.2009 18:03
Если всё-таки обязательно хочется ассемблера - inb %al, 0x60 - если не ошибаюсь...
Вообще-то в ассемблере AT&T все регистры имеют префикс "%", а литералы - "$".
Спасибо сказали:
Аватара пользователя
RasenHerz
Сообщения: 1341
ОС: Arch Linux amd64

Re: функции ввода

Сообщение RasenHerz »

если все хорошо помню:

Код: Выделить всё

movl $3, %eax
movl $descriptor, %ebx
movl $address, %ecx
movl $1, %edx
int $0x80

вроде как-то так...
открываете устройство клавиатуры и читаете =)))
Спасибо сказали:
Аватара пользователя
COKPOWEHEU
Сообщения: 47
ОС: Debian (ядро 4.4.2) / Win7

Re: функции ввода

Сообщение COKPOWEHEU »

В линуксе далеко до профессионала. Пытался встроенный в ГСС ассемблер. А когда на винде (точнее в эмуляции ДОСа) TASM.
То что именно ассемблер - неважно, лишь бы хот бы 3-4 клавиши одновременно.
Снизойдите к чайнику. Разенхертз, куда что записывает система?
Спасибо сказали:
Аватара пользователя
RasenHerz
Сообщения: 1341
ОС: Arch Linux amd64

Re: функции ввода

Сообщение RasenHerz »

COKPOWEHEU писал(а):
09.05.2009 03:46
В линуксе далеко до профессионала. Пытался встроенный в ГСС ассемблер. А когда на винде (точнее в эмуляции ДОСа) TASM.
То что именно ассемблер - неважно, лишь бы хот бы 3-4 клавиши одновременно.
Снизойдите к чайнику. Разенхертз, куда что записывает система?

у меня читать с клавиатуры можно открыв /dev/input/event0 и вызывая ioctl команды. почитать о системе ввода можно здесь - все снабжено примерами программ.
Спасибо сказали:
Аватара пользователя
Alxn1
Сообщения: 402
Статус: Красноглазик со стажем
ОС: Mavericks
Контактная информация:

Re: функции ввода

Сообщение Alxn1 »

А может вам поставить dosemu и там тоже на TASM-е баловаться?

А то есть у меня такое подозрение, что в защищенном режиме командочки обращения к портам (in/out которые) являются привелигированными, и могут быть выполнены только в нулевом кольце, и обычные программки (в user-space) просто будут валится по исключению.
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current
Контактная информация:

Re: функции ввода

Сообщение drBatty »

Alxn1 писал(а):
09.05.2009 23:36
(in/out которые) являются привелигированными, и могут быть выполнены только в нулевом кольце, и обычные программки (в user-space) просто будут валится по исключению.
всё так, только не валится - исключение перехватит ядро, и не порушит всё, а что-то вернёт молча. может даже и порт прочитает. В WinXP так было, читало, но не очень быстро(если я не ошибаюсь). Думаю в Linux так-же, хотя не проверил...
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
Denjs
Сообщения: 1685
ОС: SuSe 10.2

Re: функции ввода

Сообщение Denjs »

Может я не в тему...
скорее даже просто оффтопик. попробуем поиграть в телепата)

"in AL,60h" - как я понимаю вы вытаетесь прочитать с аппаратного порта номер "60h"(клавиатура) байт данных и записать его в ергистр AL?

и так я понимаю, то что вы компидите под линукс - вы это пишите в том-же стиле, что и для дос-эмулятора... да? т.е. не модуль ядра, не драйвер, ни т.п., да?
Теперь вы мне вот что скажите - а с какого перепугу вы решили что ОС пустит вас из "userspace" рулить устройством напрямую через порты ввода-вывода? это же не DOS и не Win95/98.

Вот если бы вы "in AL,60h" под вендо-хренью запускали - как вы думаете - что-нибудь у вас заработало бы? нет. венда "старше 2000-й (включительно)" не пустит вас напрямую управлять устройством через аппаратные порты ввода-вывода, если только вы не драйвер пишите...

А с чего вы решили что под Linux оно будет работать из userspace?
QDroid - Среда исполнения и фреймворк для QtScript.
OTPD - Открытые драйвера промышленных принтеров чеков и этикеток (кроссплатформенная подсистема печати).
Спасибо сказали:
Аватара пользователя
Denjs
Сообщения: 1685
ОС: SuSe 10.2

Re: функции ввода

Сообщение Denjs »

UPD: прочитал тему. Alxn1 дело говорит.
Сам я с этим столкнулся ещё под вендой. Мы на лабах очень замечательно программировали контроллер последовательного порта через In-Out. Под досом и под win95|98.

Программировали в частности для "перехвата мышки" - протокол мышиный простой, и заставить бегать в по экрану "собственный курсор" - большого труда не составляло.
А когда я это (скомпиленное) запускал под 2000-й оно уже не работало. Мелкософтовцы "открыли америку" и начали реализовывать нормальное разделение доступа к устройствам.

С *nix-системами-же как я понимаю дело так уже изначально обстояло.
В общем поправьте меня ежели я ошибаюсь )
QDroid - Среда исполнения и фреймворк для QtScript.
OTPD - Открытые драйвера промышленных принтеров чеков и этикеток (кроссплатформенная подсистема печати).
Спасибо сказали:
Аватара пользователя
Alxn1
Сообщения: 402
Статус: Красноглазик со стажем
ОС: Mavericks
Контактная информация:

Re: функции ввода

Сообщение Alxn1 »

drBatty писал(а):
09.05.2009 23:58
всё так, только не валится - исключение перехватит ядро, и не порушит всё, а что-то вернёт молча. может даже и порт прочитает. В WinXP так было, читало, но не очень быстро(если я не ошибаюсь). Думаю в Linux так-же, хотя не проверил...


По-моему венда говорит, что "программа выполнила недопустимую операцию". А linux, думаю, SIGSEGV или SIGBUS пошлет. Врятли оно там что-то будет читать и эмулировать - доступ к портам неядро иметь не должно, по идее. Хотя у меня и в мыслях никогда не из ядреного модуля к портам обращаться не было, так что я не уверен в своих догадках. А пробовать лень :)
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current
Контактная информация:

Re: функции ввода

Сообщение drBatty »

Alxn1 писал(а):
10.05.2009 00:59
пробовать лень
мне было не лень... уж не помню что я делал, может BIOS читал/писал, может порты, но что-то помню получалось... году так в 2002м, т.ч. точно не помню...
а сейчас тоже лень :)

ЗЫЖ хочу подчеркнуть, что напрямую точно не получится, этого не даст сделать CPU.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
COKPOWEHEU
Сообщения: 47
ОС: Debian (ядро 4.4.2) / Win7

Re: функции ввода

Сообщение COKPOWEHEU »

Я хочу написать программу на С которая отслеживает нажатие нескольких клавиш одновременно (было бы неплохо если и мыша, но не обязательно).
Stauffenberg а что вы имели в виду под "man showkey"?
Если можно, с конкретными примерами кода (и указанием куда записывается код клавиши)
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu
Контактная информация:

Re: функции ввода

Сообщение serzh-z »

COKPOWEHEU писал(а):
10.05.2009 17:26
Я хочу написать программу на С которая отслеживает нажатие нескольких клавиш одновременно (было бы неплохо если и мыша, но не обязательно).
Кажется, что не мешало бы сначала для себя ответить на след. вопросы... В какой системе - DOS, Linux? В каком окружении - виртуальная консоль, X-сервер, DE?
Спасибо сказали:
Аватара пользователя
Stauffenberg
Сообщения: 2042
Статус: ☮ PEACE ☮
ОС: открытая и свободная

Re: функции ввода

Сообщение Stauffenberg »

COKPOWEHEU писал(а):
10.05.2009 17:26
Я хочу написать программу на С которая отслеживает нажатие нескольких клавиш одновременно (было бы неплохо если и мыша, но не обязательно).
Stauffenberg а что вы имели в виду под "man showkey"?

Я имел в виду, что разобрться в вопросе, возможно поможет showkey (:

Вот еще пару линков:

http://freeworld.thc.org/papers/writing-li...l-keylogger.txt
http://gunnarwrobel.de/wiki/Linux-and-the-keyboard.html
Labor omnia vincit

"Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.” (Brian Kernighan)
Спасибо сказали:
MiK13
Сообщения: 1180
ОС: Linux Debian

Re: функции ввода

Сообщение MiK13 »

COKPOWEHEU писал(а):
10.05.2009 17:26
Я хочу написать программу на С которая отслеживает нажатие нескольких клавиш одновременно (было бы неплохо если и мыша, но не обязательно).

Для начала хотелось бы всё-таки получить ответ на вопрос, которай задал serzh-z:
serzh-z писал(а):
10.05.2009 17:33
Кажется, что не мешало бы сначала для себя ответить на след. вопросы... В какой системе - DOS, Linux? В каком окружении - виртуальная консоль, X-сервер, DE?

Потом я не понял, зачем привлекать для этих целей ассемблер. В чём преимущество in AL,60h перед inb(0x60) ?
Также я не уверен, что программа, которая просто читает 60-й порт, даже под Windows будет нормально распознавать ВСЕ нажатые клавиши.
Как распознаётся момент нажатия и отпускания клиавиши?
А больше 8 одновременно нажатых клиавишь получалось распознавать?

Когда я начал писать программы, работающие с графикой, то обнаружил, что как в svgalib, так и в xlib есть свои нормальные средства работы с клавиатурой.
В svgalib при любом нажатии и отпускании клавиши (а также при перемещении мыши и нажатии и отпускании её кнопок) вызывается специально указанная функция, которой передаётся код клавиши и признак её нажатия/отпускания. Причём, ВСЕ клавиши равны (точнее почти все -- Alt+Fn всё-таки вызывает переключение на другую консоль и мне пока не удалось это заблокировать).
В иксах ситуация аналогичная (только коды немного другие); нужно зарегистрировать события нажатия и отпускания кливишей. И при возникновении такого события из специального поля можно будет прочитать код клавиши.
Спасибо сказали:
MiK13
Сообщения: 1180
ОС: Linux Debian

Re: функции ввода

Сообщение MiK13 »

Denjs писал(а):
10.05.2009 00:15
UPD: прочитал тему. Alxn1 дело говорит.
Сам я с этим столкнулся ещё под вендой. Мы на лабах очень замечательно программировали контроллер последовательного порта через In-Out. Под досом и под win95|98.

Программировали в частности для "перехвата мышки" - протокол мышиный простой, и заставить бегать в по экрану "собственный курсор" - большого труда не составляло.
А когда я это (скомпиленное) запускал под 2000-й оно уже не работало.
Я когда-то, около 20 лет назад, написал программу VT52 -- эмулятор терминала VT-52. Были тогда машины типа PDP-11, и стали появляться персоналки. Ну и (в частности) захотелось пользоваться редактором K52 (а про советские полные аналоги VT-52 я даже и не слышал). Программа написана на Borland Pascal, сделана по-простому. В цикле: если бьл введён код с клавиатуры, то он посылается в COM-пор. Если пришёл кодд c COM-порта, то он либо выводится на экран, либо выполняется какое-то действие.
Для приёма данных с COM-порта устанавливается вектор прерывания и пришедшие данные записываюся в кольцевой буфер.
Этой программой (с разными модификациями) пользуемся до сих пор для работы с контроллерами. Работает и под Windows XP.
Denjs писал(а):
10.05.2009 00:15
под 2000-й оно уже не работало.
То, что программа не работала под 2000-й, причина, возможно, была другая -- COM-порт был уже захвачен мышой или чем-то другим. Я не помню. работала ли она под 2000 (сам перешёл от 98 к XP), но, по-моему, уже под 98 бывали проблемы. Если запустить эту программу из FARа или VC, то в другом окне она уже не запустится. Пока не будет снят запускавший её FAR (VC), т.е. при первом запуске эта программа "захватывала" COM-порт и никому его не отдавала.
Также в XP (или в 2000) при запуске программы винда предупреждала, что кто-то пытается получить доступ к портам и требовала разрешения на это.
Спасибо сказали:
Аватара пользователя
COKPOWEHEU
Сообщения: 47
ОС: Debian (ядро 4.4.2) / Win7

Re: функции ввода

Сообщение COKPOWEHEU »

Я хочу распознавать нажата ли клавиша, момент нажатия не нужен. Лучше всего в X-window (KDE3.5 - не знаю важно ли. В принципе кроме него стоят KDE4 и Gnome), в перспективе - OpenGL. Язык написания предпочтительнее С++.
Stauffenberg. А почему первая ссылка не пашет?
Насчет ассемблера убедили - в данном случае неэффективно.
Спасибо сказали:
Аватара пользователя
Stauffenberg
Сообщения: 2042
Статус: ☮ PEACE ☮
ОС: открытая и свободная

Re: функции ввода

Сообщение Stauffenberg »

COKPOWEHEU писал(а):
12.05.2009 18:43
Stauffenberg. А почему первая ссылка не пашет?

пашет :happy:
Labor omnia vincit

"Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.” (Brian Kernighan)
Спасибо сказали:
_edgbla_
Сообщения: 13
ОС: OpenSUSE

Re: функции ввода

Сообщение _edgbla_ »

Да уж, 8 клавиш..., мне что-то думалось что это аппаратное ограничение там, но раз уж человек говорит...,
COKPOWEHEU если найдёте как читать хотя бы 4 одновременно причём любых, отпишитесь,
очень не хватает.
Спасибо сказали:
Аватара пользователя
Alxn1
Сообщения: 402
Статус: Красноглазик со стажем
ОС: Mavericks
Контактная информация:

Re: функции ввода

Сообщение Alxn1 »

MiK13 писал(а):
12.05.2009 15:46
Denjs писал(а):
10.05.2009 00:15
UPD: прочитал тему. Alxn1 дело говорит.
Сам я с этим столкнулся ещё под вендой. Мы на лабах очень замечательно программировали контроллер последовательного порта через In-Out. Под досом и под win95|98.

Программировали в частности для "перехвата мышки" - протокол мышиный простой, и заставить бегать в по экрану "собственный курсор" - большого труда не составляло.
А когда я это (скомпиленное) запускал под 2000-й оно уже не работало.
Я когда-то, около 20 лет назад, написал программу VT52 -- эмулятор терминала VT-52. Были тогда машины типа PDP-11, и стали появляться персоналки. Ну и (в частности) захотелось пользоваться редактором K52 (а про советские полные аналоги VT-52 я даже и не слышал). Программа написана на Borland Pascal, сделана по-простому. В цикле: если бьл введён код с клавиатуры, то он посылается в COM-пор. Если пришёл кодд c COM-порта, то он либо выводится на экран, либо выполняется какое-то действие.
Для приёма данных с COM-порта устанавливается вектор прерывания и пришедшие данные записываюся в кольцевой буфер.
Этой программой (с разными модификациями) пользуемся до сих пор для работы с контроллерами. Работает и под Windows XP.
Denjs писал(а):
10.05.2009 00:15
под 2000-й оно уже не работало.
То, что программа не работала под 2000-й, причина, возможно, была другая -- COM-порт был уже захвачен мышой или чем-то другим. Я не помню. работала ли она под 2000 (сам перешёл от 98 к XP), но, по-моему, уже под 98 бывали проблемы. Если запустить эту программу из FARа или VC, то в другом окне она уже не запустится. Пока не будет снят запускавший её FAR (VC), т.е. при первом запуске эта программа "захватывала" COM-порт и никому его не отдавала.
Также в XP (или в 2000) при запуске программы винда предупреждала, что кто-то пытается получить доступ к портам и требовала разрешения на это.


У вас это все работало потому, что под DOS написано. В Windows DOS-программы запускаются совсем не так, как нативные приложения. Они работают во-первых в эмуляторе (NTVDM), который, во-вторых, переводит во время своей работы процессор в режим V86 (при переключении контекста на NTVDM CPU переходит в режим V86, при обратном переключении - в защиенный режим). Это специальный режим эмуляции (виртуализации) реального режима вот для именно таких случаев. NTVDM перехватывает весь ввод-вывод, дергает обработчики прерываний когда нужно и все такое. COM-порты он тоже эмулирует, скорее всего (ну, точнее виртуализирует, как сейчас говорят) :) Так что ничего удивительного в этом нет. Нативное приложение ни в Windows ни в Linux ничего такого сделать не сможет - ни обработчики прерываний переопределить (не говоря уже о том, что в защищенном режиме таблица векторов прерываний не по 0-му адресу лежит, да и вообще по-другому устроена, и, собственно, доступна только из адресного пространства ядра - не забываем про виртуальную память), ни к портам ввода-вывода доступ иметь - все такие действия просто приводят к вызову соответствующего исключения (особый тип прерывания - в защищенном режиме прерывания аж 3-х типов бывают), обработчик которого в современных ОС приводит к останову и выгрузке провинившегося процесса. А в эмуляторах, типа NTVDM или dosemu (dosbox совсем по-другому работает, там настоящая эмуляция, а не виртуализация за счет V86-режима), конечно, это все возможно, но там тоже не прямой доступ к оборудованию, как бы не казалось и не хотелось :)
Спасибо сказали:
Аватара пользователя
RasenHerz
Сообщения: 1341
ОС: Arch Linux amd64

Re: функции ввода

Сообщение RasenHerz »

скажите, пожалуйста, где может понадобиться 4 одновременно нажатые клавиши?
Спасибо сказали:
_edgbla_
Сообщения: 13
ОС: OpenSUSE

Re: функции ввода

Сообщение _edgbla_ »

RasenHerz, легко, в любой игре/эмуляторе.
Тут не стоит вопрос где надо, вопрос в том как сделать. ;)
Спасибо сказали:
Аватара пользователя
COKPOWEHEU
Сообщения: 47
ОС: Debian (ядро 4.4.2) / Win7

Re: функции ввода

Сообщение COKPOWEHEU »

Stauffenberg. Да, пашет. Вчера что-то не открывалась.
"Да уж, 8 клавиш..., мне что-то думалось что это аппаратное ограничение там, но раз уж человек говорит...,
COKPOWEHEU если найдёте как читать хотя бы 4 одновременно причём любых, отпишитесь,
очень не хватает." В винде я знаю только DirectInput. В DOSe та прога (см выше). Только она ДО 8 клавиш, каких - не помню :) Но не любых. Там какая-то фигня, некоторые клавиши запрещают нажимать другие. 8 одновременно нажатых - это мой рекорд :) Но так - самый крутой ввод под DOS что я видел.
А в Линуксе - не знаю, хотел узнать, вот и написал.
Спасибо сказали:
_edgbla_
Сообщения: 13
ОС: OpenSUSE

Re: функции ввода

Сообщение _edgbla_ »

Хех, жалко, dinput та же лажа, ну в линуксе проще всего получить кнопки, если конечно x есть:
#include <X11/Xlib.h>
char buf[32];
dpy = XOpenDisplay( NULL );
XQueryKeymap( dpy, buf );
где каждый бит кнопка.
Спасибо сказали:
Ответить