产品设计:QQ快捷键功能的设想与架构

2010年3月6日 由 Hackfan | 有 826 人次阅读 留言 »

  QQ是中国即时通讯领域的大哥,产品设计符合中国国情,开发团队也十分优秀。每次QQ新版本的发布,或多或少的给我带来惊喜。

  但Windows下QQ的快捷键功能,一直没有重大改革。昨天趁着QQ同时在线突破1亿人,安装了QQ 2010 Beta版本。让我失望的是,快捷键功能仍然沿用了之前的设计。因此,我不得不写文章,说说自己对QQ快捷键功能的设想与架构。

QQ快捷键功能的使用现状

  玩网游,特别是中小型网游的人,经常说一个词儿,叫“双开”(或“多开”)。所谓的双开(或“多开”),是指在一台电脑上,同时开上两个(或者多个)客户端,进行游戏。

  不少QQ用户,也有着“双开”的情节。同时开着两个或者多个QQ,将不同的好友放置到不同的QQ里,成为很多QQ老鸟的习惯。

  老鸟也熟悉QQ的快捷键规则:CTRL+ALT+Z是显示消息,CTRL+ALT+A是屏幕截图……

  但所有双开QQ的用户都遇到了一个麻烦,就是快捷键冲突。不少用户也有解决的方法,对于显示消息,将QQ1的快捷键设置为CTRL+ALT+Z,将QQ2的快捷键设置为CTRL+ALT+X……

QQ快捷键功能所出现问题

  快捷键冲突的问题似乎可以通过修改快捷键设置来解决,但是随着同时开启QQ数量的增多,这样的解决方式,已经不能满足用户的需求了。

问题1、快捷键多操作不便

  对于“将QQ1设置为CTRL+ALT+Z,QQ2设置为CTRL+ALT+X”的解决方法,在QQ数量达到或者超过3个的时候,就显得很不方便。一来,需要记住每个QQ所对应的快捷键,二来,击打快捷键的难度也提高了不少。

问题2、屏幕截图到底谁管?

  QQ的屏幕截图功能十分方便,屏幕截图的快捷键也是我最常用的。CTRL+ALT+A,轻松截图。但当多开QQ时,击下CTRL+ALT+A快捷键,实际上是交给第一个打开的QQ处理的。当这个QQ被关闭时,即使其他QQ还在线,也无法用快捷键来激活屏幕截图功能了。

  同样的问题也存在于消息盒子。

QQ快捷键功能的改进设想

当前的设计思想?

  有人说,设置不同的快捷键,可以区分来自不同QQ的消息。我认为,通过QQ的皮肤设置,也可以达到同样的效果。

  还有人说,设置不同的快捷键,可以设置来自不同QQ的消息的显示优先级(可以只查看QQ1而不查看QQ2、QQ3的消息)。我认为,这样的想法固然好,但是并不能掩盖目前设计上的缺陷,不能满足目前一部分多开用户的需求。

我的设计想法

  不管打开多少个QQ,都使用一组快捷键设置,来进行操作。如CTRL+ALT+Z可以同时阅读QQ1、QQ2、QQ3的消息;只要有QQ开着,CTRL+ALT+A就能用来截图。

QQ快捷键功能的架构设计

  之前多开QQ出错的原因在于,每个QQ都试图向操作系统注册快捷键。因此会出现快捷键冲突。QQ可以做一个“快捷键注册者”(Tencent Hotkey Registry,简称THR),专门负责处理QQ客户端的快捷键注册与使用。

运行流程

流程1、运行QQ

  用户运行QQ->QQ调用THR->QQ向THR发送快捷键设置->THR处理快捷键请求,如果快捷键未在操作系统注册,则以THR的名义,向操作系统申请快捷键->THR向QQ返回结果

流程2、消息处理

  某QQ来消息->如果该消息所属窗口不存在,需要快捷键调用->QQ向THR插入消息通知->THR将该通知与对应的快捷键记录到消息盒子

流程3、用户点击图标阅读消息

  用户点击某消息提示的QQ图标->QQ向THR通知移除消息通知->QQ显示该消息

流程4、用户击打快捷键

  用户击打快捷键(CTRL+ALT+Z)->操作系统通知THR->THR根据快捷键,按顺序找出最新(或最旧)的消息->THR通知该消息的QQ->QQ显示该消息

  用户击打快捷键(CTRL+ALT+A)->操作系统通知THR->THR调用屏幕截图功能->存入操作系统剪切板->THR通知所有QQ->QQ决定是否将图片插入输入框

细节、特性讨论

1、THR是干嘛的?

  THR(Tencent Hotkey Registry)是QQ的快捷键处理中心,当多个QQ需要跟操作系统打交道的时候,这个角色就很重要了。用户的击键交给THR来统一协调处理,这样就可以让多个QQ使用相同的快捷键了。

2、当前版本的QQ的快捷键设计需要大改动吗?

  不需要大改动,仅仅需要将“向操作系统注册快捷键”改为“向THR注册快捷键”。用户的快捷键设置,仍然以原格式存储在本地或者服务器上。用户之前养成的习惯得以保留。

  同时,QQ不再监听和处理用户直接的快捷键击键。为THR留一个接口,方便THR向QQ发送显示消息的通知。

3、用户可以通过设置不同快捷键,来区分不同QQ吗?

  当然可以,快捷键设置还是跟着不同的QQ走。QQ将自己的快捷键向THR登记而已。

  THR解决了多个QQ相同快捷键的问题,而多个QQ不同快捷键,THR能轻松应付。

4、屏幕截图功能怎么办?

  我猜测,用户开一个QQ,都要运行一套屏幕截图代码,如果开3、4个QQ,那就等于开了好几个屏幕截图软件,浪费了内存。不如将屏幕截图功能也独立出来,通过消息机制来调用。无论是快捷键还是截图按钮,都调用同一个截图软件,截图后,由QQ自行决定该内容是否插入输入框。

结束语

  以上是胡吉阳(Hackfan)作为一名产品使用者及开发者,向Tencent QQ提出的建议。文章著作权归胡吉阳所有。

标签:, , , , , ,

相关日志

2 条评论

  1. 张雁鹏 说:

    恩,键盘党的福音啊。

  2. 草履虫 说:

    这个设想实现起来确实很简单 毕竟Windows系统内程序间是靠消息通讯的
    如本文所说 做一个服务专门处理快捷键注册和响应 并把消息发送至(我更喜欢广播)相关的进程即可
    我很奇怪的是 腾讯始终不去这么做的原因呢?

留下评论