如何在 Surface Book 上通过 WinTab 实现笔式计算?

How Do You Implement Pen Computing via WinTab on a Surface Book?

我想编写一个在 Surface Book 上获取笔输入的应用程序。

主要动机是新的 Surface Pen Platinum 宣传倾斜和 4096 级压力,但我找不到倾斜响应(可能也没有 4096 级灵敏度)。我正在尝试理解和记录这一点。

Surface Book 使用 N-Trig 笔而不是 Wacom 笔。我注意到像 Corel Painter、Krita 和 Rebelle 这样的绘图应用程序提供了执行 WinTab 或使用 Windows 实现的选项,并且似乎可以以任何一种方式工作。我使用的是 Photoshop CS5,它在 N-Trig 时代之前并没有任何这样的选项,但仍然有效。

此 Surface Book 上未安装 Wacom 驱动程序。在 Surface 计算机的早期,您可以从 Microsoft 下载 WinTab 驱动程序,这显然可以解决 Photoshop 问题。您仍然可以下载驱动程序,这些驱动程序的当前版本是 Wintab_x64_1.0.0.20。它们的日期为 1-12-2015,包括两个 DLL:wintab32、dll 和 DHid.dll。这些都不在这本 Surface Book 上。

我从 Wacom SDK 下载了 TiltTest 应用程序,并让它在另一台安装了 Wacom 驱动程序并使用 Wacom Pen 的计算机上运行。有了代码,我可以看到它正在提供倾斜信息(高度和方位角)和 1024 级压力(值至少从 0 到 1023)。如果我尝试在 Surface Book 上 运行 这个应用程序,它只是说它找不到 wintab32.dll 而没有 运行,即使 Microsoft wintab32.dll 在同一目录中.exe。使用目录中的 Wacom wintab32.dll,它可以通过但找不到数位板服务。它正在使用 WM_PACKET 消息,这显然是 Wacom 特定的。

我注意到一种可能性似乎是使用 WM_POINTER API。然而,这显然是从 Windows 8.1 开始的,并且不会被 Photoshop CS5 使用。

所以问题是 Photoshop 如何在此环境中工作,以及其他应用程序正在做什么来实现 WinTab 或其他东西。我将如何在一个简单的应用程序中使用它来查看我是否得到瓷砖以及压力水平。

答案是不行。我正忙着测试倾斜度,以至于没有注意到没有压力敏感度,Shape Dynamics 上有一个警告标志,上面写着 "Control by pressure requires a pressure sensitive tablet" 的画笔。它的行为就像一只老鼠,而不是一支笔。我不怎么用 Photoshop 画画,不然我早点看到这个。

我使用 Spy++ 确定它没有收到像 WT_PACKET 这样的 Wintab WT_xxx 消息。 (这些在 0x7FF0 到 0x7FFF 范围内,WM_USER 范围的顶部。)

解决方案是安装 Microsoft 提供的 N-Trig Wintab DLL wintab32.dll 和 NHid.dll。之后警告消失了,并且有压力敏感性。此外,Spy++ 表示主要的 Photoshop window 现在收到 WT_xxx 条消息。

因此,正如预期的那样,Photoshop CS5 实现了 WinTab,并且可能不知道后来的 APIs。 N-Trig是模拟WinTab,和N-Trigwintab32.dll功能一样,只是实现不同

就倾斜度和方位角而言,Surface Book 不提供它们,即使使用新的 Surface 触控笔也是如此。 None 提到的绘图应用程序(包括 Photoshop)显示倾斜或方位角。我最近在 Surface Book 2 和 Surface Pro 6 上尝试了相同的笔,它们确实提供倾斜和方位角,尽管使用实时手写笔 (RTS) 的应用程序似乎没有方位角 API .