新能源系统增强脚本,VV (Version for Via)发布

另外,为什么我也是学生认证,但我还可以用claude?

1 Like

如果你不挂梯子的话claude会不可用,我不知道是否和这个有关

1 Like

原来如此

1 Like

应该一直是开着的,但是真的好慢啊()

1 Like

opencode适合长期运行,给他个任务他自己跑一晚上那种

1 Like

斯,我挂着全局梯子也用不了

1 Like

gpt5.4能用吗?能用的话说明还是ip问题,不能用的话说明是copilot学生那个的问题?

1 Like

搞定,目前在这个脚本写,后续随时可能拆分、合并

1 Like

nice

1 Like


成功了(目前是调试验证状态,还没弄进实际脚本)

弱智ai

说明很清楚了:关键点有两条:

  1. 网页“真正用来画线”的是 TouchEvent(touchstart/touchmove/…)而不是 PointerEvent
  2. 你的手写笔 会触发 PointerEvent(pointerType=‘pen’)和 TouchEvent,而手指只触发 TouchEvent。
  3. 需求改为:
    • 在“从未用过手写笔”之前:什么都不改,手指/笔都按原网页逻辑画线;
    • 一旦某次检测到手写笔 pointerdown 发生:从那一刻起及之后,所有触摸(手指)都屏蔽,只保留手写笔绘制(包括手写笔抬起之后,手指依然禁止,直到将来某个“重置”,暂时不做)。

基于这个模型,我们要做的最佳策略是:

  • 用 PointerEvent 只做一件事:检测“是否曾经出现过 pointerType === ‘pen’ 的 pointerdown”。
  • 一旦 penEverUsed = true,就:
    • 屏蔽所有 TouchEvent(touchstart / touchmove / touchend / touchcancel)
    • 不再区分是笔发出的 touch 还是手指发出的 touch(因为网页绘制只看 touch,我们必须让“笔的 TouchEvent”仍放行)。
  • 问题:怎么区分“笔触发的 touch”和“手指触发的 touch”?
    • 在大多数实现里,同一个物理接触(笔)不会同时作为 pointerType=‘pen’ 和 TouchEvent 出现在同一时刻;但你这里极有可能是这样:
      • 笔按下:PointerEvent(pen) + TouchEvent(1 点)
      • 网页真正画线:只听 TouchEvent

我们没法在 TouchEvent 上直接知道“这是来自哪个 pointerId 的 pen”。不过你给出的现象里,在还没启用任何屏蔽时,手指和笔的 TouchEvent 是一样的(仅触点数=1),而“只有上一个版本的 pointer 脚本在笔时有日志、手指时没日志”,说明:

  • 笔:会触发 PointerEvent(pen);
  • 手指:只触发 PointerEvent(touch)或根本不触发 PointerEvent。

这给了我们一个现实可行的折中方案:

方案:只要“见过 pen”,就直接禁止所有 touch 绘制,让页面只靠 pen 的 PointerEvent 来画

但原网页现在是“只用 TouchEvent 绘制”,这意味着:

  • 如果我们简单把所有 TouchEvent 禁掉,网页会失去所有绘制,包括笔的线。
  • 所以想“只允许笔 + 禁止手指”,前提必须是网页本身支持用 PointerEvent(pen)来画,或者我们自己额外往网页里注入一套“用 PointerEvent 在 canvas 上画线的逻辑”,绕过原网页的绘制实现。

纯粹通过篡改猴“屏蔽/放行事件”,在“网页绘制只看 TouchEvent”且“笔、手指在 TouchEvent 上不可区分”的情况下,是不可能做到:

  • 笔的 TouchEvent 放行;
  • 手指的 TouchEvent 屏蔽。

这就解释了你说的现象:“手写笔检测到了,但线也被屏蔽了”。


在你现在的网页结构上,能做到的最接近需求的两个选择

我给你两个可选方向,你可以选一个我帮你实现完整脚本:

方向 A(侵入式一点):

检测到“首次 pen pointerdown”后:

  1. 彻底 stopImmediatePropagation + preventDefault 掉目标 canvas 的所有 TouchEvent(不再让原网页用 touch 画)。
  2. 由我们自己的脚本,在同一个 canvas 上,用 PointerEvent(pen)来绘制线条(自绘)。
  3. 手指触摸(无 pointerType=‘pen’)在 PointerEvent 里直接忽略,因此自然做到了“只能笔画”。

优点:

  • 符合你“见过笔之后,手指一律不能画,只能笔画”的需求。

缺点:

  • 我们要接管绘制逻辑:
    • 原网页已经画过的内容还在;
    • 之后笔画的线是我们画的,不再是原网页的逻辑(比如线条粗细/颜色/撤销等和原网页的 UI 不再联动)。

如果你只是“随手记画布,不在意原网页的撤销/颜色工具”,A 是可行的。

方向 B(非侵入,只做“硬锁定成‘只读’”):

  1. 首次 pen pointerdown 之后,直接:屏蔽所有 TouchEvent 和 MouseEvent 在该 canvas 上,也不再想让笔通过 TouchEvent 绘制。
  2. 此时,画布就对任何触摸/鼠标都“完全不能画”(包括笔),相当于“这块画布只读了”,只能靠原网页可能存在的 pen-pointer 绘制逻辑(多数没有)。

这会导致你看到的现象和现在类似:笔也画不了。所以 B 实际上对你来说没用。


建议:采用方向 A:我们在用户脚本里自己帮你“接管绘制”

下面给的是“方向 A”的完整实现:

  • 检测到“第一次 pointerType=‘pen’ 的 pointerdown”时:

    1. 记下 penEverUsed = true
    2. 对目标 canvas:
      • 阻止所有 TouchEvent(不再让原网页用 touch 画);
      • 阻止 MouseEvent(避免手指被当作 mouse)。
    3. 在我们脚本里,用 PointerEvent(pen)实现一个简单的涂鸦逻辑:只要 pointerType=‘pen’,就在 canvas 上画线。
  • 在此之前,脚本不拦截任何东西,网页完全按原样工作(你可以用手指或笔随便画)。

  • 一旦“见过笔”,后面就完全切换到“只用笔 + 我们的绘制”模式:

    • 手指:无论 pointer/touch/mouse,都不再能画线;
    • 笔:可以画线,但线条由用户脚本画,不是原网页逻辑。

请注意:这是在你的约束下,唯一现实可行的“只能用写字笔画,手指禁止”的实现


比GPT-5.1聪明的我

4 Likes

哦理论上这样没法屏蔽“手写笔在屏幕上同时的触摸”
但是考虑到新能源的画布根本就不支持多点绘制,这点可以完全忽略


刚刚在想是否需要"收起笔后重置",但是发现onenote都没有这个功能,所以不做了(而且我也怀疑浏览器能不能检测笔状态)
但是是否需要在点击“笔擦/笔/清屏”后重置状态?这个不难

3 Likes

合并到同一个脚本了(哦还有问题,禁止滑动给搞废了,实际使用建议等等)

还没做,另外还有一堆乱七八糟优化要弄

单击绘制那个,理论上不难,但是因为是直接在脚本里自己画,和新能源自己画笔的粗细、颜色可能不一致,需要回家研究

1 Like


看看今天能不能部署成功

1 Like

爆了一万个错,嗯

1 Like

依賴?環境?日志往上翻三行:)

2 Likes


单击画点实现了,移动端待重新测试,至少颜色、粗细应该没问题(粗细是自己手动获取滑动条算的所以可能有一点点误差)
理论上自阅那里也有类似的画板,但是那个似乎橡皮擦都有问题,感觉也从来没有过,干脆不管了

2 Likes

嗯。該有的都有了:)

這下連橡皮擦都不用修了,挺好。

1 Like


AI就是sb,就喜欢给自己加戏

1 Like

@SuenMeow

1 Like

自己編自己,挺好:)

1 Like