Skip to content

Accessibility zh

James Morris edited this page Jul 29, 2026 · 1 revision

无障碍功能

🌎 语言: 简体中文查看全部 33 种语言

LockedIn CLI 是个玩笑,但它的无障碍功能不是。渐变字标、框线卡片、盲文动画和 emoji 让终端界面很丰富,却也会令辅助技术难以使用,除非从设计开始就考虑无障碍。本页说明 CLI 做了什么如何启用,以及背后的通用最佳实践

四种模式

模式 标志 环境变量 效果
屏幕阅读器 --accessible--a11y--screen-reader LOCKEDIN_ACCESSIBLE=1,或 TERM=dumb 清晰、线性的纯文本:无边框、无 ASCII 图案、无动画、无装饰符号;关闭颜色;使用短提示符;并加入语义地标(“帖子:”……“(帖子结束)”)。
高对比度 --high-contrast--hc LOCKEDIN_HIGH_CONTRAST=1 面向低视力用户的高对比度配色:纯白次要文字、更亮的强调色、不使用暗淡样式,并以纯色强调取代低对比度渐变。
低干扰 --low-distraction--calm--reduce-motion LOCKEDIN_LOW_DISTRACTION=1LOCKEDIN_REDUCE_MOTION=1 减少动态效果、移除装饰 emoji、采用平静的纯色,同时保留视觉布局,降低认知和感官负担。
纯文本 / 单色 --plain--mono--monochrome LOCKEDIN_PLAIN=1,或 NO_COLOR=1 禁用所有颜色,但保留完整布局、边框和 emoji。适合颜色支持不佳的终端、日志或个人偏好,并覆盖 FORCE_COLOR

这些模式可以组合--high-contrast --low-distraction 会得到明亮、平静且无 emoji 的界面;在 TERM=dumb 终端上,屏幕阅读器用户会自动进入无障碍模式。模式冲突时, 限制更严格的设置优先:单色覆盖彩色配色,屏幕阅读器模式优先于纯文本模式。

lockedin --accessible post
lockedin --high-contrast
lockedin --plain post
LOCKEDIN_LOW_DISTRACTION=1 lockedin aura

在会话中切换模式:/a11y

你不必在启动前决定。交互会话里的 /a11y 是真正可用的控制面板:

输入 结果
/a11y 显示四种模式当前的开 / 关状态
/a11y <mode> 切换一种模式:screen-readerhigh-contrastlow-distractionplain(也支持 sr / hc / calm / mono 等别名)
/a11y reset 关闭全部模式

状态始终以明确的开 / 关文字显示,绝不只靠颜色传达;需要这些功能的人可能无法感知颜色。 整个面板也已完整本地化。

背后的最佳实践

这些原则同样适用于其他终端工具。

  1. 语义优先于装饰。 屏幕阅读器逐字符朗读。框线会变成重复的“横线”,ASCII 字标则是噪声。 无障碍模式用文字替代视觉结构:启动画面直接读出“LockedIn CLI”,卡片使用 “帖子:”“(帖子结束)”等地标标示区块边界。
  2. 绝不只靠颜色或图标表达含义。 只由颜色或 emoji 承载的信息对一些用户不可见。 关闭颜色后文字仍应完整,例如去掉 ✔ 后,“已与 Ava 建立联系”仍然清楚。
  3. 提供文字替代并移除噪声。 装饰 emoji 常会被冗长朗读(“📥”会读成“收件箱托盘”)。 无障碍模式移除纯装饰符号并保留文字;低干扰模式移除醒目的 emoji,但为需要平静界面的 视力用户保留布局。
  4. 尊重减少动态效果的偏好。 盲文加载动画可能分散注意力,也可能引发前庭不适。 无障碍和低干扰模式都不播放动画,只静态打印一次状态,对应网页上的 prefers-reduced-motion
  5. 提供高对比度。 低对比度的“柔和灰色”次要文字对许多用户不符合 WCAG 要求。高对比度模式改用纯白并提高强调色亮度。
  6. 降低认知负担。 有些用户需要的不是更多,而是更少:少装饰、无动画、无 emoji。 这在此处是一级功能,而不是事后补丁。
  7. 遵循平台惯例。 CLI 尊重 NO_COLOR,也把许多屏幕阅读器和 Emacs shell 会导出的 TERM=dumb 视为启用无障碍模式的信号,并读取 LOCKEDIN_REDUCE_MOTION。识别既有信号比要求用户再配置一次更好。
  8. 让它可测试,并持续测试。 未进入测试门禁的无障碍功能会逐渐失效。测试套件会在所有语言下 检查无障碍输出不含装饰符号、语义地标存在、高对比度配色已替换,以及低干扰布局仍然对齐。

方向格式同样采取失败即关闭的策略。阿拉伯语、波斯语、希伯来语和乌尔都语默认不输出 双向文本控制符;只有用户明确为支持隔离符的终端设置 LOCKEDIN_BIDI=on 时才启用。 屏幕阅读器模式即使在此情况下也会移除这些控制符。TTY 探测或终端白名单都不能覆盖安全默认值。

实现方式(供感兴趣的读者)

  • a11yFilter(s) 移除装饰 Unicode(框线、方块、几何、技术符号、装饰符、盲文和 emoji), 并将文字左对齐;无障碍模式会对所有输出应用它。
  • emojiFilter(s) 是更轻量的低干扰过滤器:仅移除醒目的 emoji / 符号,保留框线、 项目符号、箭头和 ANSI 颜色,因此视觉布局仍然存在。
  • 高对比度模式会就地替换颜色对象 C;开启高对比度或低干扰时,渐变改为纯色强调。 纯文本模式强制 C 的每个值为空,即使设置 FORCE_COLOR 也完全无颜色,同时保留布局。
  • renderSplash、加载动画、renderPromptcard 在无障碍模式下都有语义分支: 纯文本、无动画并带地标。
  • 检测逻辑位于 detectAccessible / detectHighContrast / detectLowDistraction / detectPlain;入口点会在渲染前应用检测结果。会话内的 /a11y 命令(handleA11y + renderA11yStatus)实时切换同一组模块状态。

添加功能时如何保持无障碍

教程的审查清单包含无障碍步骤:

运行 lockedin --accessible <your command>,确认它是干净、易读的纯文本,没有新的装饰符号 漏过过滤器,而且任何结构化区块都有地标。然后测试 --high-contrast--low-distraction--plain;后者必须不输出颜色代码,但保留布局。 新增的用户可见文字必须在每个语言包中都有对应键,确保 /a11y 面板和帮助保持翻译完整。


讽刺作品。与 LinkedIn 无关联。GPL-3.0-or-later

📘 LockedIn CLI wiki

Tutorial

Reference


Satire · Sátira · 風刺. Not affiliated with LinkedIn. GPL-3.0-or-later.

Clone this wiki locally