新手园地& & & 硬件问题Linux系统管理Linux网络问题Linux环境编程Linux桌面系统国产LinuxBSD& & & BSD文档中心AIX& & & 新手入门& & & AIX文档中心& & & 资源下载& & & Power高级应用& & & IBM存储AS400Solaris& & & Solaris文档中心HP-UX& & & HP文档中心SCO UNIX& & & SCO文档中心互操作专区IRIXTru64 UNIXMac OS X门户网站运维集群和高可用服务器应用监控和防护虚拟化技术架构设计行业应用和管理服务器及硬件技术& & & 服务器资源下载云计算& & & 云计算文档中心& & & 云计算业界& & & 云计算资源下载存储备份& & & 存储文档中心& & & 存储业界& & & 存储资源下载& & & Symantec技术交流区安全技术网络技术& & & 网络技术文档中心C/C++& & & GUI编程& & & Functional编程内核源码& & & 内核问题移动开发& & & 移动开发技术资料ShellPerlJava& & & Java文档中心PHP& & & php文档中心Python& & & Python文档中心RubyCPU与编译器嵌入式开发驱动开发Web开发VoIP开发技术MySQL& & & MySQL文档中心SybaseOraclePostgreSQLDB2Informix数据仓库与数据挖掘NoSQL技术IT业界新闻与评论IT职业生涯& & & 猎头招聘IT图书与评论& & & CU技术图书大系& & & Linux书友会二手交易下载共享Linux文档专区IT培训与认证& & & 培训交流& & & 认证培训清茶斋投资理财运动地带快乐数码摄影& & & 摄影器材& & & 摄影比赛专区IT爱车族旅游天下站务交流版主会议室博客SNS站务交流区CU活动专区& & & Power活动专区& & & 拍卖交流区频道交流区
白手起家, 积分 140, 距离下一级还需 60 积分
论坛徽章:0
不用cursors.h,C中如何判断呀?
&&&&&&&&&&
& |& & |& & |& & |& 
白手起家, 积分 140, 距离下一级还需 60 积分
论坛徽章:0
请问如何判断键盘输入为F1,F2,F3,上下键,左右键等
怎么没人帮我呀?
论坛徽章:1
请问如何判断键盘输入为F1,F2,F3,上下键,左右键等
http://www.linux.org/docs/ldp/howto/NCURSES-Programming-HOWTO/keys.html
11. Key management. How to read function keys, arrow keys etc..
11.1. The Basics
No GUI is complete without a strong user interface and to interact with the user, a curses program should be sensitive to key presses or the mouse actions done by the user. Let's deal with the keys first.
As you have seen in almost all of the above examples, it's very easy to get key input from the user. A simple way of getting key presses is to use getch() function. The cbreak mode should be enabled to read keys when you are interested in reading individual key hits rather than complete lines of text (which usually end with a carriage return). keypad should be enabled to get the Functions keys, arrow keys etc. See the initialization section for details.
getch() returns an integer corresponding to the key pressed. If it is a normal character, the integer value will be equivalent to the character. Otherwise it returns a number which can be matched with the constants defined in curses.h. For example if the user presses F1, the integer returned is 265. This can be checked using the macro KEY_F() defined in curses.h. This makes reading keys portable and easy to manage.
For example, if you call getch() like this
& & ch = getch();
getch() will wait for the user to press a key, (unless you specified a timeout) and when user presses a key, the corresponding integer is returned. Then you can check the value returned with the constants defined in curses.h to match against the keys you want.
The following code piece will do that job.
& & if(ch == KEY_LEFT)
& && &&&printw(&Left arrow is pressed\n"
Let's write a small program which creates a menu which can be navigated by up and down arrows.
11.2. A Simple Key Usage example
Example 10. A Simple Key Usage example
#include &stdio.h&;
#include &ncurses.h&;
#define WIDTH 30
#define HEIGHT 10
int startx = 0;
int starty = 0;
char *choices[] = {
& & & & & & & & & & & & &Choice 1&,
& & & & & & & & & & & & &Choice 2&,
& & & & & & & & & & & & &Choice 3&,
& & & & & & & & & & & & &Choice 4&,
& & & & & & & & & & & & &Exit&,
& & & & & & & && &};
int n_choices = sizeof(choices) / sizeof(char *);
void print_menu(WINDOW *menu_win, int highlight);
int main()
{& & & & WINDOW *menu_
& & & & int highlight = 1;
& & & & int choice = 0;
& & & &
& & & & initscr();
& & & & clear();
& & & & noecho();
& & & & cbreak();& & & & /* Line buffering disabled. pass on everything */
& & & & startx = (80 - WIDTH) / 2;
& & & & starty = (24 - HEIGHT) / 2;
& & & & & & & &
& & & & menu_win = newwin(HEIGHT, WIDTH, starty, startx);
& & & & keypad(menu_win, TRUE);
& & & & mvprintw(0, 0, &Use arrow keys to go up and down, Press enter to select a choice&);
& & & & refresh();
& & & & print_menu(menu_win, highlight);
& & & & while(1)
& & & & {& & & & c = wgetch(menu_win);
& & & & & & & & switch(c)
& & & & & & & & {& & & & case KEY_UP:
& & & & & & & & & & & & & & & & if(highlight == 1)
& & & & & & & & & & & & & & & & & & & & highlight = n_
& & & & & & & & & & & & & & & & else
& & & & & & & & & & & & & & & & & & & & --
& & & & & & & & & & & & & & & &
& & & & & & & & & & & & case KEY_DOWN:
& & & & & & & & & & & & & & & & if(highlight == n_choices)
& & & & & & & & & & & & & & & & & & & & highlight = 1;
& & & & & & & & & & & & & & & & else
& & & & & & & & & & & & & & & & & & & & ++
& & & & & & & & & & & & & & & &
& & & & & & & & & & & & case 10:
& & & & & & & & & & & & & & & & choice =
& & & & & & & & & & & & & & & &
& & & & & & & & & & & & default:
& & & & & & & & & & & & & & & & mvprintw(24, 0, &Charcter pressed is = %3d Hopefully it can be printed as '%c'&, c, c);
& & & & & & & & & & & & & & & & refresh();
& & & & & & & & & & & & & & & &
& & & & & & & & }
& & & & & & & & print_menu(menu_win, highlight);
& & & & & & & & if(choice != 0)& & & & /* User did a choice come out of the infinite loop */
& & & & & & & & & & & &
& & & & }& & & &
& & & & mvprintw(23, 0, &You chose choice %d with choice string %s\n&, choice, choices[choice - 1]);
& & & & clrtoeol();
& & & & refresh();
& & & & endwin();
& & & & return 0;
}
void print_menu(WINDOW *menu_win, int highlight)
{
& & & & int x, y,& & & &
& & & & x = 2;
& & & & y = 2;
& & & & box(menu_win, 0, 0);
& & & & for(i = 0; i & n_ ++i)
& & & & {& & & & if(highlight == i + 1) /* High light the present choice */
& & & & & & & & {& & & & wattron(menu_win, A_REVERSE);
& & & & & & & & & & & & mvwprintw(menu_win, y, x, &%s&, choices[i]);
& & & & & & & & & & & & wattroff(menu_win, A_REVERSE);
& & & & & & & & }
& & & & & & & & else
& & & & & & & & & & & & mvwprintw(menu_win, y, x, &%s&, choices[i]);
& & & & & & & & ++y;
& & & & }
& & & & wrefresh(menu_win);
}
白手起家, 积分 140, 距离下一级还需 60 积分
论坛徽章:0
请问如何判断键盘输入为F1,F2,F3,上下键,左右键等
gadfly不过你还是没有解决我的问题哦.我想不用curses.h呀.
稍有积蓄, 积分 268, 距离下一级还需 232 积分
论坛徽章:0
请问如何判断键盘输入为F1,F2,F3,上下键,左右键等
那你想用什么?你到windows上去吧
论坛徽章:1
请问如何判断键盘输入为F1,F2,F3,上下键,左右键等
/a4/b2/000597.html
如何在 Linux 中得到特殊键的扫描码?
在这两个文件有定义了:
/usr/include/linux/kd.h
/usr/include/linux/keyboard.h
用ioctl() 去设置keymap,用 read() 去读键盘返回的值
白手起家, 积分 140, 距离下一级还需 60 积分
论坛徽章:0
请问如何判断键盘输入为F1,F2,F3,上下键,左右键等
可是我的是AIX啊,没有KD.H,KEYBOARD.H呢
论坛徽章:1
请问如何判断键盘输入为F1,F2,F3,上下键,左右键等
//faint, AIX我这现在没环境。
看看这个有没有用
http://www.unet.univie.ac.at/aix/libs/commtrf1/g32_send_keys.htm
实在不行,那你自己定义这些键的码值,read出来的时候比较一下就好了
腰缠万贯, 积分 9120, 距离下一级还需 880 积分
论坛徽章:0
请问如何判断键盘输入为F1,F2,F3,上下键,左右键等
如果把终端设置成raw模式后可以读进来
但这样可能比较麻烦
设置函数是
最简单的应该是使用ncurses了
白手起家, 积分 181, 距离下一级还需 19 积分
论坛徽章:0
请问如何判断键盘输入为F1,F2,F3,上下键,左右键等
可以两次调用getch,判断键直,可是还是要连curse
北京盛拓优讯信息技术有限公司. 版权所有 京ICP备号 北京市公安局海淀分局网监中心备案编号:22
广播电视节目制作经营许可证(京) 字第1234号
中国互联网协会会员&&联系我们:
感谢所有关心和支持过ChinaUnix的朋友们
转载本站内容请注明原作者名及出处& GTA4笔记本如何使用修改器
查看: 9952|回复: 8
UID4259673主题阅读权限20帖子精华0积分7金钱46 荣誉0 人气0 在线时间0 小时评议0
Lv.2游侠会员, 积分 7, 距离下一级还需 193 积分
帖子精华0积分7金钱46 荣誉0 人气0 评议0
GTA4***了修改器,但是我用的是笔记本
按NMLK+FN开启小键盘
按F1调处命令后只有8键是上翻,1~7仍然都是武器选择
UID4259673主题阅读权限20帖子精华0积分7金钱46 荣誉0 人气0 在线时间0 小时评议0
Lv.2游侠会员, 积分 7, 距离下一级还需 193 积分
帖子精华0积分7金钱46 荣誉0 人气0 评议0
求解。。。。。。。。。。。。。。。。。。。。。。
UID4259673主题阅读权限20帖子精华0积分7金钱46 荣誉0 人气0 在线时间0 小时评议0
Lv.2游侠会员, 积分 7, 距离下一级还需 193 积分
帖子精华0积分7金钱46 荣誉0 人气0 评议0
没有用笔记本的吗????????????
UID4259673主题阅读权限20帖子精华0积分7金钱46 荣誉0 人气0 在线时间0 小时评议0
Lv.2游侠会员, 积分 7, 距离下一级还需 193 积分
帖子精华0积分7金钱46 荣誉0 人气0 评议0
没有用笔记本的吗????????????
UID4259673主题阅读权限20帖子精华0积分7金钱46 荣誉0 人气0 在线时间0 小时评议0
Lv.2游侠会员, 积分 7, 距离下一级还需 193 积分
帖子精华0积分7金钱46 荣誉0 人气0 评议0
没有用笔记本的吗????????????
UID4259673主题阅读权限20帖子精华0积分7金钱46 荣誉0 人气0 在线时间0 小时评议0
Lv.2游侠会员, 积分 7, 距离下一级还需 193 积分
帖子精华0积分7金钱46 荣誉0 人气0 评议0
没有用笔记本的吗????????????
UID4259673主题阅读权限20帖子精华0积分7金钱46 荣誉0 人气0 在线时间0 小时评议0
Lv.2游侠会员, 积分 7, 距离下一级还需 193 积分
帖子精华0积分7金钱46 荣誉0 人气0 评议0
没有用笔记本的吗????????????
UID5328284主题阅读权限10帖子精华0积分4金钱137 荣誉0 人气0 在线时间2 小时评议0
Lv.1游侠新人, 积分 4, 距离下一级还需 1 积分
帖子精华0积分4金钱137 荣誉0 人气0 评议0
我和你一样尴尬。。[害怕][害怕][害怕][害怕]
UID6398172主题阅读权限10帖子精华0积分1金钱36 荣誉0 人气0 在线时间5 小时评议0
Lv.1游侠新人, 积分 1, 距离下一级还需 4 积分
帖子精华0积分1金钱36 荣誉0 人气0 评议0
I=5,U=4,O=6,K=2,M=0,在键盘上可以看出来,很小,很浅的数字
Powered by