当触笔/笔远离屏幕时WPF触笔事件

当触笔/笔远离屏幕时WPF触笔事件,wpf,stylus,pen,Wpf,Stylus,Pen,当触笔/笔不接触屏幕时,即在笔记本电脑范围内的某个地方悬停时,是否可能对按钮按下(即触笔按钮之一,而不是某些应用程序中的按钮)做出反应(通过触笔按钮向下等或其他方式)?只有当笔尖实际接触屏幕表面时,才会触发这些操作。具体来说,我不需要知道按钮的位置。就在按下桶按钮的时候 我使用的是微软的Surface,特别是它附带的Surface笔,如果有什么不同的话。我不需要它是跨平台的,便携的或任何东西。事实上,其他语言(C++等)的解决方案也可以。黑客解决方案非常受欢迎。据我所知,Microsoft Su

当触笔/笔不接触屏幕时,即在笔记本电脑范围内的某个地方悬停时,是否可能对按钮按下(即触笔按钮之一,而不是某些应用程序中的按钮)做出反应(通过触笔按钮向下等或其他方式)?只有当笔尖实际接触屏幕表面时,才会触发这些操作。具体来说,我不需要知道按钮的位置。就在按下桶按钮的时候


我使用的是微软的Surface,特别是它附带的Surface笔,如果有什么不同的话。我不需要它是跨平台的,便携的或任何东西。事实上,其他语言(C++等)的解决方案也可以。黑客解决方案非常受欢迎。

据我所知,Microsoft Surface在屏幕周围没有传感器。因此,当触笔/笔靠近屏幕时,没有任何事件会对触笔/笔作出反应


尽管如此,如果你是一名工程师,你可能会自己创建一些传感器,然后创建对这些事件做出反应的事件。

我可能有一个解决方案,可以与pen和Microsoft Surface中当前使用的蓝牙和Wifi等技术配合使用。但是您需要自己编写一些部分(提到的大多数技术都在开源库中)

将笔与Surface配对后,应使用Wifi和蓝牙连接到笔上

1。选项

这是一个很好的例子,说明了蓝牙三角测量,我们将在近距离使用三角测量笔,除了我们将使用蓝牙和wifi(我们没有第三点),所以它不会精确到3点。但是有了2个点,你就可以通过这个表来测量距离,找到它们的交点在哪里,在这样小的空间里是可行的

对第二个三角测量点使用与Wifi类似的方法,您可以在下面看到Wifi三角测量的源代码

下一步将校准笔架中笔的位置,这意味着 钢笔将位于曲面的一侧(为了简化,我们假设它仅位于右侧较短的一侧)

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

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)
允许区域:
offsetHeightOfPenScreenRation=屏幕高度-笔芯硬仓库高度
NONOVALIDX=起始位置X-屏幕宽度

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

我没有MicrosoftSurface,所以我不能自己编写代码,因为我没有可以试用的设备,但这是一个可行的想法。几乎不需要调整精度,就可以实现真正精确的定位

2。选项

Wifi三角定位:
可以单独使用,如果您可以进入pen固件,您可以通过蓝牙传输位置,但此选项不会如此精确。

我看到这一点的唯一方法是自己为按钮安装传感器,因为它已经使用蓝牙或WiFi连接,因此,请使用所需的三角测量方法校准设备。好吧,我相信这是一个老套的答案,因为微软Surface在屏幕周围没有传感器。

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

自动热键是答案

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

自动热键支持曲面笔。它还支持笔远离屏幕的场景。

Surface Pen通过蓝牙连接到Windows,信号范围为几米。因此,从技术上讲,可以使用表面笔作为Windows的遥控器

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

下面是一个自动热键脚本,用于使用Surface Pen控制Powerpoint演示文稿:

;  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
更多信息和帮助:

  • 有关自动热键的完整参考:

  • 演示代码(笔远离屏幕):

  • Powerpoint幻灯片放映的遥控器:

谢谢,听起来很有希望!我会试试看它是否管用。