当前位置:  技术问答>linux和unix

在字符界面下用C如何截获ctrl+s按键

    来源: 互联网  发布时间:2015-10-04

    本文导语:  在字符界面下用C如何截获ctrl+s按键 | 修改字符注册,将ctrl+s 得注册去掉 看到 stop = ^S; 吗?将 它改调就不会产生SIGSTOP --------------- stty -a speed 38400 baud; rows 42; col...

在字符界面下用C如何截获ctrl+s按键

|
修改字符注册,将ctrl+s 得注册去掉
看到 stop = ^S; 吗?将 它改调就不会产生SIGSTOP
---------------
stty -a
speed 38400 baud; rows 42; columns 125; line = 0;
intr = ^C; quit = ^; erase = ^?; kill = ^U; eof = ^D; eol = ; eol2 = ; start = ^Q; stop = ^S; susp = ^Z;
rprnt = ^R; werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;
-parenb -parodd cs8 -hupcl -cstopb cread -clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -ixany -imaxbel
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke

|
自己定义一个函数,作为信号处理函数

|
#include 
#include 

#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_win;
int highlight = 1;
int choice = 0;
int c;

initscr();
clear();
noecho();
cbreak();
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_choices;
else
--highlight;
break;
case KEY_DOWN:
if(highlight == n_choices)
highlight = 1;
else 
++highlight;
break;
                           case 19:
/*拦不住,按下ctrl+s时没反应*/
                                   break;
case 10:
                            
choice = highlight;
break;
default:
mvprintw(24, 0, "Charcter pressed is = %3d Hopefully it can be printed as '%c'", c, c);
refresh();
break;
}
print_menu(menu_win, highlight);
if(choice != 0)
break;
}
mvprintw(23, 0, "You chose choice %d with choice string %sn", choice, choices[choice - 1]);
clrtoeol();
refresh();
endwin();
return 0;
}
void print_menu(WINDOW *menu_win, int highlight)
{
int x, y, i;
x = 2;
y = 2;
box(menu_win, 0, 0);
for(i = 0; i 

    
 
 

您可能感兴趣的文章:

  • 关于键盘上的按键占几个字符
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • crtl+alt+F1一直到F6都可以从图形到字符,那么,这和纯粹的字符界面有什么区别,也就是该/etc/initab的值为3后进入的字符界面?
  • flyingcrean,怎样快速切换字符界面与X Window图形界面?
  • linux 启动只能进入图形界面,怎么让起动可以进入字符界面?
  • 由于显示器性能,无法启动图形界面,如何更改为字符界面?
  • 图形界面转到字符界面的问题
  • 新手问题,在linux下c/c++开发是在图形界面下还是字符界面下进行?
  • 如何在字符界面下更改linux的X图形界面?
  • ★★★ 如何从字符界面切换到图形界面? ★★★
  • 装好linux后每次启动都自动进入字符界面,请问在哪里可以修改启动后进入图形界面?
  • LINUX安装时的字符界面是用什么界面库写的?
  • ubuntu中怎么从图形界面进入字符界面
  • 怎么样不从图形界面启动而字符黑界面启动?
  • 为什么在图形界面下执行一个可执行程序,老是说找不到该程序,而在字符界面下却ok?
  • 如何回到字符界面
  • Ubuntu11.04版本进入字符界面问题
  • 我安装redhat时,把默认登陆设成了图形界面登陆,不知道在什么地方可以修改成为启动后为字符界面登陆
  • 我写了一个qt的程序,为什么在图形界面下正常,在字符界面下就提示:cannot connect to X server ?
  • 我在VMWARE里安装的Linux9.0总是无法进入字符界面,直接就进入了图形界面里
  • Redhat配置为图形启动,结果图形界面没有配置好,怎么强制它从字符界面登录?
  • 如何把linux下面的一个图形化界面的应用程序改成字符界面?
  • C++ Strings(字符串) 成员 size():返回字符串中字符的数量
  • 关于字符串的操作,我想得到字符串的长度,和他开始两位组成的新的字符串,例如::
  • C++ Strings(字符串) 成员 c_str():将字符串以C字符数组的形式返回
  • 请问怎样判断一个字符是中文字符还是英文字符?(空)
  • C++ Strings(字符串) 成员 find():在字符串中查找字符
  • C语言实现输入一个字符串后打印出该字符串中字符的所有排列
  • C++ Strings(字符串) 成员 end():返回一个迭代器,指向字符串的末尾。(最后一个字符的下一个位置)
  • 用Java正则去掉字符串中重复出现的字符
  • C++ I/O 成员 ignore():读取字符并忽略指定字符
  • 字符字符串加法问题?
  • C++ Strings(字符串) 成员 copy():将内容复制为一个字符数组


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3