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

Red Hat linux 图形界面下模拟键盘事件如何实现?

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

    本文导语:  各位高手:     我在 linux下通过程序(c)获得一个字符串,我想把它传给 浏览器中的一个文本输入框.应该怎么实现?是否需要 模拟键盘事件?     各位给点思路,小弟 刚开始C的学习,就要做这个,郁闷阿 ...

各位高手:
    我在 linux下通过程序(c)获得一个字符串,我想把它传给 浏览器中的一个文本输入框.应该怎么实现?是否需要 模拟键盘事件?
    各位给点思路,小弟 刚开始C的学习,就要做这个,郁闷阿

|
这里有一个例子仅供参考! 这个programme完成的功能是在终端下实现键盘输入~~

/* key.c */

/* mapping keycode-keysym */

#include 
#include 
#include 
#include 

GC      gc; 
Display *display; 
int     screen; 
Window  win, root; 
unsigned long white_pixel, black_pixel; 
int nbre_keysym, i, minkc, maxkc, nbrekc;
 
main() {
  display = XOpenDisplay ("");
  XDisplayKeycodes (display, &minkc, &maxkc);
  nbrekc = maxkc - minkc + 1 ;
  printf("%d keycodes de %d a %dn", nbrekc, minkc, maxkc);
  XGetKeyboardMapping(display, minkc, nbrekc, &nbre_keysym);
  printf("nombre maximal de keysyms par keycode : %dn", nbre_keysym);
  screen = DefaultScreen (display);
  gc = DefaultGC (display, screen);
  root = RootWindow (display, screen); 
  white_pixel = WhitePixel (display, screen); 
  black_pixel = BlackPixel (display, screen); 
  win = XCreateSimpleWindow (display, root, 0, 0,  
     200, 50, 2, black_pixel, white_pixel);
  XSelectInput (display, win, ExposureMask | ButtonPressMask | KeyPressMask);
  XStoreName (display, win, "key"); 
  XMapRaised (display, win); 
 
  for (;;) { 
    XEvent ev; 
    KeySym touche, keysym;
    char caractere[10], modifiers[40];
    int nbre;

    XNextEvent (display, &ev);
    switch (ev.type) { 
    case Expose :  
      XDrawString (display, win, gc, 10, 10, 
   "Enfoncez une touche du clavier", 30);
      XDrawString (display, win, gc, 10, 25, 
   "avec touches modifiers ou sans", 30);
      break; 
    case ButtonPress :
      exit(0);
    case KeyPress :
      nbre = XLookupString(&ev, caractere, 10, &touche, 0);
      caractere[nbre] = '';
      printf("Le keycode est %d (0x%x), le keysym est %d (0x%x)n",
      ev.xkey.keycode, ev.xkey.keycode,
      XKeysymToString(touche), touche);
      if (nbre == 0)
printf("La chaine ascii correspondante est viden");
      else
printf("La chaine ascii obtenue est %sn", caractere);
      modifiers[0] = '';
      if (ev.xkey.state & ShiftMask)
strcat(modifiers, "Shift ");
      if (ev.xkey.state & LockMask)
strcat(modifiers, "Lock ");
      if (ev.xkey.state & ControlMask)
strcat(modifiers, "Control ");
      if (ev.xkey.state & Mod1Mask)
strcat(modifiers, "Mod1 ");
      if (ev.xkey.state & Mod2Mask)
strcat(modifiers, "Mod2 ");
      if (strlen(modifiers) == 0)
printf("Aucun modifier actifn");
      else
printf("Modifiers actifs %sn", modifiers);
      printf("Liste des keysyms associes : ");
      for (i = 0; i 

    
 
 

您可能感兴趣的文章:

  • 我装的是Red Hag Linux 9.0 装完可以进入图形界面,可是我想进入控制台界面,怎么进入,从图形界面可以进入吗?
  • 急!急!red hat linux9.0 安装完成不能进入图形界面
  • red hat 9.0 如何进入图形界面?
  • 在Red hat 是否支持类似windows的远程终端进行图形界面操作?
  • 调查:大家用red hat7.3一般是用字符界面还是用图形界面?
  • Red Hat Linux7.2的GNOME图形方式下如何切换到文本方式?
  • 我的Red Hat Linux 7.0 是图形方式登陆,怎样配置成文本登陆模式?
  • 启动的时候如何不让Red Hat进入图形界面?
  • red hat 哪个版本速度快?我装了8.0,9.0的图形界面都慢得像老牛一样?帮帮忙!
  • 如何在vmware下安装red hat linux7的图形界面?
  • Red Hat Linux 9在图形界面下内存使用率为什么很高?
  • 为何我装的Red hat 9.0进不去图形界面呢?
  • 有关Red hat linux9.0从图形模式转换成文字模式的小问题~~~(新手)
  • DELL Inspiron 600m,安装Red Hat Linux后无法显示图形界面,还请高手指点,急!!!
  • red hat 9系统装好后,进去的X界面,我想从X界面转到命令行的工作模式~~~~~~~
  • 菜鸟问题:在red hat 9 下如何改变netscapt7界面字体?
  • red hat 9 下如何安装 X-Window界面
  • 在安装 RED HAT LINUX 9.0时,刚进入安装界面就不动了
  • 我在Red Hat9下装netbeans中文装,可是在安装时和安装后界面中的中文一直是□形状,要怎么解决。
  • 在red hat 9中安装oracle9i时,安装界面出现乱码
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • red hat在vware不识别小键盘,怎么办?
  • Miniquestion! red hat 9.0 如何用键盘选择到任务栏上?
  • java命名空间java.awt类color的类成员方法: red定义及介绍
  • 痛苦!!我使用red hat 9来配置DNS,在red hat 9的本地机器上用host测试成功,但在windows机器上已经设置了DNS为red hat9的IP地址后仍然
  • 我使用red hat 9来配置DNS,在red hat 9的本地机器上用host测试成功,但在windows机器上已经设置了DNS为red hat9的IP地址后仍然无法解析r
  • 请问各位大侠,有誰知道red linux 7.x和red advanced server 2.1的区别呢?
  • 如何卸载red linux9.0?我第一块硬盘装的win2000,第二块硬盘分出10G装的red linux9.0,grub安装到第一块硬盘的mbr中了,如何安全的删除red
  • red hat 8.0和red hat 9.0有什么区别
  • Linux Red hat 9.0 与 Red Hat Enterprise 的问题
  • [高分求问]Red Hat Linux 10 和 Red Hat Enterprise Linux AS 4.0 区别?
  • fc4/fc6 与red as 3/red as4 的主要区别是什么?
  • Red Hat Linux 9.0 和Red Hat Enterprise Linux as 4.0
  • WEB前端 iis7站长之家
  • Red hat Linux9 和Red hat Linux As有什么区别??
  • red hat安装问题:先装win xp后就不能装red hat了?
  • 同样的程序,语句system在red3up9(32位)上运行正常,而在red4up5(64位)上运行却返回-1???
  • Red Hat 好象就出到9,我又是RedHat的爱好者,以后怎么办啊? 还有,请问Red Hat 9的内核是多少?
  • 本人最近安装了red hat 7.3,但FTP服务无法启动,请教大虾们red hat 7.3的FTP详尽配置方案,急急急急!!!
  • 我的系统先装的win2000后装的red linux 9 一次非正常起动后,提示grub错误,我就用dos盘起动,并fdisk/mbr了,如何修复gurb并引导red lin
  • red hat linux 9虚拟机安装
  • red5-0.6.3编译失败
  • 我装了Red Hat9.0,如何卸掉装Forade Core 5.0?
  • windows 引导 red hat 不成功...为何?


  • 站内导航:


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

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

    浙ICP备11055608号-3