禁止 MediaWiki 的 Access Key

实在是忍不了了,我在创建了一个 wiki 来做日常的记录之后,经常用它来记笔记什么的。Wiki 的便捷性就不用说了,只需要浏览器,不需要其余设施。内容放在服务器上,也不怕丢失。但最让我头疼的是 MediaWiki 的快捷键的问题。

我之前提到过这个问题。不知道从那个版本开始,MediaWiki 的开发者加上了快捷键。这个决定看上去聪明,解脱了鼠标,让人们可以更快捷的使用 MediaWiki 和 Wikipedia,但实际上糟糕透了。原因是这些快捷键和很多传统快捷键冲突──当你习惯了 Emacs 风格的光标移动方式(也就是 Mac 系统的快捷键移动光标的方式)之后,再在 MediaWiki 中操作一会,一定会大骂添加快捷键功能的开发者灭绝人性的。

虽然那时候发现了问题,但我那一阵子还没想到会用 MediaWiki 来创建 wiki。我本来打算的是用 wiki 系统来生成主页,而不是想要一个 wiki。我在别的地方写到,我考虑过用 MediaWiki,但是我不需要这么个庞然大物,所以我选择了 UseMod Wiki。而且我长时间没有关注 MediaWiki,也不知道它已经支持了 SQLite 数据库──Site 5 的 MySQL 数据库默认的字符编码是该死的 swedish,我的 blog 已经转移到了 SQLite 上了,因此也就一直懒得找把编码设定为 UTF-8 的方法。而我也不想弄的我的 wiki 的数据库里都是乱码,所以我找 wiki 系统当中的一条标准就是支持纯文本或者 SQLite 数据库。后来找了半天也没有合适的,再查看了一下 MediaWiki 的文档,发现它支持 SQLite,顿时喜出望外,于是就装了。

安装了 MediaWiki 之后,我查阅了一些文档,总算回忆起了之前的知识,也把它调适的比较合适日常使用了,我平时的一些信息,比如想看但来不及看的网页地址、一些旧文章、任务列表、还有一些 tip、以及某些课堂笔记,只要是不怕公开的,我都记在上面。从内容上来看,它大概更像是一个 PIM 系统。几天用下来,还是相当满意的,当然其它的 wiki 系统也并不是差到不能用的地步,而是我的心境变了。我这次没有想着用 wiki 系统来做页面,只是把它当作 wiki 来使用,自然觉得一切顺手。

但唯一的一点缺陷(虽然也不算唯一,因为有些 64 位不兼容的问题也挺讨厌,但我能忍受)就是这个快捷键了。我目前的主要浏览器是 Firefox,我日常也一直在 Firefox 里面使用这个 wiki,我开始的时候估计这些快捷键应该是 JavaScript 实现的,但 NoScript 插件并没有提示,我一时间也无从下手。本来我觉得像这种切换功能是应该在设定里面有选项的,但我找了几遍也找不到。后来想想既然别人设计了这个功能,Wikipedia 上也是这样运作的,我就忍了,于是就这么磕磕绊绊的用了这么一段时间。

后来 Google Chrome for Mac 发布了新版本,支持书签同步和插件,我就下载下来试试,用了几天 Chrome。在 Chrome 中我惊奇的发现这些该死的快捷键都失灵了,不错。而且在 Firefox 中看着平平淡淡的页面,在 Chrome 中竟然显得层次分明,相当漂亮。本来我觉得我找到了完美的解决方案,就是用 Chrome 代替 Firefox。但用了一段时间之后,我还是把 Chrome 给退出了。说不上具体的原因,我总是觉得 Chrome 用着还不是很顺手,应该是还不太成熟,Firefox 中的一些插件我也放不下,于是还是回到 Firefox 里来用 wiki。

今天下午上课的时候,照样用 wiki 来记笔记,但记着记着就忍不住了,我估计我要一直用下去,非得心理扭曲了不可。好在我分析 MediaWiki 上传数据用得应该不是简单的 HTTP POST,否则我辛辛苦苦编辑的文档,在误按了某个快捷键而导致更新了页面而彻底丢失的话,我简直就欲哭无泪了。而目前 MediaWiki 的这种方式,哪怕是页面更新了,我从浏览器里后退一步,那文档还是存在,这也是我之前说的可以磕磕绊绊的用了 MediaWiki 这么一段时间的原因。

不过今天觉得不行了,说什么也要把这个问题解决掉。长痛不如短痛,今天废点力气把它彻底的解决,之后就爽了。我于是就搜索 MediaWiki 的 short key 相关的页面,觉得 MediaWiki 的文档设计的似乎也不太方便查找。最后发现在 MediaWiki 里面,快捷键的学名叫做 access key,正是我之前忽略了好几次的东西。

最后我在 Wikipedia 的一个讨论页上看到了一些人针对这些问题的讨论。我发现原来不止是我一个人有这个问题啊,很多人都说他 hate 这个东西。有位名叫 Matt B. 的人给出了一种解决方案,算是一种以毒攻毒了,就是添加一些自定义的 JavaScript 脚本,把原先的设定给覆盖掉。Matt 是只修改 Monobook 这一个模板的脚本,我直接修改了 Common.js 这个脚本,其它的模板是不是有同样的快捷键设置,我不管,反正我之后是再也不想见到它。

总结的方法是,编辑 wiki 的 MediaWiki:Common.js 页面,放上我这个页面里面的代码,刷新一下系统就可以了。我是粗暴的禁用了所有的快捷键,一个没留,如果只是想禁用某个快捷键的话,可以参考这个页面的方法。想在 Wikipedia 里面而不是自己的 MediaWiki 系统里禁用快捷键的同学也请参考这个页面。

在尝试的过程中,我感觉 MediaWiki 的一些设计还是有可取之处的。比如这个添加自定义脚本,我一开始想的是 SSH 到服务器上去修改某个 .js 文件,但一直也没找到这个 Common.js 文件在什么地方。后来看看它其实就像一个 wiki 页面,所以我才猜到可能就是直接编辑这个 wiki 页面添加脚本的代码。我还去参考了一下中文维基百科上面的相关页面,他们也确实是在里面直接添加脚本代码的,我这才放心的在自己的 wiki 页面里面添加代码。这样的方式让日常维护操作更加方便,而且这些设定就直接当作普通的 wiki 页面被保存在数据库里面了,备份起来也方便。把所有的设定都视为可编辑的文件,大有 UNIX、Emacs 这样的“化繁为简”的风范啊。

发表评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据