Проблема в си
- constab
- Неотъемлемая часть форума
- Сообщения: 241
- Зарегистрирован: 17 авг 2004, 11:36
- Откуда: Минск
- Контактная информация:
Проблема в си
У меня есть некая программа, в которой при нажатии определенных клавиш на клавиатуре, должны выполняться определенные действия (разные). Как узнать код нажатой клавиши?? Пытался работать с getch, но ничего не выходит
Хачу крыху паразумнець!
1. Выполнить настройку режимов консоли с помощью ioctl
2. Открыть файловое устройство консоли на чтение
3. Считывать в цикле поступающие по мере ввода int из полученного дескриптора и декодировать.
Пример - console-tools sources, файл showkey.c
Дополнительно: man ioctl, man tcgetattr, man terminfo,
http://www.tldp.org/HOWTO/Keyboard-and- ... HOWTO.html
Если это не поможет - значит, системным программированием Вам заниматься нежелательно.
Rgds,
RST#13
2. Открыть файловое устройство консоли на чтение
3. Считывать в цикле поступающие по мере ввода int из полученного дескриптора и декодировать.
Пример - console-tools sources, файл showkey.c
Дополнительно: man ioctl, man tcgetattr, man terminfo,
http://www.tldp.org/HOWTO/Keyboard-and- ... HOWTO.html
Если это не поможет - значит, системным программированием Вам заниматься нежелательно.
Rgds,
RST#13
Hack'em, and their law (c)
- constab
- Неотъемлемая часть форума
- Сообщения: 241
- Зарегистрирован: 17 авг 2004, 11:36
- Откуда: Минск
- Контактная информация:
Неужели в linux-е так на си так сложно узнать какую кнопку(клавишу) нажал пользователь???
Даже в pascal-е это было достаточно просто, не говорю о delphi...
Суть программы заключается в том, что при нажатии клавиши ESC программа завершает работу, а при нажатии других клавиш выполняются другие функции...
Плиз помогите... Киньте исходник, вам профессионалам в си это не сложно..
Даже в pascal-е это было достаточно просто, не говорю о delphi...
Суть программы заключается в том, что при нажатии клавиши ESC программа завершает работу, а при нажатии других клавиш выполняются другие функции...
Плиз помогите... Киньте исходник, вам профессионалам в си это не сложно..
Хачу крыху паразумнець!
-
- Неотъемлемая часть форума
- Сообщения: 434
- Зарегистрирован: 12 апр 2004, 11:00
- Откуда: г. Владивосток
- Контактная информация:
Код: Выделить всё
#include <curses.h>
int main()
{
initscr();
cbreak();
while(getch() != 27);
endwin();
return 0;
}
- Silos
- Неотъемлемая часть форума
- Сообщения: 287
- Зарегистрирован: 15 фев 2004, 19:04
- Откуда: Belarus, Minsk
- Контактная информация:
RST#13 помоему уже сказал правильный и быстрый способ.constab писал(а):Неужели в linux-е так на си так сложно узнать какую кнопку(клавишу) нажал пользователь???
Даже в pascal-е это было достаточно просто, не говорю о delphi...
Суть программы заключается в том, что при нажатии клавиши ESC программа завершает работу, а при нажатии других клавиш выполняются другие функции...
Плиз помогите... Киньте исходник, вам профессионалам в си это не сложно..
- constab
- Неотъемлемая часть форума
- Сообщения: 241
- Зарегистрирован: 17 авг 2004, 11:36
- Откуда: Минск
- Контактная информация:
У меня не компилируется...
[constab@localhost cc]$ cc temp.c
temp.c:9:3: warning: no newline at end of file
/home/constab/tmp/cctNmyNP.o(.text+0x1d): In function `main':
: undefined reference to `initscr'
/home/constab/tmp/cctNmyNP.o(.text+0x22): In function `main':
: undefined reference to `cbreak'
/home/constab/tmp/cctNmyNP.o(.text+0x2b): In function `main':
: undefined reference to `stdscr'
/home/constab/tmp/cctNmyNP.o(.text+0x30): In function `main':
: undefined reference to `wgetch'
/home/constab/tmp/cctNmyNP.o(.text+0x3f): In function `main':
: undefined reference to `endwin'
collect2: ld returned 1 exit status
[constab@localhost cc]$
Код: Выделить всё
#include <curses.h>
int main()
{
initscr();
cbreak();
while(getch() != 27);
endwin();
return 0;
}
temp.c:9:3: warning: no newline at end of file
/home/constab/tmp/cctNmyNP.o(.text+0x1d): In function `main':
: undefined reference to `initscr'
/home/constab/tmp/cctNmyNP.o(.text+0x22): In function `main':
: undefined reference to `cbreak'
/home/constab/tmp/cctNmyNP.o(.text+0x2b): In function `main':
: undefined reference to `stdscr'
/home/constab/tmp/cctNmyNP.o(.text+0x30): In function `main':
: undefined reference to `wgetch'
/home/constab/tmp/cctNmyNP.o(.text+0x3f): In function `main':
: undefined reference to `endwin'
collect2: ld returned 1 exit status
[constab@localhost cc]$
Хачу крыху паразумнець!
- constab
- Неотъемлемая часть форума
- Сообщения: 241
- Зарегистрирован: 17 авг 2004, 11:36
- Откуда: Минск
- Контактная информация:
Может нужно использовать не
а что-то другое??
Приду домой, попробую поискать, какую библиотек нужно использовать...
Код: Выделить всё
#include <curses.h>
Приду домой, попробую поискать, какую библиотек нужно использовать...
Хачу крыху паразумнець!