一些增加生活质量的, 软件层面的硬件使用:
CapsLock是个大bug, 十分不常用(其实是完全可以不用), 但占了一块好位置, 还比别的键大, 简直不能忍.
尽管BIOS里能将Left Ctrl与Fn互换,
如果能把CapsLock映射到Ctrl的话, 对生活质量仍然是有极大提高的, 毕竟Ctrl太常用了, 对不写代码的人也是一样(但是不写代码的人不用Linux吧..).
我们可以用xmodmap
工具来实现这一点.
xmodmap是用于在X中改变keymap的工具. 它有一个丑陋的图形化前端xkeycaps, 但是由于过于丑陋了所以还是用命令行好了.
利用xmodmap -pke
命令可以查看当前的键盘映射表, 输出大概会长这个样子:
xmodmap的映射语法是, "keycode x = y"或"keysym x = y", 将左边的keycode或keysym映射成右边的.
另外, shift, capslock, control, alt等modifier以group的形式被接受, 可以用add/remove命令添加新的键.
在X启动时xmodmap会自动~/.Xmodmap
文件, 因此可以在此文件中写入如下几行:
不过说不准有时候还要用CapsLock, 比如CapsLock在执行map之前已经被打开了就麻烦了.. 所以我把完全不会用到的PrintScreen映射到了CapsLock上.
上张照片以便更好理解:
另外, ThinkPadT420上, 方向键旁边有两个奇怪的键, 在windows中貌似是前进/后退..由于T420的 PageUp/PageDown在右上角最偏远的地方, 因此我把这两个没用的键map到了PageUp/PageDown上.
keycode的获取可以通过xev
命令: 它会打开一个小窗口, 捕捉X event, 在其窗口中按键能在命令行看到这样的输出:
这样就能找到一个键对应的keycode, keysym了.
对于vimer来说, 还有一个严重的历史问题: 在vim出现的时候, 那时的键盘上的Esc大约在Tab的位置, 而如今大多数电脑上Esc都离手很远, 因此不方便在vim中切换 normal 模式.
这个问题当然有不少解决方案, 例如vim中将其他键映射成Esc, 我的vim配置中就有几个这样的map.
一个全局的解决方案是: 充分剥削CapsLock(也即现在的Control)作为modifier的剩余价值, 因为它的位置实在太好了.
xcape就是这样的一个小工具.
xcape -e "Control_L=Escape"
命令可以使得短按Left Control或CapsLock时产生一个Esc事件,
而与其他键组合使用时行为正常.
xset
工具可以调整按住一个键时, 键盘事件的触发频率, 也即让键盘更灵了.
另外还有一些vim插件可以实现键盘加速,
这些我在Work Faster 中都提到过.
我的TouchPad在一次进水之后就出了奇怪的问题: 偶尔会触发一个鼠标持续按下的事件. 这对电脑的正常使用显然有很大影响.
我最初的解决方案是把TouchPad完全禁用掉, 只用joystick(触摸区域上面的按键属于joystick, 下面的属于TouchPad, 功能冗余了):
当然这样太暴力了, 而且joystick小红点的鼠标移动还是没有TouchPad方便. 希望的解决方案是, 只禁用它发出的按键事件, 而保留移动功能.
首先观察设备的状态:
输出里可以看到若干个button和valuator, button是布尔值, valuator是个数值, 它们表达了TouchPad的当前状态. 我发现当我的设备异常时, 2,3号button可能会出现持续按下(状态为down)的情况, 而TouchPad上的左右两个键都会导致1号button被触发. 因此我可以禁用2号和3号button:
这样做了之后相当于我只损失了右键的功能(也包括触摸屏上双指同时按触发的右键), 用joystick代替就好, 损失并不大.
Linux对我的笔记本上的指纹装置(位于图上方向键下方)有很好的支持,安装fprintd之后直接就可以使用.
通过fprintd-enroll
进行注册, fprintd-verify
进行验证.
如果仅仅将指纹用于登陆实在是太鸡肋了, 而且恐怕我的登陆管理器(slim)也未必支持.
但是在Linux里一遍遍的敲sudo密码想必让很多人头疼, 尤其是在一些特殊情况下(键盘不好、 周围有人等).
要更改sudo验证方式, 可以在配好fprintd之后编辑/etc/pam.d/sudo
, 将其改成如下内容:
这样sudo的时候, 会先扫指纹, 失败或超时了再敲密码. 摆脱了快要敲烦了的密码, 而且可以在命令行狂敲不止时获得短暂的休息.
这样的一个损失是, ssh的话无法扫指纹,sudo会先失败一下. 不过反正我几乎不会ssh到自己的电脑上.
以前通过设定governer来调整频率:
但是最近发现即使是powersave模式, CPU频率还是挺高. 为了断电后能够用的久一点, 可以直接调整最大频率:
可以通过/proc/acpi/ibm/
下的文件直接控制喇叭, 键盘灯, 风扇等硬件.
其中风扇支持如下操作:
可以通过sudo bash -c 'echo 3 > fan'
来设置风扇转速为3级. 默认是auto.
对auto的设置不满意时, 可以利用这个文件来自己控制, 或者使用thinkfan工具. 比如我的风扇常常在温度不高时也转的很快, thinkfan可以指定温度在某区间内时所使用的风扇转速等级.