2012年7月31日星期二

如何干死thinkpad usb keyboard的前进/后退键

把方向键旁边俩键设为浏览器的前进/后退键真是脑残无比的决定,不妨想象一下你在浏览器某页面操作了半天,需要按方向键切输入焦点,然后一个不小心按到了旁边的后退键,然后你的浏览器又没有opera这样的快进/退功能或者页面太多ajax让这个功能失效了,你就哭去吧……

幸好sl400虽然种种不是,键位安排还是靠谱的,那俩键默认是page up/down,而且相对于传统的tp键盘方向键距离home/end十万八千里,sl400的“阉割版”键盘还算把这几个键放得相对靠近。当然为什么来弄我不能把page up/down、home/end放回车键的右边一竖条而非要放到遥远的第7排我是永远无法理解的,就像我无法理解来弄我为什么宁可键盘左右放音箱或者干脆空一大片也不肯加多一个小键盘一样。

外接的usb键盘就没有这么好的事情了,默认就是前进/后退,而且驱动就是一坨屎。以前还提供了设置工具来更改这俩键功能,现在Keyboard Customizer Utility又不更新了(来弄我为啥总喜欢阉割掉为数不多有用的随机软件而非要塞一大堆毫无用处的垃圾进去我也是不能理解的),只好用hoekey搞定:
@LEFT=Keys|\f
@RIGHT=Keys|\g
映射成page up/down

幸好来弄我是发送alt+left/right而不是直接发送166/167的key code,要不然我还真不知道怎么在不废掉鼠标的前进后退键的情况下搞定这俩按键。

[update]
再研究了一下tp usb kb的功能键,差不多能猜到之前说的驱动会导致输入产生巨大的dpc延迟的原因了。有很多功能键发送的都是按键序列,比如麦克风静音就是F1+num8,增加屏幕亮度就是keycode 172+space,thinkvantage是keycode 240+space。然后我猜那个所谓的驱动的处理呢,就是去截获全部键盘输入,然后等待下一个keycode送进来,如果符合组合键的情况就执行某种动作,如果不符合,就原样送出去。这就导致一个问题,就是正常的单个按键事件也会被截获,然后如果没有下一个keycode进来,就得有办法判定是单个按键而不继续等待下一个keycode,然后送出去。最简单粗暴的方式就是设置一个超时时间,当接收到第一个keycode时,如果超过超时时间还没有收到下一个keycode,就送出,否则按照序列处理。而dpc延迟就来自于这个超时。

如果驱动真是这样处理的话,我只能说,来弄我你赢了。既然做了驱动,那我想不出你送出一个自定义的keycode给驱动去处理有什么障碍(就像罗技的键盘做的那样),反正没有驱动的时候不管你是送出一个常规keycode组成的序列,还是一个自定义的keycode,系统都是处理不了的。

我总觉得,来弄我你除了大把花钱去搞市场和养闲人以外,是不是能稍微抽出点钱,招几个合格的程序员呢?

2012年7月25日星期三

伟大的墙终于把触手伸到了ipv6了么?

大概是今天开始的,www.youtube.com打不开了,看了一下,居然是connection reset,想想不可能啊,我走的是ipv6,ipv6管不到的地方我走vpn
于是试了下facebook和twitter,都被reset了
再换ipv4的解析走vpn,好了
ipv6走https也是妥妥的
世上最可怕的的事情莫过于流氓懂技术了……

R.I.P ipv6……

2012年7月23日星期一

w3c widget 之华而不实的 preference 标签

乍一看preference可以省去很多初始化选项的工作,但是真是这样么?事实上将配置文件中的<preference>指定的参数复制到widget.preference中去只发生在widget初始安装的时候,也就是说,如果你升级了你的widget,然后打算在<preference>里面加那么几个新参数,bingo,你死定了,所有新参数都不会被初始化,如果你的代码里面有所有参数都不是undefined这样的假定的话,出错就是必然的。

所以最后你还是得老老实实在index.html里面把所有参数都验证并且初始化一遍,这样每次你的widget被reload(比如升级、禁用又开启、reload等等)时所有参数都会被检查一遍,于是在config.xml写一遍<preference>就变成毫无意义的工作。

2012年7月19日星期四

x264挺好的

dvd decrypter+staxrip,ivtc、无crop/resize、x264 animationhq+slower 1 pass没有微调、aac~96kbps、mkv,25分钟一集的dvd动画压出来大概是150MB左右,基本和网上流传的rmvb体积差不多,但是画质上来说就非常接近dvd的品质,比300MB左右的xvid avi看上去还略好一些(颜色过渡方面几乎不会出现梯田,但是xvid就很难避免)和rmvb版本比还是拉开了很大差距的,当然很大原因是压rmvb的基本都是二道贩子拿别人压过的再来压一遍。

另外ivtc真的很烦,在一些动作很小的场景,比如只有动嘴的,还是挑不到正确的帧,哎,眼不见为净好了……

2012年7月13日星期五

再见夕阳

虽说人生就是和一群人聚了又散,又和另一群人如此反复,这个道理我很早就明了,但是每次的别离和重逢,依然让人感伤。

2012年7月12日星期四

宫崎骏的动画一般来说都是蛮正常向的,但是最近几部来说慢慢的都有些不正常了,比如借东西的小人阿莉埃蒂中的男主我就觉得很变态,然后悬崖上的金鱼公主整部片子都很变态。
啥时候再会有像天空之城那样的让人既激动又感动的片子呢?

2012年7月10日星期二

尝试了一下Sublime Text 2

我也俗气了一把。

这货算是一个矛盾的结合体吧。一方面来说对东亚语言的支持简直惨绝人寰,gbk、big5、shift-jis等等的代码页统统不支持,插件能做的也仅仅是识别编码并且转换为utf-8来给st2处理;对ime的消息也完全没有处理,虽然能打字,但是光标跟随是没有的。另一方面来说,这货在处理某些问题上又是惊人的简洁,比如设置普通文本文档字体为雅黑9号上下行距为1而代码字体为consolas 10号上下行距为2,想当初某骆驼在npp上折腾这个可算是花了不少功夫。

快捷命令什么的和vim有几分神似,但是对于我等记忆力较差的人来说,又更为友好一些。内置的python环境也还不错。语法高亮也比Scintilla系略好一点点,虽然还是没法和idea那种字串里面嵌sql都能识别的狠货比,不过启动速度这个二者就不在一个数量级上。

先留着看看吧。

[update]
用了一段时间,比较烦人的地方有这么几个:1)自动补全代码片段(for, while, etc)时会进入multi edit状态,但是经常会导致不属于该代码片段的代码也被覆写了 2)自动补全括号经常做画蛇添足的事情或者擅自删除有半边的括号 3)在tab缩进的代码中,拷贝进空格缩进的代码片段,然后shift+tab时不会将空格改为tab,非要shift+tab搞掉所有缩进再全部手工缩一遍才行

2012年7月8日星期日

批量wmv remux到mkv

[update] 某猴子写了一个可以命令行调用的工具,犯不着和graphstudio较劲了
http://otnth.blogspot.com/2012/08/wmv2mkv.html

2012年7月5日星期四

小资情调反人类

没有出现轮子掉出去砸死马修的事故,也许F1永远不会想到开放轮圈是这么危险。之前有了马萨,这次又是马鲁西亚的女车手右眼报销了,什么时候才会有封闭座舱呢?
反对封闭轮圈和封闭座舱的人,和之前反对HANS的人一样,给出来的理由都是那么苍白,无非就是说有了这些东西那么F1还是F1么。小资情调和生命安全孰轻孰重一目了然,但是在F1这样的奇葩的领域,正常的逻辑都不好使了……
类似的事情还有赛中加油,依然还是有一帮人哭着喊着回复赛中加油,比赛安全相比之下就这么不重要么?