问题标签 [input-devices]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2692 浏览

c - 为测试目的伪造输入设备

我想做的事

我正在编写一个守护进程,它监听输入设备的按键并通过 D-Bus 发送信号。主要目标是通过请求更改或通知更改来管理音量和屏幕背光级别。我使用libevdev来处理输入设备事件。

我编写了一个用于打开位于指定路径的输入设备的函数:

该函数运行良好,但是当我为它编写单元测试时,我想创建具有不同属性(文件的存在、读取访问等)的文件夹具来检查我的函数和内存管理的错误处理(如我将数据存储在一个结构中)。

我已经做了什么

但是使用真实输入设备(位于 /dev/input/event*)测试它需要root访问权限。在 /dev/input/event* 文件上为每个人设置读取权限是可行的,但对我来说似乎有风险。以 root 身份执行我的测试更糟糕!

使用作品创建设备,mknod但需要以 root 身份完成。

我还尝试使用字符特殊文件(因为输入设备就是其中之一)允许所有人读取(例如 /dev/random、/dev/zero、/dev/null 甚至我当前使用的终端设备:/dev /tty2)。

但是这些设备不处理ioctllibevdev 所需的请求:EVIOCGBIT是第一个返回错误“设备的 ioctl 不合适”的请求。

我在寻找什么

我希望能够以普通用户(执行单元测试的用户)的身份创建设备文件。然后,通过设置访问权限,我应该能够针对不同类型的文件(只读、不允许读取、错误的设备类型等)测试我的函数行为。如果看起来不可能,我肯定会使用私有助手重构我的函数。但是怎么做。有什么例子吗?

谢谢。

编辑:我试图更好地表达我的需求。

0 投票
1 回答
163 浏览

qt - 在 Xorg 应用程序中阻止特定输入设备,仅使用 xcb_wait_for_event

Qt 中存在多个触摸屏导致 Qt 处于不一致状态的错误。更多关于这里的问题。

作为一个短期补丁,我将使用事件过滤器(Qt 为 xcb 事件提供)来防止 Qt 一次处理多个设备。

步骤如下。

  1. 一系列输入事件正在开始(鼠标按钮按下、触摸按下等)。
  2. 阻止不属于当前正在使用的设备的所有其他事件。
  3. 事件序列完成后,恢复所有设备的事件,从步骤 1 开始。

实际上,我想对事件进行门控,以便一次只能使用一个设备。我希望这能解决 Qt 的错误。

首先,我试图只过滤硬编码设备的事件,看看这是否能绕过 Qt 的错误,但事实并非如此。

Qt 仍然处于它的古怪状态。

如何通过过滤事件来完全阻止设备xcb_wait_for_event

0 投票
0 回答
148 浏览

c++ - 如何在不解码每个键事件的情况下从嵌入式 linux 中的键盘获取文本?

现在我直接从 /dev/input/eventX 读取。是否有一些库或 api 可以为我转换字节流?下面是我正在运行的代码,示例输入和输出。

如果我输入

XAL4

我得到:

使用标题,https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/include/uapi/linux/input-event-codes.h

我知道关键序列是:

是否有库或 api 可以为我将其转换为原始 ascii?

0 投票
1 回答
2202 浏览

python - 如何选择使用哪个设备录制(Python PyAudio)

我正在尝试使用 Python 中的 PyAudio 库进行录制时选择要使用的设备,但我不知道该怎么做。我在网上找到了这段代码,它显示了所有可用的输入设备:

但是,这可行,如何从该列表中选择要使用的设备?我似乎无法在网上找到有关选择要使用的设备的任何地方,所以如果有人可以帮助我,那就太好了,谢谢。

0 投票
2 回答
711 浏览

ubuntu - SDL2 看不到操纵杆,但操作系统可以

我正在使用Ubuntu 18.0.4.4 LTS,并附有基于 Arduino 的自制 USB 游戏杆。

操作系统在两者上都可以看到该设备,/dev/input/js0并且/dev/input/event5jstest 可以使用它:

evtest 也可以作为 root 运行:

然而,SDL_NumJoysticks()尽管使用操纵杆和游戏手柄支持初始化 SDL2,但 SDL2 始终返回 0:

为什么SDL2不能在 Ubuntu 上使用正常工作的 /dev/input/js0 设备?

0 投票
0 回答
200 浏览

linux-kernel - 如何使用 FF_CONSTANT 进行 Linux 的力反馈?

我无法利用FF_CONSTANT力效应。我的尝试代码是:

我可以使用以下代码产生 FF_SPRING 和 FF_DAMPER 效果。

我没有找到任何关于什么是恒定力效应的感觉或何时使用它有意义的信息。有人可以简要介绍它的重要性和用法吗?

谢谢 :)

0 投票
0 回答
17 浏览

css - CSS 媒体悬停和指针查询提供错误信息

CSS 查询@media(hover)@media(pointer)应该识别设备是否包含允许悬停在元素上的输入法,以及指向方法的准确度。这应该区分触摸和鼠标输入。在我的华硕 Zenbook 上,这是一台带触摸屏的笔记本电脑,输入法被识别为好像它只是一个触摸设备,例如通过使用这个网站可以找到。但显然笔记本电脑包含一个功能正常的触摸板。在 Firefox、Chrome 和 Edge 中测试,结果是相同的。我的智能手机和台式电脑给出了正确的结果。

我的笔记本电脑的查询结果

谷歌搜索只会显示大量网站,这些网站谈论如何将这些选择器添加到您的页面。我不知道浏览器如何评估此类信息,但显然其中某处存在错误。我知道这些查询是最近才实现的,可能仍然有点问题。有没有其他人遇到过这个,或者知道可以做些什么?

0 投票
1 回答
142 浏览

java - 从 /dev/input 读取几个字节时出现 IOException

当尝试从中读取 input_events 时,/dev/input/event16我注意到我正在读取的缓冲区的大小可能会导致异常。这是我写的代码:

我最初的实验表明,缓冲区至少需要一个完整input_event结构的容量。但我找不到原因。

问题是该行is.read(three_bytes); 导致以下异常:

我想弄清楚为什么该行在按预期读取数据 is.read(three_bytes);时抛出异常is.read(twentyfour_bytes);

0 投票
1 回答
84 浏览

c++ - 如何检查键盘是否已连接,如果在运行时连接则使用它?

所以我有一个 QT 项目,我想在其中检查是否连接了键盘。如果它未连接,我希望在程序运行期间连接它时仍能使用它。我环顾四周,发现了一些可能合适的库,但我不确定它们是否能做我想做的事。有问题的库:libinputlibusbSolid使用 KDE。我的问题是,这些库中的一个会做我想做的事情,还是完全不同?如果它是上述库之一,那么任何示例都会有所帮助,因为我真的无法从文档中得到任何东西。我可能还应该提到我使用的是 linux,或者更准确地说是 openSUSE Leap 15.2

0 投票
0 回答
69 浏览

python - Python 启用和禁用输入设备

Python有没有办法控制启用和禁用输入设备?

通过手动方式,Windows 10,它位于设置 > 管理声音设备 > 输入设备

在此处输入图像描述

我已经尝试过代码,但没有达到想要的效果。

参考:在 Windows10 中完全禁用/启用输入设备(鼠标+键盘+触摸板)

参考:如何使用 python 打开和关闭麦克风

谢谢你。