Аналоги библиотек bios.h и conio.h в linux
LinAdmin 22 апреля, 2010 - 21:07
Приветствую всех пользователей самой правильной ОСи!
Знает ли кто нибудь аналоги библиотек bios.h и conio.h в linux?
Гугл ответов не дал. На ЛОРе предлогали сделать через перехват управления клавиатурой, но такой вариант меня не устраивает,
так как при аварийном завершении программы будет потеряно управление клавиатурой.
Если есть на форуме опытные программеры, подскажите что нибудь.
»
- Для комментирования войдите или зарегистрируйтесь
За время участия в нашем
За время участия в нашем сообществе вы могли бы уже научится спрашивать решение _проблемы_, а не вашего видения этой проблемы.
По делу: я понятия не имею, что делают заголовочные файлы bios.h и conio.h (т.к. никогда не программировал под не лучшую в мире ОС =)), зачем они нужны, но подозреваю, что делает много и разного. Также я подозреваю, что bios.h предоставляет какие-то функции работы с биосом напрямую. Тут вы обломитесь, ибо это не ДОС и тут доступ до железа, в т.ч. до железного firmware (в т.ч. до BIOS), запрещен. Даже если вы как-то хитро попробуйте извернуться и таки получить доступ до железа напрямую, результатом будет только то. что ядро убьет ваш нерадивый процесс.
И это, заметьте, правильно и решает очень многие проблемы дос-подобных систем. Так что, с 99% вероятностью, вам такой функционал не нужен. Скажите что вам нужно сделать, быть может вам подскажут какой функционал для этого можно (нужно) использовать. Ну или если вы хотите огрести радости на свою буйную голову - можете написать модуль для ядра, там можно делать все и как угодно. В т.ч. там наверняка есть какие-то педали для управления биосом и клавиатурой.
P.S. "так как при аварийном завершении программы будет потеряно управление клавиатурой.". а) не надо писать программы с расчетом на аварийное завершение. б) когда программа завершается, по любым причинам, любое управление ей чего-либо должно быть прекращено. Или вы что-то иное имели ввиду?
Попытаюсь объяснить что
Попытаюсь объяснить что конкретно мне надо.
мне эта библиотека нужна для навигации по графическому интерфейсу (как у mc).
от этой библиотеки мне нужна функция int getch(void) которая считывает символ напрямую из консоли без использования буфера и echo-вывода.
Вот как-то так.
Если ничего не помогает, прочти наконец инструкцию...
По поводу conio: Вам
По поводу conio: Вам требуется сделать _свой_ интерфейс? Если нет - грамотнее будет воспользоваться ncurses.
man getch
- там подробно описано.Насчет i/o - это такой страшный велосипед. Вы можете включить rawhid в ядре и читать прямо то, что кидает вам клавиатура (это будет практически аналогично), но, все же, лучше воспользоваться стандартными интерфейсами, например т.н. evdev (/dev/input/event*). Как им пользоваться можно посмотреть в сотне различных прог вроде jstest и actkbd.
Ну и да, в 99% случаев это не нужно. ncurses предоставляет все возможности для ввода/вывода без таких ухищрений (если, опять же, ваше задача не состоит в преднамеренном усложнении себе жизни). По ncurses найти информацию очень просто, в т.ч. огромное количество примеров, даже очень мелких, вроде aplay.
Если говорить от навигации
Если говорить от навигации "как в mc", то упоминание ncurses несколько устарело. mc давным давно использует библиотеку slang. Автор же топика говорит о "графическом интерфейсе", что наводит на мысль об иксовых приложениях. В связи с чем неплохо было б узнать с помощью какой библиотеки он этот графический интерфейс реализует, ибо под линем вариаций выше крыши, начиная с голого икса или простеньких fltk/fox и заканчивая монстрами типа qt/gtk.
Сырье из клавиатуры можно прочесть из /dev/input/..... но делать сие позволено только руту ( и всем кто входит в группу рут ) по вполне понятным причинам. Ни один рут не отдаст вам возможность перехватывать клавиатурный ввод от всех программ.
>Сырье из клавиатуры можно
>Сырье из клавиатуры можно прочесть из /dev/input/..... но делать сие позволено только руту ( и всем кто входит в группу рут ) по вполне >понятным причинам. Ни один рут не отдаст вам возможность перехватывать клавиатурный ввод от всех программ.
можно создать демона и пинать его по dbus напимер )
Я понимаю "навигация как в
Я понимаю "навигация как в mc" в более широком смысле - всмысле "псевдографика". И я на 99% процентов уверен, что автор имел ввиду именно её. С псевдографикой работает несколько библиотек, в т.ч. и slang. Однако мне более известна ncurses и я могу назвать хотя бы одну небольшую программу её использующую. Про сланг я знаю весьма мало, увы. Может вы чего посоветуете.
Про /dev/input/...: ну, человек же просит аналог педалей биоса в виндах. Я думаю (надеюсь!), что использование этих педалей обычным смертным там тоже запрещено. Их (обычных смертных) там, правда, редко видят...
Тут вся соль в постановке задачи. Если это какой-нить институтский маразм, который просто не рассчитан на то, что кто-то будет писать в среде отличной от Х (причем именно среде, а не ОС, так часто бывает), то тут покатит что угодно. Если же требуется порт существующего решения с виндов на линукс, то тут надо смотреть на оригинальную архитектуру - переписывание на ncurses/slang/... может оказаться чрезмерным (хотя и чтение /dev/input тоже).
В общем мой вам совет
В общем мой вам совет посмотрите как устроем stdio в линуксе. из ваших постов я например так и не понял что конкретно вы хотите сделать кейлоггер какой?
Как раз я вначале и подумал
Как раз я вначале и подумал про stdin/stdout, но нормальной документации так и не нашел.
А вообще мне надо некий аналог bioskey, тоесть чтение символа с клавиатуры. В примере выше все достаточно хорошо показано и расказано.
Да я знаю что это педали, но выбора у меня нету...
Вот что конкретно мне надо:
на экран выводится квадрат (например) и при помощи стрелок на клавиатуре пользоваетль может управлять этим квадратом по экрану.
Буду очень благодарен если кто нибудь поделится исходным кодом с коментариями.
Если ничего не помогает, прочти наконец инструкцию...
Это надо сделать с
Это надо сделать с применением чисто системных библиотек? Или может можно использовать SDL?
посмотрите как сделано в
посмотрите как сделано в софте с подобными возможностями. Например, alsamixer.
Ну вы тут позагибали, сразу
Ну вы тут позагибали, сразу видно хардкодных программеров :)
квадрат по экрану гоняется с помощю 10 строчек на баше :).
И пакета dialog.
P.S alsaconf и прочие конфигурялки именно на нем :)
Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)
Интересует реализация только
Интересует реализация только на C/C++. На баше с диалогом я бы смог написать, ибо документация по нему есть.
Если ничего не помогает, прочти наконец инструкцию...