{"id":13430053,"url":"https://github.com/MaxChang3/Bilibili-Trackpad-Scroll-Reverser","last_synced_at":"2025-03-16T05:30:23.817Z","repository":{"id":142288656,"uuid":"611883969","full_name":"maxchang3/Bilibili-Trackpad-Scroll-Reverser","owner":"maxchang3","description":"Scroll Reverser for videos on Bilibili web version. 优化 b 站视频音量调节在触控板上的体验。使用触控板优雅的调节视频音量。向上则增、向下则减。","archived":false,"fork":false,"pushed_at":"2025-01-31T17:20:00.000Z","size":456,"stargazers_count":5,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-02T01:01:56.122Z","etag":null,"topics":["bilibili","tampermonkey","tampermonkey-userscript","userscript"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/maxchang3.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-03-09T18:34:11.000Z","updated_at":"2025-01-31T17:19:27.000Z","dependencies_parsed_at":"2024-01-17T19:17:06.888Z","dependency_job_id":"2750b1a1-bfad-424d-8831-1a24c60f04bd","html_url":"https://github.com/maxchang3/Bilibili-Trackpad-Scroll-Reverser","commit_stats":null,"previous_names":[],"tags_count":17,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxchang3%2FBilibili-Trackpad-Scroll-Reverser","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxchang3%2FBilibili-Trackpad-Scroll-Reverser/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxchang3%2FBilibili-Trackpad-Scroll-Reverser/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxchang3%2FBilibili-Trackpad-Scroll-Reverser/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/maxchang3","download_url":"https://codeload.github.com/maxchang3/Bilibili-Trackpad-Scroll-Reverser/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243830912,"owners_count":20354848,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bilibili","tampermonkey","tampermonkey-userscript","userscript"],"created_at":"2024-07-31T02:00:49.589Z","updated_at":"2025-03-16T05:30:23.811Z","avatar_url":"https://github.com/maxchang3.png","language":"TypeScript","funding_links":[],"categories":["篡改猴脚本"],"sub_categories":["主站脚本"],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg  src=\"./assets/logo.gif\" width = \"50%\"\u003e\n\u003c/p\u003e\n\n# 哔哩哔哩触控板滚动反转\n# Bilibili-Trackpad-Scroll-Reverser\n\n\u003e 自然滚动下，音量的调节应该也是自然的。\n\n优化 B 站视频音量调节在触控板上的体验。使用此脚本后，在 B 站视频全屏界面中，使用触控板向下滚动将减少音量。（未安装时为增大）\n\n在触控板操作中，滚动方向遵循「自然滚动」原则：当用户向上滑动时，意味着展示下方内容，这种交互逻辑与现实世界的物理运动保持一致。相比之下，传统鼠标的滚动方向则采用相反的逻辑：向上滚动表示返回上方内容。\u003csup\u003e*\u003c/sup\u003e这种差异导致同一操作方向在不同设备上产生截然不同的结果。\n\n然而，在音量调节的时候二者的语义则得到了统一：「向上就是升高，向下就是降低」。\n\n由此则需要判断是否为触控板，再对其进行不同的处理。不过由于目前浏览器的 API 所限，目前仍然没有可以完美区别触控板和鼠标的方式。此脚本提供了两种策略让你可以在 B 站上更好的使用触控板调整音量。\n\n\u003csub\u003e * macOS 默认情况下鼠标和触控板的「自然滚动」是统一设置的，但是对于许多非 Magic Mouse 用户仍会使用诸如 Scroll Reserver/鼠标自带驱动 之类的第三方工具来实现分别设置。\u003c/sub\u003e\n\n## 安装\n\n[[Greasyfork](https://greasyfork.org/zh-CN/scripts/432783)]\n[[Github Release](https://github.com/MaxChang3/Bilibili-Trackpad-Scroll-Reverser/releases/latest/download/bilibili-trackpad-scroll-reverser.user.js)]\n[[Github Pages](https://maxchang3.github.io/Bilibili-Trackpad-Scroll-Reverser/bilibili-trackpad-scroll-reverser.user.js)]\n\n## 建议\n\n初始化时提供两个选项：「简单」与 「矫正」。\n\n简单模式：粗暴地认为 `deltaY` 值低于 `100` 的为触控板。仅对于细微调节适用。移动过快时，会导致判断中间出错。\n\n矫正模式：根据提示滚动鼠标滚轮选择最小整数 `deltaY`。 除去这个数值外，如果是浮点数则为鼠标，整数值则为触控板。\n\n**对于 macOS（Chorme/Safari），推荐使用「矫正模式」。**\n\n**对于未开启平滑滚动的情况下的 Windows 设备、所有平台的 Firefox 浏览器下，目前暂时推荐使用「简单模式」。** \n\n后续会在初始化流程自动引导该设置。\n\n## 实现原理\n\nHook `EventTarget.prototype.addEventListener` 拦截对应的 `mousewheel` 事件。~~（为什么不用 `wheel`！）~~\n\n判断是否为触控板，添加代理拦截 [wheelDelta](https://developer.mozilla.org/en-US/docs/Web/API/Element/mousewheel_event) 值，取相反数（这里直接取 [deltaY](https://developer.mozilla.org/en-US/docs/Web/API/WheelEvent/deltaY) 后做一定计算处理，他与 `wheelDelta` 正负相异）后返回。\n\n\n## 触控板判断逻辑\n\n\u003e ⚠️ 由于硬件、浏览器差异，可能会有完全不同的表现，未作大范围测试，如有问题，欢迎反馈！\n\n\u003e 目前的逻辑是判断出鼠标，反过来得知触控板，鼠标测试硬件均为 Logitech MX Anywhere2s。\n\n### macOS \u003csup\u003e[1]\u003c/sup\u003e\u003csup\u003e[2]\u003c/sup\u003e\n\n1.鼠标滚轮推动下的 `deltaY` 存在一个**最小整数值**，除去这个值之外的其他值大概率为浮点数，并且小数点后较为复杂。形如：`235.867919921875`。\n\n2.触控板大部分情况下为整数，存在为浮点数的触控板，但是一般也不会很复杂。形如：`2.5`。\n\n因此，采取人工矫正的方式，使用鼠标的最低刻度推动获取一个最低的整数 `deltaY`。除去这个值外的所有数值，都根据是否为整数\u003csup\u003e[3]\u003c/sup\u003e进行判断，是则为触控板，否则为鼠标。目前经过一段时间测试，效果良好。\n\n\n### Windows\u003csup\u003e[4]\u003c/sup\u003e\n\n1.未开启平滑滚动的情况下。通过不同的力度，仅能得到几个整数值。最低为 100。高至 600.\n\n2.开启平滑滚动的情况下，数值为分布在 1 左右的浮点数。\n\n因此，对于 Windows 目前推荐使用简单模式。\n\n\n\n\u003csub\u003e[1] 仅 Chrome / Safari，Firefox 下全部为整数值。\u003c/sub\u003e\n\n\u003csub\u003e[2] 仅有限测试于 macOS 13.2.1（MacBook Air M1） \u003c/sub\u003e\n\n\u003csub\u003e[3] 由于 2 的原因，对 `deltaY` 做乘 2 处理避免这种情况。目前测试设备有限，未来可能会有所变动。\u003c/sub\u003e\n\n\u003csub\u003e[4] 仅有限测试于 Windows 11（LEGION R7000）\u003c/sub\u003e\n\n\n## 更新日志\n\n### 2.0\n2023年3月10日\n- 移植到 TypeScript\n- 使用 [vite-plugin-monkey](https://github.com/lisonge/vite-plugin-monkey) 进行工程化开发\n- 直接 Hook 事件监听，无需手工添加元素\n- 使用 Proxy 重构\n- 修改全屏判断逻辑\n\n\u003cdetails\u003e\n\u003csummary\u003e2.0 前更新日志\u003c/summary\u003e\n\n### 1.0\t\n2022年8月27日\t\n- 整理代码\n\n### 0.8\t\n2022年8月27日\t\n- 重构大部分代码，适配新版播放页\n\n### 0.7\n2021年9月23日\t\n- 修改全屏判断\n\n### 0.6\t\n2021年9月23日\t\n\n- 优化判断 \n- 全屏下进行接管\n\n### 0.5\t\n2021年9月23日\t\n\n- 支持番剧页面 \n- 优化部分代码\n\n#### 0.1 - 0.4\t\n2021年9月22日 - 2021年9月23日 \n\n- 项目基本功能和完善\n\u003c/details\u003e\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FMaxChang3%2FBilibili-Trackpad-Scroll-Reverser","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FMaxChang3%2FBilibili-Trackpad-Scroll-Reverser","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FMaxChang3%2FBilibili-Trackpad-Scroll-Reverser/lists"}