首页»版块 › 智慧生活 › 平板 ›没有手写笔,假装自己有一个
#MagicOS11好看丝滑超好用#

没有手写笔,假装自己有一个

[复制帖子标题和链接]

52111

爱吃丝绒蛋糕  LV8  发表于 3 天前 江苏 来自:荣耀平板MagicPad3


> 副标题:一次针对荣耀平板的、成功的、但没什么用的 PUA

## 起因

荣耀平板上有个东西叫「悬浮快捷菜单」——笔一拿起来,屏幕边上就浮出一颗小球,点开是一堆快捷工具。

问题是:**这颗球只在系统认定”你有一支笔”的时候才出现。**

而我一直觉得,它出现的时候屏幕会变成 120Hz,写起来特别跟手。所以我很想要这颗球。

于是我干了一件很合理的事:分析它到底是怎么判断”你有没有笔”的。

## 结论:它在数 Settings 里有几个开关

翻了一圈之后发现,这颗球的显示逻辑,本质上就是 floatmenu 这个系统应用去读几个 `Settings.Global` 的键:

| 键 | 含义 |
|---|---|
| `key_bt_pencil_state` | 笔的状态机:0 断开 / 2 取下唤醒 / 4 磁吸 |
| `key_pencil_attach_state` | 是否磁吸(1 = 吸着,此时球**强制隐藏**) |
| `honor_bt_pencil_connection_state` | 0 断开 / 1 连上但没接管 / **2 已接管** |
| `honor_bt_pencil_charging_state` | 是否在充电 |

**这些键是可以写的。** 只要你有 adb,或者 Shizuku,不需要 root。

也就是说:我不需要有笔,我只需要**让这些键看起来像有笔**。

## 于是,三行命令

```bash
adb shell settings put global key_bt_pencil_state 2
adb shell settings put global honor_bt_pencil_connection_state 2
adb shell settings put global key_pencil_attach_state 0
```

球出来了。

不是”类似的东西出来了”,是 `FloatBallWindowView` 这个窗口真的被创建了,`mViewVisibility=0x0`,152×152,活生生浮在屏幕右上角。系统被骗得彻彻底底。

我甚至给它做了个状态机:磁吸就关,取下就开——和真笔一模一样的行为。

```bash
adb shell ´sh /data/local/tmp/stylus_replicate.sh run 10´
```

## 然后我踩了一串坑

**坑一:系统有金鱼记忆。**
球显示 45 秒后自己消失了。这是 floatmenu 内部的空闲超时,跟 Settings 一点关系没有,改不掉。所以脚本必须每 10 秒去戳它一下,把它拉回来。

**坑二:值不变 = 什么都没发生。**
`ContentObserver` 只在值**变化**时回调。球被超时收掉之后,你再写一次同样的 `attach=0`,系统会打哈欠。必须先写 `1` 再写 `0`,制造一次跳变,它才会重新理你。

**坑三:别”监听 A 写 A”。**
我第一版想监听磁吸状态然后写磁吸状态,结果自己写的值触发自己的监听器,无限震荡。正确姿势是**监听一个不参与判定的键**(`charging_state`),去写参与判定的那个(`attach_state`)——单向,不打架。

**坑四:adb 拉不起那个服务。**
我原本想偷懒直接 `am start-service` 把悬浮球服务拉起来。结果 `dumpsys` 一查,人家带着 `permission=com.hihonor.stylus.floatcapsule.STYLUS_MENU`——签名级权限。shell 永远拿不到。死心。

**坑五:也是最扎心的——帧率没被骗到。**

## 骗得到什么,骗不到什么

我想要的其实是 120Hz。我以为球出来了就有 120Hz。

实测打脸:

```
球显示 + 静止   → 60 Hz
球隐藏 + 静止   → 60 Hz      ← 一模一样
球显示 + 写字   → 120 Hz
球隐藏 + 写字   → 120 Hz     ← 还是一模一样
```

**这颗球跟帧率一点关系都没有。**

真正决定帧率的是另一条链路:蓝牙包判定”笔已唤醒” → 通知 `AGPService` → 切换到 stylus 场景 → 120Hz。球只是这条链路的另一个**结果**,不是原因。

它俩是同一件事的两个副作用,我却一直以为是因果关系。这就好比:闹钟响了天就亮了,于是你买了个闹钟准备叫醒太阳。

而且更有力的证据是:把笔**磁吸**上去,球按设计被强制隐藏(窗口数 = 0),但刷新率照样是 **120Hz**。球没了,帧率还在。彻底盖棺。

所以这颗被我骗出来的球,是个**没有灵魂的空壳**:它长得跟真的一模一样,点开也有菜单,但它背后那套”笔真的在”的系统状态,一点没变。

`AGPService` 那一层,adb 够不到,Shizuku 够不到,得 root/system。我试了 `service call AGPService`,三重失败:没权限、`service call` 不会自动写 interface token、事务码还随版本变。

## 那 120Hz 到底怎么拿

官方其实早就给了开关,只是藏得深:

```
设置 → 显示和亮度 → 屏幕刷新率 → 高刷新率管理 → 把「笔记」加进去
```

加完之后,那个 App **不管你有没有笔、笔醒没醒,恒定 120Hz**。

顺便说个冷知识:这块屏幕硬件最高支持 **165Hz**,但系统把”高刷档位”定义成了 `{normal=60, high=90}`。所以你用手在笔记里写会撞到 **90Hz**——不是笔的问题,是档位定义的问题。

## 附赠:一支笔的讣告

我还试了第一代 M-Pencil(CD52),顺便搞明白了它为什么完全不能用:

- 蓝牙配对 ✅
- LE 加密 ✅
- HID 通道建立 ✅,VID `0x12d1` PID `0x1091`,**白名单完全合规** ✅
- GATT 应用层握手 ❌ → `battery = -1`,型号一直是上一支笔的残留值

它在蓝牙和 HID 层跟新笔**一模一样**,唯独握手那一步失败了。于是系统不认它,笔迹没有输入,永远 90Hz。

**硬件全都支持,死在软件握手。**而握手在蓝牙包进程内部,adb 碰不到。所以别挣扎了,它回不来了。

## 脚本

- `复刻真笔机制.sh` —— 稳定版。只做”磁吸关 / 取下开 + 保活”,这部分是实测有效的。
- `复刻真笔机制-完整版.sh` —— 激进版。在稳定版基础上把真笔会触发的所有策略都请求一遍(补齐键值指纹、多路径请求 120Hz、尝试 AGPService、尝试拉起蓝牙服务)。**成功率未知,我标注了哪些没验证过。**

```bash
adb push 复刻真笔机制-完整版.sh /data/local/tmp/stylus_replicate_full.sh
adb shell ´sh /data/local/tmp/stylus_replicate_full.sh check´      # 先看笔有没有被接管
adb shell ´sh /data/local/tmp/stylus_replicate_full.sh run 10´     # 激活
adb shell ´sh /data/local/tmp/stylus_replicate_full.sh reset´      # 撤销
```

需要 adb 或 Shizuku,不需要 root。脚本只写 Settings 和调系统命令,**不改任何 APK**。

## 最后

折腾了这么一大圈,我得到了一颗可以随时召唤、但没有任何实际增益的球,以及一个宝贵的教训:

> **adb 能改的,是系统对外展示的样子;改不了的,是它真正在做的事。**

悬浮菜单是”展示”,120Hz 是”做事”。我费尽心机伪造了前者,后者从头到尾没看我一眼。

不过话说回来——把笔吸上去,球消失了,帧率还在 120。

**系统:你没有笔。**
**我:我有。**
**系统:行吧,球给你。**
**帧率:不,你没有。**

(附:本文所有结论均来自真机实测。`min_refresh_rate` / `peak_refresh_rate` 荣耀根本不读,别浪费时间了。)


总结:把平板开发者打开,打开adb,连接电脑,用ADB devices刷新设备。
把复制真笔机制.sh俩个放入随意一个电脑目录,打开管理员终端,
把adb shell ´sh /data/local/tmp/stylus_replicate.sh run 10输入进去,就可以得到一个假笔了。

没有手写笔,假装自己有一个
没有手写笔,假装自己有一个
评论11
爱吃丝绒蛋糕  LV8  发表于 3 天前 江苏 来自:荣耀平板MagicPad3
提笔随记  LV7  发表于 3 天前 河南 来自:荣耀MagicPad3 Pro 13.3
真有意思哈哈哈(≧∇≦)/
提笔随记  LV7  发表于 3 天前 河南 来自:荣耀MagicPad3 Pro 13.3
命令bash在哪里执行

评论

adb 命令需要电脑,或者 TERMUX 终端自己连接自己执行  发表于 前天 13:10  江苏
爱吃丝绒蛋糕  LV8  发表于 3 天前 江苏 来自:荣耀平板MagicPad3
补充一下,把复制真笔机制. SH 你们可以用 AI 查询一下怎么放入这个 data/local /TMP 目录 把这个命名为 STYLUS _replicate 或者是命名其他的 但是之后那个 AdB 命令要改一下改成你自己命名的
爱吃丝绒蛋糕  LV8  发表于 3 天前 江苏 来自:荣耀平板MagicPad3
还要补充一下,理论上可以通过补充白名单,让华为的 M-pencil 2 和 M-pencil 3 原生支持悬浮菜单,但是我现在没有这个手写笔了,我之前通过蓝牙取消配对、反复配对,卡出这种悬浮菜单来。现在又给出了一种奇怪的方法,因为它本身卡住悬浮菜单之后就会自动 120,所以我觉得也没有什么要去测试的
爱吃丝绒蛋糕  LV8  发表于 3 天前 江苏 来自:荣耀平板MagicPad3
我还想说一下,可能这种补充白名单的方式需要 root 权这个权限我肯定是达不得
就这样说再见吧  LV8  发表于 3 天前 湖北 来自:荣耀平板V8 Pro 12.1
强
爱吃丝绒蛋糕  LV8  发表于 前天 13:12 江苏 来自:荣耀平板MagicPad3
除了圈选哪个其他都能用
没有手写笔,假装自己有一个

评论

套索,说错了  发表于 前天 13:12  江苏
双双乃我女神  LV9  发表于 5 小时前 福建 来自:荣耀GT Pro
膜大佬
您需要登录后才可以评论 登录 | 立即注册
简体中文 - China
快速回复 返回顶部 返回列表