标签: input-devices

在编程中应该采用哪些替代用户输入技术?

编程与例如由于需要输入大量特殊符号等的文字处理特别不同.

当前的新用户界面技术,适合编程,为什么?

或者语言语法的概念是问题,我们是否应该更符号地编程,如果是,这将如何影响用户界面?

编辑:当我指定用户界面技术时,我使用现有硬件(鼠标/键盘)和其他一些东西,如多点触控,手势识别,增强现实(请参阅HitLabNz的一些很好的例子).我对如何将这些应用于编程感兴趣.

user-interface input-devices hci

5
推荐指数
1
解决办法
883
查看次数

如何在.Net中使用触控板滚动

我的WinForms应用程序使用鼠标滚轮,订阅该Control.MouseWheel事件.如何使用来自其他输入设备的滚动方法,特别是"沿着边缘的手指"在我的T61上的(Synaptics)触控板上滚动?我假设我需要以Control.MouseWheel某种方式将触控板消息连接到事件,但我不知道从哪里开始......

编辑:这目前无法正常工作; 所以我的触控板显然不会发送Control.MouseWheel消息.

谢谢!

(我正在使用C#,但这肯定是.Net一般).

.net scroll input-devices trackpad

5
推荐指数
1
解决办法
1447
查看次数

连接到特定的HID配置文件蓝牙设备

我将蓝牙条码扫描器连接到我的Android平板电脑.条码扫描器与Android设备绑定作为输入设备 - HID配置文件.它在系统蓝牙管理器中显示为键盘或鼠标.我发现蓝牙配置文件输入设备类存在但是隐藏了.class和btprofile常量在android文档中有@hide annotaions.

隐藏类:

http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.3.1_r1/android/bluetooth/BluetoothInputDevice.java

这里它们也应该是其他3个常数

developer.android.com/reference/android/bluetooth/BluetoothProfile.html#HEADSET

就像

public static final int INPUT_DEVICE = 4;
public static final int PAN = 5;
public static final int PBAP = 6;
Run Code Online (Sandbox Code Playgroud)

通过反射可以很容易地访问这些常量.我需要实现的是隐藏配置文件(INPUT_DEVICE)的设备列表.使用方法进行小改动应该很简单:

developer.android.com/reference/android/bluetooth/BluetoothA2dp.html#getConnectedDevices()

不适用于A2dp配置文件,但也适用于通过反射方法访问的hid配置文件.可悲的是

Class c = Class.forName("android.bluetooth.BluetoothInputDevice")
Run Code Online (Sandbox Code Playgroud)

将无法工作..任何想法我应该如何处理问题?我只需要隐藏设备列表

profile android input-devices bluetooth hid

3
推荐指数
1
解决办法
6100
查看次数

stdin 在 Linux 中是否被视为字符设备?

当我说 stdin 时,我指的是 fd = 0所指的

我正在学习一门涵盖块设备和字符设备的操作系统课程。具体说键盘是字符设备。然而,当我们看到read系统调用时,我们被告知内核并不关心它正在读取什么,只要它是块设备或块设备上的文件。

这是我们得到的代码:

#include <stdlib.h>
#include <unistd.h>

const int BUFFSIZE = 5;

int main () {
  int fd, n;
  char buffer[BUFFSIZE];

  int stdin = 0;
  int stdout = 1;
  int stderr = 2;

  do {
    n = read (0, buffer, BUFFSIZE);
    if (n < 0) {
      write (stderr, "Error occurred\n", 10);
    } else {
      write (stdout, "Entered if\n", 20);
      write (stdout, buffer, n);
    }
  } while (n > 0);
  return 0; …
Run Code Online (Sandbox Code Playgroud)

c linux io operating-system input-devices

1
推荐指数
1
解决办法
1403
查看次数

伪造输入设备以进行测试

我想做的事

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

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

Device device_open(const char *path);
Run Code Online (Sandbox Code Playgroud)

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

我已经做过的

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

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

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

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

我在找什么

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

谢谢。

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

c linux input-devices evdev

0
推荐指数
1
解决办法
2232
查看次数