php 如何开发键盘,如何实现软键盘(已找到例子)

1.    XKeyEvent tsKeyboardWidget::createKeyEvent(Display *display, Window &win,

2.                             Window &winRoot, bool press,

3.                             int keycode, int modifiers)

4.    {

5.       XKeyEvent event;

6.

7.       event.display    = display;

8.       event.window      = win;

9.       event.root        = winRoot;

10.       event.subwindow  = None;

11.       event.time        = CurrentTime;

12.       event.x          = 1;

13.       event.y          = 1;

14.       event.x_root      = 1;

15.       event.y_root      = 1;

16.       event.same_screen = TRUE;

17.       event.state      = modifiers;

18.       event.keycode    = XKeysymToKeycode(display,keycode);

19.       if(press)

20.           event.type = KeyPress;

21.       else

22.           event.type = KeyRelease;

23.

24.       return event;

25.    }

26.    int tsKeyboardWidget::SendKeys(int keycode)

27.     {

28.       //modifier=pubModifier->text().toInt();

29.    // Obtain the X11 display.

30.       Display *display = XOpenDisplay(NULL);

31.       if(display == NULL)

32.           return -1;

33.

34.    // Get the root window for the current display.

35.       Window winRoot;// = XRootWindow(display,1);

36.

37.    // Find the window which has the current keyboard focus.

38.       Window winFocus;

39.       int revert=RevertToParent;

40.       //int RevertToParent=0;

41.       XGetInputFocus(display, &winFocus,&revert);

42.       //winFocus=winFocus+1;

43.

44.

45.    // Send a fake key press event to the window.

46.       XSelectInput(display, winFocus,FocusChangeMask|KeyPressMask|KeyReleaseMask);

47.       XMapWindow(display, winFocus);

48.

49.       XKeyEvent event = createKeyEvent(display, winFocus, winRoot, true, keycode, modifier);

50.

51.       XSendEvent(event.display, event.window, True, KeyPressMask, (XEvent *)&event);

52.

53.       event = createKeyEvent(display, winFocus, winRoot, false, keycode, modifier);

54.       XSendEvent(event.display, event.window, True, KeyPressMask, (XEvent *)&event);

55.       XCloseDisplay(display);

56.       return 0;

57.    }

58.    void tsKeyboardWidget::btnA_clicked()

59.    {

60.       SendKeys(Qt::Key_A);

61.

62.    }

上面是一段Qt向focus window发送XKeyEvent的代码,比较简单。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值