5

是否有可能(通过 StylusButtonDown 等或替代方法)对在触控笔/笔未触摸屏幕时发生的按钮按下(即触控笔按钮之一,而不是某些应用程序中的按钮)做出反应,即悬停在空中某处在笔记本的范围内?这些似乎只有在笔尖实际接触到屏幕表面时才会触发。具体来说,我不需要知道按钮的位置。只是字面上当按下桶按钮。

我正在使用 Microsoft Surface 和附带的 Surface Pen,如果这有什么不同的话。我不需要它是跨平台的、便携的或任何东西。其实其他语言(C++等)的解决方案都可以。Hacky 解决方案非常受欢迎。

4

5 回答 5

3

我的解决方案可能适用于当前使用的技术,例如笔和 Microsoft Surface 中的蓝牙和 Wifi。但是您需要自己编写一些部分(大多数提到的技术都在开源库中)。

将触控笔与 Surface 配对后,您应该将 Wifi 和蓝牙连接到触控笔。

1. 选项

有一篇很好的文章,解释了我们将用于近距离三角测量笔的蓝牙三角测量,除了我们将使用蓝牙和 wifi(我们没有第 3 点),所以它不会像 3 点那么精确。但是使用 2 个点,您实际上可以通过此表测量距离并找到他们的交点在哪里,在如此小的空间内它是可行的。

测量表

对第二个三角测量点使用与 Wifi 类似的方法,您可以在那里查看 Wifi 三角测量的源代码。

下一步将校准笔在支架中的位置,这意味着笔将位于 Surface 的一侧(为简化起见,假设它仅在右侧较短的一侧)

从这里你可以计算屏幕的面积

Allowed area:

offsetHeightOfPenScreenRation = ScreenHeight - penHardwareHeight

NonValidX = StartpenPositionX - ScreenWidth < penPositionX or StartpenPositionX < penPositionX

NonValidY = StartpenPositionY - ScreenHeight < penPositionY or StartpenPosition+offsetHeightOfPenScreenRation < penPositionY

penIsClose = not ( NonValidX or NonValidY)

三角化

这就是它的工作原理,你需要让这个软件在后台运行,它可能会对电池产生严重影响,你需要外部 wifi 适配器来上网。

我没有 Microsoft Surface,所以我无法自己编写代码,因为我没有设备可以尝试,但这是可行的想法。只需稍微调整精度,它就可以实现真正的精确定位。

2. 选项

wifi三角定位:https ://github.com/kevindu/wifi-ap-positioning 可以单独使用,如果可以进入笔的固件可以通过蓝牙传输位置,但是这个选项不会那么精确。

于 2020-02-01T20:03:23.703 回答
1

AutoHotKey就是答案!

AutoHotKey 是一种开源工具,可帮助创建对 Windows 输入设备事件的自定义自动响应。

AutoHotKey 支持 Surface 触控笔。它还支持笔远离屏幕的场景。

Surface Pen 通过蓝牙连接到 Windows,信号范围为数米。因此,技术上可以将 Surface 笔用作 Windows 的遥控器!

最流行的场景之一是使用 Surface Pen 作为演示控制器

这是一个使用 Surface Pen 控制 Powerpoint 演示的有效 AutoHotKey 脚本:

;  File name: surface-pen-slide-show-control.ahk
;
;  This program helps the presenter scroll through slides, using Surface Pen
;  
;  Single-click on pen button to scroll forward
;  Double-click on pen button to scroll backward
;

#NoEnv
SendMode Input
SetWorkingDir %A_ScriptDir%

#IfWinActive ahk_class screenClass
#F20::
  Send, {Right}
Return

#F19::
  Send, {Left}
Return

更多信息和帮助:

于 2020-02-05T01:41:54.500 回答
0

据我所知,微软 Surface 屏幕周围没有传感器。所以不,当触笔/笔靠近屏幕时,没有任何事件会对它们做出反应。

不过,如果您是工程师,您可能会自己创建一些传感器,然后创建会对这些事情做出反应的事件。

于 2020-01-30T14:44:42.797 回答
0

我看到这一点的唯一方法是自己为按钮合并传感器,因为它已经使用蓝牙或 WiFi 连接,所以使用所需的三角测量方法来校准设备。好吧,我相信这是一个老生常谈的答案,因为 Microsoft Surface 的屏幕周围没有传感器。

于 2020-02-04T04:13:48.977 回答
0

如果您真的在寻找“hacky 解决方案”,那么我有一个想法,但这将是一种非常肮脏的方式。尽管不存在支持按钮的 api,但即使手写笔没有触摸屏幕,系统也会响应按下按钮。您可以创建一个在启动时读取以下命令行参数的应用程序:ClickOnce、DoubleClick、PressAndHold。根据提供的参数,应用程序应该向您的主应用程序发送适当的消息。现在您可以转到“笔设置”并根据操作选择使用适当的参数运行上述应用程序。

于 2020-02-04T07:33:27.797 回答