- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
考虑一个应用程序,它希望在获得焦点时捕获键盘,以便捕获所有窗口管理器命令(Alt+F4 等)进行处理。现在,这有一个缺点,即用户在捕获键盘时无法通过键盘切换到另一个应用程序或虚拟桌面。我想要一个用户定义的组合键白名单(例如,用于切换虚拟桌面的组合键),这些组合被排除在抓取之外。
我可以想到两种可能的方法。当列入白名单的关键事件到达时,要么
最佳答案
我不认为有办法做到这一点。没有一种机制能完全按照您的需要工作。
方法 1 是窗口管理器在决定不拦截点击或按键时所做的事情。但是,WM 在特定键上使用“被动”抓取(XGrabKey=passive XGrabKeyboard=active),然后是 XAllowEvents()。 XAllowEvents() 不适用于 XGrabKeyboard()。此外,当您使用其中一种重播模式进行 XAllowEvents 时,重播事件会绕过具有原始抓取的窗口及其所有父窗口上的所有被动抓取。 WM 的抓取将在根窗口上,该窗口始终是父窗口,因此无法重播到根窗口,我能说得最好。无论如何,对每一个可能的键都执行 XGrabKey 会有点心理。
方法 2 会出现糟糕的竞争条件问题,因为在重新发送之前可以处理其他键和鼠标事件,因此您需要重新排序键并将事件发送到被破坏的窗口和其他困惑。此外,没有发送关键事件的好方法。 XSendEvent() 被许多客户端忽略(它在允许这样做的事件中设置了 send_event 标志)。可以使用 XTest 扩展,但可能在生产 X 服务器上被禁用,并且仍然存在竞争条件问题。
您可能需要的是一个协议(protocol)扩展,它允许您在 GrabKeyboard 之后执行 AllowEvents(mode=ReplayKeyboard),而无需绕过父窗口上的被动抓取。
需要注意的是,我不知道所有可以用 XKB 和 XInput2 完成的疯狂的东西,所以也许这些扩展中有一些东西。
无论如何,据我所知,您必须满足于“退出键”,尽管最终 X 服务器和/或窗口管理器规范具有“VMWare/VNC 类型的事物意识”可能会很好,这赢得了短期内帮不了你。例如,EWMH 规范扩展可以像 vnc/vmware/stuff-like 的新 _NET_WM_WINDOW_TYPE 一样简单,并且窗口管理器可以减少其键绑定(bind)或向它们添加额外的修饰符或其他东西。
关于keyboard - 从 XGrabKeyboard 中排除一些键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3795636/
当我的 android sdk 更新到最新版本时,我遇到的问题是:我无法使用计算机键盘在 Android Emulator 中输入文本,并且我无法使用 Android Emulator 键盘(屏幕旁边
我一直在尝试 APL。我正在运行 Windows 10 并且我已经安装了 Dyalog 18.0,以及 VS Code 的 APL 语言和 APL 反引号符号扩展。 但是即使我没有运行任何这些程序,有
我正在构建我的键盘扩展应用程序,当用户点击它时,我在按钮上添加了按键弹出动画。它适用于内部图像,但对于顶行图像弹出区域在剪辑 subview 时变得隐藏。我尝试使用 ClipToBound 属性并将其
我使用 MSKLC 制作了自定义键盘布局。 我以为我仔细按照说明操作了chose appropriate values对于LOCALENAME和 LOCALID参数。 但是,在通过按 Win+Spac
我一直在尝试弄清楚如何使用 Scanner 类一次输入多个标记。我找到了一些可以完美运行的代码。我知道 Scanner.hasNext 方法可以无限期地阻塞。为什么此代码中的行 keyboard =
我应该为 90% 仅使用键盘的网络应用程序使用什么技术? 我想要一个大部分时间只使用键盘的网络应用程序。哪种技术可以为我提供这种便利? 我不在乎是 java 框架还是基于 .net 或其他的东西。:)
对于文字游戏,我想在 Swift 中以编程方式创建一个 UITextField,它只允许用户输入和删除大写字母(没有空格键、回车键、大写字母等)。像这样: Desired Keyboard Layou
我在合成器上工作,我希望显示一个键盘/钢琴,用户可以在合成器的任何 Activity 中打开或关闭以弹奏琴键。最好的解决方案是它的行为是否像普通的软键盘一样,这意味着,我希望“虚拟钢琴”将当前 Act
作为haskell 的绝对初学者,我一直在阅读有关haskell 的各种文章、pdf 和教程。大多数示例/示例代码都包含数学字符。即使是打字的常见任务 -> 我必须输入: - & > 事实是我不知道如
对于自动化测试应用程序,我必须模拟大量 unicode 键盘输入到旧的 X11 应用程序(我没有任何源代码访问权限)。我的程序通过标准输入从 UCS-2 LE 编码的输入流中获取输入,基本操作如下:
问题 点击 uitextfield 时会显示键盘。一旦键盘出现,它就可以正常工作。我可以将键盘更改为除表情符号键盘之外的任何键盘。每次尝试切换到表情符号键盘时,它都会崩溃。 这是崩溃日志 2019-0
I want to record mouse and keyboard simultaneously and replay them later. When MIDDLE MOUSE is pr
第 1 步:向用户发送消息 ReplyKeyboardMarkup带有几个按钮(例如 ["Yes", "No"] ) 第 2 步:如果用户单击其中一个按钮(例如“Yes" ),我想用内嵌键盘显示一条消
在我们现在正在编写的应用程序中,我们遇到了一个问题,即如果将焦点放在底部工作表中的文本字段,键盘会在短暂的闪烁后消失。 在尝试修复它数小时后,我试图隔离这种奇怪的行为并提出了以下错误: 如果我在不是主
我正在开发一个带有EXPO管理工作流的反应原生应用程序。。我在应用程序中有一个TextInput域,我希望它通过蓝牙接受来自物理条形码扫描器的输入。。问题:当通过蓝牙连接条形码扫描仪时,移动设备将其标
我正在寻找一种将我的 Raspberry Pi Zero 用作 HID 鼠标的方法。 目标:我将 Pi 放入我的电脑,它会自动开始从上到下和从下到上快速移动鼠标。 所以原则上像 USB Rubber
我有一台华硕笔记本电脑 (F50SF),我在 C++ 中尝试拦截多媒体键(下一首轨道、上一首轨道、播放/暂停等),但我无法弄清楚如何做到这一点。我试过 GetAsyncKeyState(VK_MEDI
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 想改进这个问题?将问题更新为 on-topic对于堆栈溢出。 1年前关闭。 Improve this qu
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 想改进这个问题?将问题更新为 on-topic对于堆栈溢出。 6年前关闭。 Improve this qu
在我的代码中,我似乎无法让键盘默认为黑色。我已经尝试了其他帖子中的解决方案,但没有成功。不确定我是否遗漏了什么。我希望它适用于所有 View Controller ,所以我想把它放在我的应用程序委托(
我是一名优秀的程序员,十分优秀!