德才手游网:十大热门手游排行榜2023前十名,十大热门手机应用排行榜2023前十名,让你Get最新手游应用、分享你的热辣点评。
网站地图
你的位置: 首页 > 游戏资讯 > 操作系统

linux input subsystem虚拟键盘和鼠标

  • 2023-05-10 05:19:39
  • 来源:未知
  • 在手机上看

    扫一扫立即进入手机端

  1 event device

  in /dev/input/event?

  cat data from /dev/input/event? the data format is :

  struct input_event {

  struct timeval time;

  __u16 type;

  __u16 code;

  __s32 value;

  };

  e.g :

  xx xx xx xx yy yy yy yy tt tt cc cc vv vv vv vv

  xx is usec

  yy is sec

  tt is type

  cc is key code

  vv is value, might be it means keyup or keydown

  for mouse event, you can get the same message format

  xx, yy is the same as keyboard

  tt is EV_REL, it means the value feild is relative distance;

  cc is REL_X or REL_Y

  vv is the value of relative distance

  2 register input_dev

  /**************************

  for virtual mouse

  **/

  static int vkm_vmouse_register(void)

  {

  struct input_dev *vmouse_dev;

  vmouse_dev = input_allocate_device();

  if (!vmouse_dev)

  return -ENOMEM;

  vmouse_dev->name = “VMouse “;

  vmouse_dev->phys = “xxmouse/input1“;

  vmouse_dev->id.bustype = BUS_HOST;

  vmouse_dev->id.vendor = 0x0001;

  vmouse_dev->id.product = 0x0002;

  vmouse_dev->id.version = 0x0100;

  vmouse_dev->evbit[0] = BIT_MASK(EV_KEY) | BIT_MASK(EV_REL);

  vmouse_dev->keybit[BIT_word(BTN_MOUSE)] =

  BIT_MASK(BTN_LEFT) | BIT_MASK(BTN_RIGHT);

  vmouse_dev->relbit[0] = BIT_MASK(REL_X) | BIT_MASK(REL_Y);

  /* error check */

  error = input_register_device(vmouse_dev);

  if (error) {

  input_free_device(vmouse_dev);

  return error;

  }

  }

  /**************************

  for virtual keyboard

  **/

  static int vkm_vkbd_register(void)

  {

  int i, error;

  struct input_dev *vkbd_dev;

  vkbd_dev = input_allocate_device();

  if (!vkbd_dev)

  return -ENOMEM;

  vkbd_dev->name = “VKBD Keyboard“;

  vkbd_dev->phys = “atakbd/input0“;

  vkbd_dev->id.bustype = BUS_HOST;

  vkbd_dev->id.vendor = 0x0001;

  vkbd_dev->id.product = 0x0001;

  vkbd_dev->id.version = 0x0100;

  vkbd_dev->evbit[0] = BIT_MASK(EV_KEY) | BIT_MASK(EV_REP);

  vkbd_dev->keycode = atakbd_keycode;

  vkbd_dev->keycodesize = sizeof(unsigned char);

  vkbd_dev->keycodemax = ARRAY_SIZE(atakbd_keycode);

  for (i = 1; i < 0x72; i++) {

  set_bit(atakbd_keycode[i], vkbd_dev->keybit);

  }

  /* error check */

  error = input_register_device(vkbd_dev);

  if (error) {

  input_free_device(vkbd_dev);

  return error;

  }

  return 0;

  }

  send keyboard event to input handler like this:

  input_report_key(vkbd_dev,KEY_A,0);

  input_sync(vkbd_dev);

  and send mouse event to input handler like this:

  input_report_rel(vmouse_dev, REL_X, 10);

  input_report_rel(vmouse_dev, REL_Y, 10);

  input_sync(vmouse_dev);

游戏推荐

Linux input subsyste linuxinputsubsystem虚拟键盘和鼠标 ps5使命召唤黑色行动4(ps5使命召唤黑色行动4能接键盘鼠标吗) 2k18挡拆按键键盘(2k21键盘挡拆) jump大乱斗键盘按键设置(jump大乱斗键盘操作) fifaonline4氮气加速怎么按(fifaol4氮气加速键盘) nba2k18挡拆用手柄怎么按(2k18挡拆按键键盘) jump大乱斗键盘按键设置(jump大乱斗键盘) jump大乱斗p2键盘怎么改(jump大乱斗怎么换成键盘) jump大乱斗怎么改键盘键位(jump大乱斗键盘操作怎么改) nba2k19怎么转身过人键盘(2k19怎么过人键盘过人) 2k19锁定防守键盘(2k21防守锁定) jump大乱斗键盘设置教程(jump大乱斗键盘设定在哪) 《鬼泣5》新手键盘改键推荐(鬼泣五改为键盘) jump大乱斗p2键盘怎么改(jump大乱斗键位怎么改) jump大乱斗键盘按键技能(jump大乱斗键盘按键对应) 《鬼泣5》pc版键盘改建设置推荐(《鬼泣5》pc版键盘改建设置推荐) 《双人成行》可以两个人用一个键盘吗怎么玩(双人成行能不能用一个键盘) nba2k19扣篮大赛怎么按键盘(nba2k19如何扣篮教学视频) 《狂怒2》键盘按键操作介绍图解(《狂怒2》键盘按键操作介绍图解视频) 数据中心虚拟化安全 确保数据中心虚拟化安全10个步骤 定制键盘app 创高体育虚拟跑步软件下载
更多

手机游戏排行榜