【问题标题】:Ungrabbing keyboard is not ungrabbing keys - by api design?取消抓取键盘不是取消抓取键 - 通过 api 设计?
【发布时间】:2017-01-19 01:37:31
【问题描述】:

我正在用xcb_grab_key_checked抢钥匙:

xcb_void_cookie_t grabc = xcb_grab_key_checked(connection, 1, rootwin, grabmodflag, keycode, XCB_GRAB_MODE_ASYNC, XCB_GRAB_MODE_ASYNC);
xcb_generic_error_t *grabe = xcb_request_check(connection, grabc);
if (grabe == NULL) debug_log("succeessfully grabbed");

我使用xcb_ungrab_keyboard_checked:

xcb_void_cookie_t ungrabc = xcb_ungrab_keyboard_checked(connection, XCB_CURRENT_TIME);
xcb_generic_error_t* ungrabe = xcb_request_check(connection, ungrabc);
if (ungrabe == NULL) debug_log("succesfully ungrabbed");

但是它似乎没有解开钥匙。这是设计的吗?

【问题讨论】:

  • 是的。抓住一个键和抓住一个键盘是完全不同的动作(抓住一个键盘并不是抓住所有的键)。

标签: x11 xlib xcb


【解决方案1】:

是的,这是设计使然。抓键和抓键盘是完全不同的操作。抓住键盘并不意味着抓住所有键。

实际上,抓取一个键就是让该键启动一次键盘抓取。键抓取通常用于实现热键。键盘抓取将所有键事件转移到客户端。键盘抓取是暂时的(例如在显示弹出菜单时最后一次),而按键抓取是长期的(热键很少更改)。

【讨论】:

  • 谢谢@n.m。非常总是回复!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-08-12
  • 2014-04-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-11
相关资源
最近更新 更多