免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2152 | 回复: 4

[Linux] 在伪终端下面怎么捕获键盘? [复制链接]

论坛徽章:
0
发表于 2014-07-23 09:25 |显示全部楼层
  1. int main(void)
  2. {
  3.         int buttons_fd;
  4.         int key_value,i=0,count;
  5.         struct input_event ev_key;
  6.        
  7.         buttons_fd = open("/dev/input/event2", O_RDWR);
  8.        
  9.         if (buttons_fd < 0)
  10.         {
  11.                 perror("open device buttons");exit(1);
  12.         }
  13.        
  14.         for (;;)
  15.         {
  16.                 count = read(buttons_fd,&ev_key,sizeof(struct input_event));
  17.                
  18.                 for(i=0; i<(int)count/sizeof(struct input_event); i++)
  19.                         if(EV_KEY == ev_key.type)
  20.                                 printf("type:%d,code:%d,value:%d\n",
  21.                                                 ev_key.type,ev_key.code-1,ev_key.value);
  22.                
  23.                 if(EV_SYN==ev_key.type)
  24.                         printf("syn event\n\n");
  25.         }
  26.        
  27.         close(buttons_fd);

  28.         return 0;
  29. }
复制代码
这段代码,在ubuntu本地是OK的,但是如果是ssh到这台linux上后,就不能捕获键盘输入了。
请问如何在ssh/telnet后,捕获键盘输入?

论坛徽章:
0
发表于 2014-07-23 09:55 |显示全部楼层
ssh/telnet后,试试是走tty或者控制台呢?

论坛徽章:
1
射手座
日期:2013-11-07 09:19:48
发表于 2014-07-23 13:58 |显示全部楼层
你说的“不能捕获”是什么意思?
是read系统调用没有读到结果还是仅仅没有看到printf的打印?
如果是后者,你通过ssh/telnet上去当然无法看到printf的输出,因为printf是打印到标准输出的。试试把要打印的信息写到/dev/pts目录下面的设备文件去。

论坛徽章:
1
射手座
日期:2013-11-07 09:19:48
发表于 2014-07-23 14:00 |显示全部楼层
你说的“不能捕获”是什么意思?
是read系统调用没有读到结果还是仅仅没有看到printf的打印?
如果是后者,你通过ssh/telnet上去当然无法看到printf的输出,因为printf是打印到标准输出的。试试把要打印的信息写到/dev/pts目录下面的设备文件去。

论坛徽章:
0
发表于 2014-07-23 14:43 |显示全部楼层
回复 3# guocslock

ssh上去,看不到/dev/input/eventX文件,所有没有地方读这个事件。

   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP