Hacker News 中文摘要

RSS订阅

GUI应完全由键盘驱动 -- GUIs should be fully keyboard-driven

文章讨论了GUI与TUI的优劣,作者认为GUI功能更强大,但TUI的键盘驱动特性被过度推崇,指出GUI同样可以实现完全键盘操作,不应以此作为偏好TUI的充分理由。

正文

上周,作者在《黑客新闻》上读到一篇鼓励开发者停止开发终端用户界面(TUI)、转而专注于图形用户界面(GUI)的文章,该文引发热议。作者认为双方观点各有道理:GUI框架功能更全面,理论上应优先选择;但作为重度终端用户,他也欣赏TUI能让人“留在”终端完成所有操作。

然而,作者反对一个支持TUI的常见论点——即“TUI应被优先选择,因为它们完全由键盘驱动”。虽然随机选取的TUI应用确实更可能支持全键盘操作,但这并非TUI优于GUI的理由,反而暴露了许多GUI应用在键盘导航上的不足。事实上,GUI完全可以实现甚至超越TUI的键盘驱动能力,许多GUI框架指南(如GNOME人机界面指南)明确要求开发者确保所有操作都能通过键盘完成。

作者以自身经历为例:作为用户,能直观、可预测地用键盘导航GUI应用会让他更倾向选择它;作为开发者,他在首个GUI应用“Klisi”中投入时间实现了覆盖所有功能的键盘快捷键。他认为,键盘导航在大多数情况下并不难实现,关键在于开发者的意愿,而非技术可行性。

结论很简单:不要牺牲应用的用户体验,应努力使其尽可能直观,而实现全键盘导航是其中不可忽视的一环。

评论

根据评论内容,主要围绕GUI与TUI的键盘可访问性展开讨论,观点呈现明显分歧。以下是总结:

支持键盘驱动UI的观点
- 键盘操作能提升效率,尤其适合数据输入和脚本编写(sublinear: "CLIs should be preferred when available. Learning them pays you back when it's time to write a script or pipe massive amounts of data.")
- 键盘与鼠标结合可优化UI设计(bigstrat2003: "when you design for both keyboard and mouse input, it will force you to consider rough edges of your UI design")
- 通用命令搜索栏是优秀模式(arjie: "universal command search bar... remarkable upgrade on browsing menus")
- 键盘导航应成为基础要求(cosmic_cheese: "Keyboard accessibility is one of those things that tends to get swept under the rug")

反对或质疑键盘优先的观点
- 键盘操作学习成本高,不适合普通用户(olivewong: "ain't no way my mom is learning vim")
- 图形界面优势在于二维坐标输入(binary132: "The big advantage of a GUI is having interactive 2D coordinate input support")
- 键盘快捷键难以记忆和发现(yangshi07: "it is really hard to remember the shortcuts")
- 应优先保证UI的可发现性和实用性(jvreeland: "I want the ui to be discverable and usefull")

平衡性观点
- 键盘驱动不应完全取代鼠标(hombre_fatal: "Ideally all GUIs/TUIs are usable with keyboard and mouse independently")
- 需平衡不同用户需求(manlymuppet: "Power user experience is not the same thing as user experience in general")
- 键盘导航需配合图形引导(danielvaughn: "you need some graphical controls to help guide users")

技术实现讨论
- 现代框架对键盘支持不足(cosmic_cheese: "That sort of design has fallen out of favor with newer frameworks")
- 终端可提供跨应用文本复制功能(jolmg: "Any terminal can implement this kind of arbitrary-text keyboard navigation on its own")
- 网页端键盘可访问性是WCAG基本要求(onion2k: "keyboard accessible web UIs are a WCAG 2.1.1 level A requirement")