自制快速调节鼠标灵敏度的小玩意——SimpMouse

simpmouse_pic

介绍:

这是我最近弄的小玩意,可以识别连接的鼠标,并分别调节每个鼠标的“减速系数”(Constant Deceleration)。

代码托管在Github上:
https://github.com/ukyoi/simpmouse (点此进入项目页面)
欢迎fork和贡献(虽然我觉得应该没什么人fork)。

功能上,选中要调节的鼠标,然后拖动滑杆或输入数值,就可以改变鼠标灵敏度。由于减速系数取值是1到正无穷(应该是正无穷吧……),所以滑杆那里我取了个倒数,左端对应数值为16。直接输入的话则可以接受任何有效的数值。

另外,虽然有Refresh、Apply和Cancel三个按钮,不过这些都是半年前构想中的功能,现在统统用不了,当然更无什么记忆功能。总之只是个很简陋的半成品。

主要用到的东西:Qt做界面、C++、Qt做基本功能(使用qmake进行构建)。
通过运行 xinput list 和 xinput list-props 获取鼠标信息,并用 xinput set-prop 写入Constant Deceleration数值。

关于这个程序的一些废话:

最初想法源于半年前跟人联网用wine玩星际。KDE的鼠标调节功能比较残,指针加速那里即使调到最低,我的鼠标也还是太灵敏(xfce的鼠标调节就很好,可以每个鼠标独立调整,项目也多)。网上查到用xinput可以对鼠标行为进行精细调节,我就打算写个方便的图形工具来用。结果一下拖到现在,星际自然是早就不打了,程序也变成了练手(自娱自乐)之作。至于程序名……由于这个程序对多数人来说实在是没啥大用,请原谅我没在上面花什么心思。

我本以为如此小程序,不会有什么代码量,然而最终代码量却出乎我的意料。当然回报也是有的,我的最大收获大概在于对如何组织程序的结构有了一些经验。我之前只是看过一些编程语言的教材和简单的算法,而对哪怕一个很小的程序应该如何设计和组织则全无经验。通过边写这个程序边进行重构,我对代码该怎么划分、怎么组织都有了一些粗浅的了解。虽然程序本身很小,但我自认为带来的收获还是可观的吧。

最近的事

其实私本来早就想写一些什么了,但是由于最近的事情实在是多了些,实在很难挤出些时间码这些字。当然其实这只是私给自己犯懒找些借口而已。

也许是这几天压力确实大了些(说实话私真的想不出别的解释,因为私最近还是很关注自己的健康的),前天嗓子开始不适,昨日发展成疼痛,今天貌似疼痛有所减轻,但病灶转移,上午开始流涕,下午便已经开始发烧了。借同学的体温表量了量,37.4摄氏度,不算高。服用两片维C银翘,现在还不算很难受。

下面开始正题……

//

今日看到KDE 4.7 beta已经出了……很多激动人心的特性啊,当然不满意的地方总是有的,比如文件夹图标。总之现在正在更新中,希望打包不要有什么问题才好。

//

前一阵子看到方校长被砸中了。虽然私从情感上觉得很过瘾,但对方校长,对此事还需要冷静地看待。墙确实是越来越高,开放的互联网离我们似乎也越来越远,然而至少互联网还在中国这篇常被割草机推过的土地上艰难生长着。私不知如果墙是不可实现的,官方会不会真的做出拔线这种蠢行为。无论拔线这一行为有多蠢,按照我朝屁民们的生活哲学,这网断个十年八年绝不是什么问题。从方校长自己的角度说,假如上头有了建墙的决策而方校长却不肯合作会怎样?
当然私并不是在说方校长这样做就是正义的。然而即便贵为哈工大、北邮的校长,也不过是个凡人。凡人必须确保自己生存下去,才可能拯救别人。当然说他害了别人,这也不错。但如果他不害别人,也许会有更厉害的人来害。
而对于事件本身。短事件内墙肯定会因此继续提高(事实也确实如此),然而也许能够引起更多人的重视,从长远来看还是很有利的。

//

冷落编程很久之后,私终于又开始继续C语言的学习之路了。其实以前所谓的“没时间”、“记不住”都是些借口而已。有事件用来上推、浏览网站,自然也有事件仔细地看看书,码码字。
至于那个“理发店会员卡管理程序”,暂时的想法是用C重写,并且把“理发店”三个字去掉(因为实在没什么意义)。现在写了一些框架(例如对这小程序其实毫无必要的makefile、头文件),但在搞懂fopen、fwrite这些函数之前还有些重要内容要学习,所以暂时还不能写关键部分。大概要想实现好主要功能至少要等放假了。
为何要用C写呢?主要原因是不再需要一套Python才能运行,因此无论在Linux上还是Win上都可以一键运行了,当然也不必关心Python不同版本语法不同的问题。当然问题也是很多的,代码要重写,跨平台的时候代码要修改,Win下可能还有汉字编码问题,等等……

//

私曾撰过关于兔子的文章,那兔子其实是同楼基础医学系的同学养的。据说一直就吃百家饭,最近又跑到我们这里来了。

//

别的暂时想不起来了,就写到这里吧。

Ubuntu 11.04 Release Party

由于谷歌地图给的车站位置不是很准,所以迟到了若干分钟。具体的困难就不说了……

算了还是说一说吧……首先我参考了两条路线,但是谷歌地图给的位置不准,于是乎只找到了一条线的站牌。由于和同学一道吃饭,吃完饭就点晚了,本来就很着急,结果等车时我眼睁睁地看着三辆我没找到站牌的那路车先后驶过,自己要等的不见一辆。我寻思这样不行,得找到那一路公交车的站牌。就在我走了一站地之后,我刚才一直在等的车出现了……

不过到得还不算太晚,看到了计算机科学屠戮者大神。让人觉得幸运又诡异的是第一排居然还有座,于是我当仁不让……

下面开始记录内容:

第一位基本没听到,听到的主要是他没少黑Unity——其实不算黑,因为本来Unity问题就很多——此外貌似他也不咋喜欢Gnome3,至少不喜欢现在的Gnome3。并且一定不认为“用户的言论毫不足虑”。大概是因为讲得不是很有趣,底下非常非常乱……但其实我觉得内容倒还有点意思。

第二位是苏大神的“一个菜鸟的爬行轨迹”,从他的演讲内容来看显然不是个菜鸟,因为他居然曾经直接把OpenFetion的代码翻出来然后“翻译”了。讲的内容主要是跟他相关的翻译问题。吐槽点甚多,而且居然好多我都知道……另外貌似这是“山东口音”?

第三位……嗯……首先更正一下上文的一处。事实是除了苏神那个充满山东腔的演讲不是很混乱以外,后面的演讲都很混乱,甚至包括人都走了一大半的下半场报告。第三位是叫做Levin的研究生(大神?),OpenFetion的发起人,很让人无语的是演示居然是全英文的(当然是用汉语讲的),而更让人无语的是苏神吐槽的时候就提到OpenFetion把汉字直接写进代码以至于给本地化带来了大量问题……
主要讲了他自己开发OpenFetion的过程,以及OpenFetion的一些技术细节。OpenFetion居然是用反编译得到的飞信协议的代码,不知道中国移动会不会告他……

第四位……计算机科学屠戮者大神……KDE4.6终于上场了……一开始居然让我们看到了启动列表……乃居然没在本地装kubuntu……
演示居然也用的英文(难道这是当今的趋势?)……不过显然要好看得多,因为图多,当然更重要因为KDE4漂亮……也许更重要的是有魔法少女小圆的壁纸?让我很搞不懂的是大家为啥对ACG如此敏感……当然也有人对屏幕右下角的照片很敏感。
首先浏览了KDE的历史……我是从4.2开始用的,看着很有一种熟悉的感觉啊……从休息时候的聊天来说貌似还算卖成功了。不过我个人认为从讲解的过程来说基本还是幻灯较多,实际演示较少……并且最后把KDE弄成类Unity界面的时候因为屏幕显示的原因,左面一列没有显示出来。其实KDE的效果应该用更多动态的效果来展示……当然还有krunner这样低调绽放(quietly brilliant)的组件……
当然我个人觉得最后这演讲是整个release party里面最好玩的。和第一个讲Unity的对比来看算是丰富得多了。因为Unity本身也没什么可讲的。而KDE众多的功能、软件绝对不是一时半刻能说完的。

课间休息……

下半场……貌似主题是Bug回报。一个是讲了一些中文ubuntu的问题,一个是怂恿人们积极、高水平地回报Bug,甚至还给我们演示了一下如何用调试代码来查kernel的Bug,不过我怀疑此人逻辑有点问题,前面说报Bug态度不能太差,后面又说在邮件列表舌战很有趣……

//

最后……其实我的化学书还没啃完,英语网测还有好多没做,英语单词还没背。不过有这样一个参加的机会实在是很难得啊,于是乎还是来了。怎么说呢……算是不虚此行吧,至少还索取了个10.04(居然不是11.04)的光盘呢……

[翻译]KDE幕后——Nuno Pinheiro

原文是KDE官方对Nuno的一篇采访。私翻译后发到了ikde。ikde规则中有一句说如果没有特殊情况,就表示遵从CC-by-SA 2.5,所以转到这里也应该没啥问题了……

译者的话:
记得当初开始用KDE的时候(4.2,那时Air和Oxygen已经释出)就被其出色的美工所吸引。后来知道了Oxygen图标的作者叫Nuno,就一直相当崇拜此人。无意间在KDE主页上看到了Nuno的采访,看过后决定翻译出来放到本站。但由于本人E文功力实在太低,不少地方都是连蒙带猜翻译的,可能会有许多错误,望读者莫怪、高手指正。

原文链接:单击这里进入原文

正文:

KDE幕后——Nuno Pinheiro

Nuno Marco Fernandes Pinheiro,他也称自己为图标和图形界面设计师、Oxygen主题协调人,KDE成员,自由战士,丈夫和追梦人(译者:dreamer,原谅我用了这个翻译,因为它音律上太匹配了)。

那么,Nuno,在您的工作和个人生活中,我提到的这些角色中哪些是最重要的,为什么?

这个……应该是追梦人,其实很难说您提到的哪个是最重要的,甚至可能扮演更多角色。做设计是一种奇异的融合。如果要我罗列要素的话,技术知识,许多日常产生想法会受到现实限制(译者:此处翻译可能有问题,盼高手指正);明白现实情况、基本的技术细节、屏幕工作的方式或是干脆问别人一些问题;实用主义,你今天要做今天能做的事情,你要努力让明天能做今天不能做的事情,让大家明白今天的局限,可能使将来不存在这种局限;梦想,我试着通过我的工作激励人们,设计许多价值观,并且我认为梦想对于为设计注入例如希望、爱和自由这样的积极的价值观是必不可少的(译者:此处可能也有问题)。

KDE SC 4.5已经发布。能对我们说一些其中您最得意的工作吗?

这个问题回答起来比较困难。我总是想做一些小玩意儿,或称图标 🙂 ,不过在干活的时候我发现最终需要设计的是KDE程序或段(segment)的工作,这就要求我去做其他的东西。即使到了本周末的时候我也不知道下周一会做些什么。 🙂 在Qt主题Oxygen上我确实做了不少工作,并且是许多,我是说许多工作。其中最好的部分是些隐蔽的地方,比如把元件移动一个像素,让Oxygen的内阴影和发光变得真实且能和不同内容相搭配。图标的工作还在继续——我已经不知道做了多少。 🙂 还有大量Plasma方面的工作。

要说我最得意的……可能并不局限于4.5,而是在项目上一路走来,比如Oxygen为社区所体验。如今设计者所看重的是整个KDE社区前进的过程,而不是最终的结果。

KDE未来之路会如何?我们会在体验初期版本的一系列新特性之后迎来一个稳定期吗?

其实,我来回答这些问题并不合适,这些未来方针之类的问题最好在一个满是KDE工作者们的会议室里提出来。令人惊奇的是不知为何,大家在一起工作得很和谐。这是一个巨大的社区——如今很多KDE的次级小组(sub-group)已经比1.x时代庞大得多了。我认为我们必须重点关注“精致”,这意味着代码的精致,程序互动与整合方面的精致,当然还有设计上的精致。从我个人来看我希望继续雕琢Oxygen的方方面面并且开始与个别程序,比如说Konqueror和k3b等的开发相协调。我也希望我能为Kontact做些工作。我们的资源是有限的,所以我们需要在某一时段做某一件事。4.6发布的时候大家会看到一套新的KDE壁纸(译者:Horos?)。我希望我们还能搞出一个新的KDM主题和飞溅动画(splash screen),并且新壁纸也通常会给KDE官网来一个小小的改造 🙂 。所以没错,我们有好多工作呢。

您为KDE做些什么?除了做图标之外,您还有什么任务呢?

眼下我正在为Oxygen项目做些协调工作,为其方方面面做着努力,通过协调使最终的效果和谐统一。我也在尝试去营造一种友善的氛围,为开发者的心态和设计者的思考方式之间架起桥梁。

您为KDE打工有报酬吗?如果有,能否告诉我们谁是您的雇主?

我为KDAB(Klarälvdalens Datakonsult AB)工作。有时候有报酬,那就是当我有机会在日常工作时间做一些Kontact相关内容的时候。比如最近我在Kontact移动接口(mobile port)方面做了不少工作。KDAB也资助我的Akademy之旅,很不错 🙂 ,而最大的报偿是我有机会和许多KDE盟友和几位最好的Qt黑客共同工作 🙂 。

好。那么让我们聊聊您的设计工具。

当我第一眼看到Oxygen图标的时候我想:“他肯定用了Adobe Illustrator”。告诉我们的读者您在设计时都用什么程序?

首先,最重要的是想象力 😀 ,很多时候我整天都在想如何去做一个图标,既包括技术层面又包括内涵层面。然后有时我会在纸上按照创意画个草图来试验一下。最后我转到Inkscape上然后实现它。我不时也会用许多其他工具,比如Blender(3D透视研究)、GIMP(绘制矢量和点阵图)、Ksnapshot(做些测试)以及许多许多一时想不起来的工具。 😀

那么Karbon呢?还不够成熟吗?

是的。它需要更多的开发者。可惜了啊,其实我真的很喜欢它的界面并且它很有潜力。 🙂

有的人感到很不满,因为在Ubuntu的新设计中使用了私有软件。您对此事怎么看?

真的吗? 🙂 我毫不在意,只要软件管用就行。我在用开源工具,但我并不想把它强加于人。随着KDE4.0发布出现的Oxygen带来了清新的气息,我们聊聊它吧。

整个小组中有多少人?

那得看情况。图标方面最近来说只有我,窗口风格方面有Hugo完成所有的代码工作,另外一个Nuno(Povoa)做些音效(顺便说,在弄一个新的呢),我们还有许多人在搞一些细节上的东西(这很重要)。这是个疯狂的班子,我们在一起很开心。

据说您在KMail的图标上花了大约5小时。您做一个图标大概要用多长时间?

那更得看情况。许多动作的图标能在20分钟内完成,但是程序图标可能要用8小时甚至更长时间。很难量化一个具体时间,特别是一个图标我可能会花上几周去琢磨,却用几分钟把它做出来。比如说一个Zanshin(一个KDE任务管理程序)的图标我考虑了很久,然后我有了一个不错的实现方法,但我草稿中的某一元素总是不完美,我暂时还没有移除它,不过未来我可能还会……不好说。

那么灵感方面呢?您是如何获得灵感的?

这个……这大概是最艰难的部分,而且还不止是灵感,还要考虑市场。很多图标同时也是软件的徽标(logo)。它们需要传递许多信息,还不能混乱。所以的确,我有时会花费大量时间来考虑图标,关注程序如何解决问题,向开发者咨询软件的核心价值等等。有时候一个灵感也没有。有时候人们会提出一个方案建议。只要最后工程完成我就会很高兴。 🙂

假如我要做像您做的那么好的图标,我需要多长时间来达到这样完美的程度?三个月?半年?一年还是两年?

看情况。首先,技术是很重要的,了解真实的艺术加工的一些基本技巧会很有帮助(比如基本的绘画、素描);其次您需要有基本的绘画技巧,特别是画矢量图;您还需要学习一些关于图标的知识(这是个慢功夫,我还在学)。根据我个人的经验,如果您会使用矢量图程序,图标制作方面入门大概一到两年就足够了。

最近您展示了许多金融方面的图标。能告诉我们它们是为哪个程序设计的吗?

不能说太多。 🙂 我只是做图标,程序开发者给我罗列了一些程序的行为(action),于是我就开始做了。如果我对某个行为有疑问的话就会去找开发者咨询,这样他可以帮助我更好地理解。我做好一个之后会给他看,如果我们都满意的话就开始做下一个。

我的新想法是未来更关注我做过的图标和界面改造。不幸的是我还有超过一千个图标需要完成并且几乎没有空闲时间。我无法完成它。我很想去完成,但……

另一话题:一些个人问题

您在闲暇时间都做些什么呢?

开源。 🙂 我也喜欢去电影院,和内人一道享受时光。我还想去旅行,了解更多的地方,结识更多的人。

我们都很好奇您使用哪个发行版,能说说吗?

当然。我使用Mandriva,一直都是(从redhat 5.1开始),但我喜欢一切有KDE的发行版 🙂 ,我喜欢他们蓬勃发展。想想我们是共同成长的,对Kubuntu有好处的也会对OpenSUSE有好处。这是一个为同一目标而共同努力的事情。在不同的发行版之间,我所见的99%都是共同的……当然最终还会有不同的。但你必须承认这些不同!

在整个KDE访谈和作为管理者的时候您说要把您想象得“邪恶”一点。(译者:好吧我承认这里我自己翻译的内容自己都看不懂。)告诉我们的读者是怎么个邪恶法?

呵呵呵……有很多邪恶的小方法…… 🙂 例如说掌控一个让大家走在一起的计划,像Oxygen之类的。

KDE4.6RC1 最大FPS限制

从Arch的论坛上转来的。

About (3):

There was a change in behaviour of KWin. It is actually limited at 35 FPS by default if VSync is enabled. This reduces cpu load by KWin, at least on my lappy. I suppose that if someone hasn’t got KWin Vsync enabled he wouldn’t notice.

If you want a smoother KWin just add the following line in ~/.kde4/share/config/kwinrc under the [Compositing] Section

MaxFPS=60

Or the value that works best for you. For less tearing it should be the same with your monitor’s Refresh Rate.

I can also say that the double entries problem when HAL is running is gone thanks to the packaging efforts of bash. And my screen backlight is working great now, even hardware backlight keys work as expected so most laptops should be fine (these changes were backported by bash before).

就是这样……不过为啥我关闭了垂直同步也会卡在35fps?

信手闲话:最近的生活/I, KDE/HTC Hero/phonon后端

好久没更新网志了……因为最近还是比较忙的。除了考前老师比较慌张(因为讲不完课)之外,私还得被医预那帮行政老师(这个词好,嗯……)玩弄于股掌之间。他们一边说着“课余生活不要耽误了学习”,一边给我等安排这样那样的鬼扯“风采展示”一类的东西。私又悲催,被团支书卖了,于是就成了现在这样子。本来期中数学就糟糕透顶,本想期末多花点功夫在其上的……

//

前不久CS Slayer仁兄和心之所在仁兄“心血来潮”(此为CS Slayer仁兄原话),成立了个专门关注KDE软件/软件集的网站“I, KDE”。特别值得一题的是用的theme,是从CS Slayer仁兄的Air主题脱胎出来的,比他自己网志上用的那个效果更好,只是Banner还相对简陋。私本想给它们做一个新Banner,还想写点贺文之类的,可惜实在时间无多,只得等到假期了。当然可能假期之前他们就会换掉那个。关于文章,私本以为两个人搞的站点不会太频繁地更新,后来发现私过于想当然,该站点更新频率之高着实令人讶异。看来以后看KDE新闻不用去别的地方了……

//

最近得到了HTC Hero。是某个爱捣鼓手机的亲戚给私的(请不要误认为我家很有钱)。记得私有一段时间还很迷恋这款手机来着,虽然HTC又出了不少新机,现在得到Hero也觉得蛮激动。感觉这款手机的系统有些超越了其硬件,虽然操作上还算不错,但看着它跑着还是有点吃力的。让私有点奇怪的是为什么播放音乐的时候再浏览网页就明显更加吃力。难道播放个音乐需要很多硬件资源么?另外据Google的介绍,Android2.3在图形方面会更强,不过私实在不知道装上之后能否跑得动了。总体来讲还是很好。

//

原先私这里的Amarok播放特定音乐总会挂掉,出错提示是段错误(segmentation fault)。以前一直在Amarok上找原因(在私这里Amarok Debug包还找不到,不知道为什么),一直没想过是因为后端。今日听取CS Slayer仁兄的建议,下了个gstreamer后端,把xine换下来,结果居然一切正常了,实在让人很囧……

合理设置KDE触控板,减少延迟

果然如CS Slayer仁兄所说,ATi商业驱动——催化剂10.10版使得2D效能有所提高,现在在我PC(显卡Mobility HD 5650)上窗口缩放、kick-off弹出等都流畅了很多,除了模糊还不敢随便开以外其它特效都状态良好。不过有一点让我不悦的是在KDE下似乎做什么都慢一排,按一个按钮貌似总要“卡”一下才能生效,来得非常不顺畅。以前一直以为是kwin或者催化剂驱动的关系,直到今天才发现原来另有原因。

故事是这样的:

我的笔电是Ideapad Y460,上面有触控板,所以也就好久没接鼠标了。由于今天做某个测试,而且不得不用windows,笔电上的触控板就不是那么得心应手了,于是乎接了鼠标。做完测试之后换到Linux下面玩,突然觉得所有的操作都似乎快了不少。最近又没有更新什么重要的东西,也没调什么设置,怎么会这样呢?最终想到了鼠标头上。鼠标搁一边,重新用触控板,发现果然是触控板的延迟。

打开以前没怎么关注过的触控板选项,发现居然都还是英文的,而且没有帮助文件。于是乎连试带蒙,蒙出了一些设置的意义。

touchpad设置

Max Tap Move:能够识别为拖曳的两次触碰最小距离。如果多次触碰距离太远就不会被识别为拖曳。
Single Tap Timeout:这个是最最重要的……单触碰超时。所有的单击都只有经过这段设置的时间之后(以认定不是双击、拖曳等)才会生效。
Click Time: 单击持续时间。也就是鼠标从“按下”到“弹起”的间隔时间。
Double Tap Time:可能是双击的持续时间,没有详细验证。

因此……导致按键有延迟的罪魁祸首就是Single Tap Timeout和Click Time。 如果想要最小化延迟,Single Tap Timeout应该设置到0,Click Time设置成1。不过如果设置得太小就不会识别出鼠标拖曳,所以对于喜欢用两次触碰代替鼠标拖曳的用户会有不便。我的建议是有经验的用户将其设置成75左右(已经相当快了),新手可以设置到100-125,总之在不影响使用的情况下越小越好。Click Time就无所谓了,一般设个个位数也可以正常使用。

设置了之后果然痛快了很多啊,非常舒畅。

KDE下的network manager

ADSL拨号上网。曾经(kubuntu10.04)好过一阵,升级到10.10后又不行了,不知道是因为啥。

又不太想用GTK下的工具代替,总之左右为难啊……

但是我一直在奇怪啊,难道kubuntu团队从来都不测试ADSL就发布的么?

关于KDE鼠标高级设置中两个不太容易搞明白的概念

曾经见过有人专门开辟一帖解答KDE中让人犯糊涂的概念,不过他本人似乎解释的也不是很好。今天找到KDE帮助中相关的条目,给翻译了一下(貌似中文版KDE在内建帮助中已经翻译了,不过把它抠出来不容易,还是翻译了一下),贴在这里。其实这几个概念容易弄混的原因主要是翻译得不理想(特别是对对Windows鼠标设置比较了解的人来说)。比如“指针加速”,如果翻译成“指针倍速”就比较容易理解了忠不忠于原文其实无所谓……

//

指针加速

该设置允许您改变屏幕上鼠标指针和真实输入设备(可能是鼠标、轨迹球或其他设备)移动距离的关系。高加速倍数会导致指针高速移动(即使您只是小幅移动物理设备)。
提示:在多数系统上,1x到3x运行良好。超过3x可能使得指针不易控制。

指针快速移动阈值
该阈值规定了指针加速开始生效前鼠标指针移动的最小距离。如果鼠标移动距离在该阈值之内,鼠标指针将会按照指针加速设置为1x时的速度移动。由此,当您小幅移动物理设备(如鼠标)时,您仍旧可以精确控制鼠标指针,而大幅度移动设备时则可以让鼠标指针迅速到达新的位置。您可以在框中输入一个数值或点按输入框右侧的上/下按钮设置该值。
提示:通常情况下,指针加速一项设置得越快,指针快速移动阈值应该设置得越高。比如指针加速阈值设为4像素适用于指针加速为2x的情况,但如果是3x的情况,10像素的阈值设置会更好。