English 中文(简体)
B. 设计关键短程的最佳做法
原标题:Best practices for designing keyboard shortcuts

我是一大fan子。 如果某些职能或行动没有捷径,我倾向于写一个小的方案,并附上Ctrl+Alt+[关键]捷径。

Yesterday while coding with Visual Studio I started thinking how well they had assigned the shortcuts. There are enormous amounts of commands and still most of them are intuitive and not a single one overlaps with an other, system wide key combination. Only exception is Ctrl + W and it irritates the hell out of me that it doesn t close the active tab by default as it should.

在指定主机长掌握方案时,应铭记哪些最佳做法?

哪些是常见的,哪些是“保留”的组合,除具体功能外不应使用(如:q. Ctrl+S,>......)

在小型应用中,我认为最好将Ctrl用作更重要的关键,但大的应用如何? (Shift/) Alt ? 或像在视觉演播室那样做? Shift只应用于功能逆转(Ctrl+Shift+Tab, scroll tabsbacks)?

或者在什么时候方案在拖拉中被降到最低程度,或完全没有全球倡议。 是否应在这一组合中使用窗口钥匙?

最佳回答
  • 开始使用通用视窗约束器:Ctrl + C 复制,Ctrl+ >,以节省费用等。 用户在尝试这些最常见的热点时不应感到惊讶。

  • 检查其他功能与你自己的功能相似的申请。 例如,如果你做像文字处理(应用文字风格)这样的事情,那么就看《语言》。 如果你有像样的绘画工具,或许可以看照片店等。

  • 列出你们在“完成”方案时所期望的所有指挥。 这可能比现在多很多,其中一些指挥可能永远不会出现,但这项工作能够帮助你避免每释放一次热点——从一开始就保留这些钥匙。

  • 现在,删除名单上所有你认为每天不会多次使用的指挥。 例如,Ctrl+C用于“(C)opy”是好的,因为每小时可使用60倍。 但Ctrl + C for “(C)heck if new verison has been release”是一个坏的热钥匙,因为不可能有用户希望每周或更长时间这样做。

  • 当怀疑使用热钥匙的频率时,放弃>。 它比对关键板上每个关键人物有太多的备用钥匙,然后必须不断改变约束性。 使用较少的热key减少了用户的复杂性、需要做的检测数量以及用用户的笔本做一些事情的可能性。 如果用户真的想要一个热点,他们就会要求它,你可以补充。 但一般来说,只有实际使用的特点需要热key。

  • 编制一幅带有一栏的复信表格,供模拟者使用。 进入你预期的高使用率指挥系统进入这一电网,并优先使每个部队能够使用最简单和最明显的关键捷径。 在许多情况下,你发现,只有一名指挥属于某个特定关键。 还试图将相关指挥按相同关键但不同(Ctrl/Shift/)。 Alt modifiers (e.gCtrl + S Save, Ctrl + Shift +S /kbd> Save-all)。 这将给你留下任何能够轻易被描绘成明显钥匙的指挥。 如果重新命名某些备选办法可能有助于改变情况,以更好地进行勘测(例如“选择”、“选择”、“选择”或“选择”等同义词,可能有助于你找到更容易绘制良好分类图的指挥名称)。

  • 现在,你被留给指挥,可能受最明显的关键约束(例如,“Cut”可能受约束于+C,因为它被用于“Copy”,因此,你通常认为它属于Edit->cu(T)和Edit->Copy。 因此,您可考虑使用Ctrl+T,以便与男性分类方法保持一致(但在特定情况下,当然还有一种原有的标准,即Ctrl+X = 削减)。

  • Add a key binding system so your users can add/alter hotkeys to customise their UI.

  • 尽可能做到一致。 正如你指出的那样,转变往往被用来“扭转”导航指挥的方向。 在选择时,遵循窗口公约(Ctrl至 toggle,Shift,以延长)。 但是,这主要与你的申请一致——在大多数情况下,它实际上并没有影响CtrlShiftShift+,但是如果可能的话,试图对你的所有指挥单位适用类似的逻辑。

  • 仔细使用Alt作为 mo。 用户应当能够在菜单系统中使用Alt。 因此,你只能使用Alt ,同时使用Ctrl/Shift,并确保你的热key处理不会中断正常的Alt 处理菜单系统所提供的处理。

  • 如果你的节目内容很多,那么避免使用未经修改的钥匙进行热key。 当你新闻M时,我们真心想做事,不仅不会发生事情,而且M出现在你本人的问世中。 ++ + , 易于避免。 这还使热钥匙能够启动指挥系统,即使用户在某个特定地点有投入重点,避免任何新生模式。

  • 如果你使用多基序列,那么不会混杂 t和混杂.。 例如,ctrl+,,+B是罚款,但ctrl+A>>,>或+kb/kbd> 由于用户必须按顺序排出ctrlctrl中途半途,因此情况不佳。 (2008年) 我与你们交谈!

  • 除非是投入重点应用,否则就向热钥匙做事。 例如,有一个非常受欢迎的方案,即(缺席)休息时间:;+;A,因此,在你试图通过一个无关的方案选择全部时间时,可以宣布。 WHY oh WHY! 如果你认为全球热点是一个伟大的想法,那么,如果用户愿意,就会把它当作一种选择,这样他们就会知道热点的存在。

  • 我同意,视觉演播室有一套良好的违约约束。 但在许多方面,设计得很不好——VS2010年是我刚才使用的首版VS,对前版本的核心关键约束力进行了令人沮丧的大规模突破性改动。 这通常是最痛苦的一部分,可以升级到新的甚高频版本。 我非常高兴和惊讶地发现,最常见的特征(如“布置”)在2010年VS违约时仍然处于同样的热点。 希望现在他们与他们一道坐下来......

问题回答

不应忘记的还有一件事:Ctrl+Alt+ /letter 由于许多关键布局都有一个Gr键盘板块,也由Ctrl+Alt触发,因此可以更好地避免组合。

例如,在德国关键板上打上@特性,你将打上AltGr+Q=Ctrl++

More info at

捷径需要听途说,这就是为什么/Ctrl+(S(save)和Ctrl+N(新)工作良好,一些方案者将其用不同语言改动。 (Ctrl + B, bold为Ctrl+F, 用于旧版本的MS核销。) 同样, X类似于裂变器,五是插入标记,因此切割和过去。

在更高级的层面上,防止无法消除的意外影响:更危险的指挥需要更复杂的警卫: 诸如Ctrl+Alt+Del等,极难意外分类。

还铭记Alt是菜单进入钥匙。





相关问题
Why running a service as Local System is bad on windows?

I am trying to find out the difference between difference service account types. I tumbled upon this question. The answer was because it has powerful access to local resources, and Network Service ...

Programmatically detect Windows cluster configuration?

Does anyone know how to programatically detect that a Windows server is part of a cluster? Further, is it possible to detect that the server is the active or passive node? [Edit] And detect it from ...

get file icon for Outlook appointment (.msg)

I ve read Get File Icon used by Shell and the other similar posts - and already use SHFileInfo to get the associated icon for any given extension, and that works great. However, Outlook uses ".msg" ...

Identifying idle state on a windows machine

I know about the GetLastInputInfo method but that would only give me the duration since last user input - keyboard or mouse. If a user input was last received 10 minutes ago, that wouldn t mean the ...

Terminating a thread gracefully not using TerminateThread()

My application creates a thread and that runs in the background all the time. I can only terminate the thread manually, not from within the thread callback function. At the moment I am using ...