!(38)关于触摸板
一直想在插上鼠标的时候把触摸板屏蔽掉,找了好多网页,都是说在xorg.conf里添加参数,把SHMConfig打开,然后就可以用 synaptics的命令行控制了,可是我的conf文件里压根就没有那几个组别,继续查,貌似很多人情况跟我类似,我就不明白了,难道我们装的不是一个东西么?一开始觉得是驱动没装对,GSynaptics装删好几遍,每次都是因为SHMConfig没有打开而报错,直接往xorg.conf(这个文件最好不要动,改错了,就进不去 X Windows了~~)里写参数,也不行,难道没办法了么?之后发现了tpconfig,这个东西的说明里包含了Synaptics的一些条目,以为有用,就装上了,结果,连怎么用都没搞明白,后来在它的官网上知道了用法,在他的/usr/bin/tpconfig 里,添加option="--tapmode=0"这条来控制触摸板的开关(大概是,我也没试试),但是他的说明说,This also means that you cannot use tpconfig while X Windows is running.看来是没用的,所以,卸掉了。
最后,终于搞明白了,GSynaptics只是一个配置界面~~不是驱动,驱动的话,系统已经给我装上了,也确实是装的Synaptics,问题最后变成了,GSynaptics是因为SHMConfig没法加载,所以不能启动,(其实我的触摸板现在已经可以控制了,用fn+f6的默认方式就可以开关,只是我想像winxp里那样,插上鼠标自动屏蔽触摸板,虽然最后只实现了一半,呵呵,但是我知道了SHMConfig怎么打开,然后用命令的方式控制触摸板)找阿,找阿,终于找到了解决办法:
从 xorg 1.4开始 xorg server就支持 Input hotplug了,所以新版的ubuntu就通过默认的HAL自动配置可以识别的输入设备。因此,我们的xorg.conf就变成了只有几项的简化版,input的组项也不在这里边配置了,那在哪里呢?
默认的HAL配置文件有如下的配置:
代码: 全选
$cat /usr/share/hal/fdi/policy/20thirdparty/11-x11-synaptics.fdi
哈哈,这下明白了,同一个目录下,还有个10-wacom.fdi,从网上看,wacom应该是个手写板的东西吧,所以输入设备都可以通过这种方式打开SHMConfig了,但是,网上说,不能直接修改这个文件,稳妥一点的办法是,另建一个文件,<?xml version="1.0" encoding="ISO-8859-1"?>
<deviceinfo version="0.2">
<device>
<match key="info.capabilities" contains="input.touchpad">
<merge key="input.x11_driver" type="string">synaptics</merge>
<!-- Arbitrary options can be passed to the driver using
the input.x11_options property since xorg-server-1.5. -->
<!-- EXAMPLE:
<merge key="input.x11_options.LeftEdge" type="string">120</merge>
-->
</match>
</device>
代码: 全选
cd /etc/hal/fdi/policy
sudo gedit 10-x11-input.fdi
对照刚才那个文件就明白了,<?xml version="1.0" encoding="ISO-8859-1"?>
<deviceinfo version="0.2">
<device>
<match key="info.capabilities" contains="input.touchpad">
<merge key="input.x11_options.SHMConfig" type="string">on</merge>
</match>
</device>
</deviceinfo>
<device>
<match key="info.capabilities" contains="input.touchpad"> 是说触摸板的特性,
然后加入一个merge,SHMConfig。
好了,保存之后,重新载入 haldaemo 配置即生效,重启 xorg 就可以使用 gsynaptics 配置 Touchpad 了。
http://wiki.archlinux.org/index.php/%E8 ... %E6%96%87)这是官方的一个触摸板配置,很详细。
SHMConfig虽然启动起来了,但是,那个插了鼠标就自动屏蔽触摸板的两条rule,在我的本上不起作用,很失望~~~,rule设置方法是:
sudo sysv-rc-conf 检查一下udev是否启动了~~然后
代码: 全选
sudo gedit /etc/udev/rules.d/01-touchpad.rules
在udev的帮助下,可以实现自动在外部鼠标插入时禁用触摸板。你需要做的是在udev的规则里面添加:
这是官方的写法,网上流传的版本 ID_CLASS=="mouse", 俩我都试了试,好像对我的本都不太起作用~~~ACTION=="add", SUBSYSTEM=="input", ID_CLASS="mouse", RUN+="/usr/bin/synclient TouchpadOff=1"
ACTION=="remove", SUBSYSTEM=="input", ID_CLASS="mouse", RUN+="/usr/bin/synclient TouchpadOff=0"
把上面内容保存到/etc/udev/rules.d/01-touchpad.rules,而且确保共享内存(SHMConfig)打开。--某些本这么做了之后,应该可以用了,可我的还是不行,我猜是因为ID_CLASS写的不对,可是我没找到应该从哪搞出这个参数的,因为我的鼠标在配置文件里是mouse2,别人的配置文件都是mouse0~~
把GSynaptics装回来,现在可以通过它进行一些触摸板的特性设置了。由于没法用那个自动屏蔽的规则了,所以我只好查别的办法了,从网上找到一个办法,用bash脚本~~
脚本这么写:
代码: 全选
#!/bin/bash
/usr/bin/synclient TouchpadOff=`lsusb | grep Mouse | wc -l`
代码: 全选
bash ~/ProgramFiles/disabletouchpad
然后,在首选项-->键盘管理器里,自定义一个快捷键,命令行就是上边那句,比如快捷键设成ctrl+f6
效果就是:每次开机的时候,如果插着鼠标,就禁用触摸板,如果没有鼠标,触摸板照旧~~
我在使用中,发现,有时候,触摸板又偷偷启动了,应该是鼠标的状态被什么改变了吧~~~具体没再深入了,反正是实现了一个半自动化
好了,触摸板就这么搞完了~~虽然只是半自动,哎~~~
如果想要在通知区域增加一个触摸板的图标,可以试试touchfreeze这个小软件,装完之后,再添加到启动项目里去,就可以了~~
!(39)关于s41面板上自带麦克的问题(也许对其他笔记本上自带得麦克使用也有参考)
自从装完系统,我的自带麦克就没工作过,其实没大用过,所以一直没想起来解决,昨天突然想录点东西,所以想起来这个小麦克还不能用呢,解决之~~~
一开始以为驱动没装好,搜了一下,说1.15版得alsa驱动就已经可以兼容大部分intel主板得声卡了,那我的都1.18版了,应该没问题了,难道还要必须升到1.19不成?那个帖子最后说,如果装完声卡驱动只是麦克不好使的话,可能是设置问题,设置问题?难道真实我设置得不对导致麦克不工作么?我记得,声卡得选项就那么几个,早就挨个试过了,难道漏了什么?抱着死马当活马医,医不好就重装驱动得心态,开始了又一次大规模搜索~~~挨个面板得研究
首选项--音效默认混音器轨道里,选hda intel(alsa),我一开始选过我声卡得那个项realtek alc262,可是没调出来,后来把hda那个调了一下后,realtek这个选项里得也能用了,残念~~
然后状态栏里,开音量控制,设备里选hda intel-->首选项,是不是好多框都没选中阿,我就不一一说了,其中front mic就是自带得那个本本麦克,mic呢就是跟耳机一起得那个mic接口~
选中之后,就可以在面板上调整声音大小了,声音大小得竖线下边,有个mic得小图标,默认是带个红叉得,点一下就算把麦克功能打开了.
mic boost是录音得回放,就是你边录音那边就用音箱放出来了,调高了会跟mic起反应,有尖叫声,直接关掉吧,
正在录音那个标签页,我没搞明白啥意思,关不关得都没影响好像
选项那页,input source,选 front mic,让小麦克成为输入源
把音量都调好了,就可以用了~~~.
经过调试,我发现录音的时候,声音得大小,跟正在录音标签页里得,录音,有关系,不要调到最高,杂音很多,85%-90%的位置就可以了.
总之,自己慢慢调吧~~~
加个图片,容易找:

!(40)今天闲来无事,学习了一下键盘映射~~~
xmodmap如果是单个键映射单个键的话还是挺简单的
代码: 全选
xmodmap -e "keycode 115 = exclamdown"
keycode怎么获取,用命令
代码: 全选
xev
76就是f10的code。KeyPress event, serial 35, synthetic NO, window 0x4e00001,
root 0x13c, subw 0x0, time 34923064, (1012,565), root:(1017,618),
state 0x0, keycode 76 (keysym 0xffc7, F10), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
KeyRelease event, serial 35, synthetic NO, window 0x4e00001,
root 0x13c, subw 0x0, time 34923178, (1012,565), root:(1017,618),
state 0x0, keycode 76 (keysym 0xffc7, F10), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
那么那个名字怎么获得,可以猜~~其实就是英语单词~~或者用刚才的命令找个好的键盘测试一下
fn键我不会测试~~按了没反应=,=state 0x0, keycode 21 (keysym 0x3d, equal), same_screen YES,
XLookupString gives 1 bytes: (3d) "="
state 0x1, keycode 50 (keysym 0xffe1, Shift_L), same_screen YES,
state 0x1, keycode 21 (keysym 0x2b, plus), same_screen YES,
XLookupString gives 1 bytes: (2b) "+"
state 0x0, keycode 20 (keysym 0x2d, minus), same_screen YES,
XLookupString gives 1 bytes: (2d) "-"
state 0x1, keycode 20 (keysym 0x5f, underscore), same_screen YES,
XLookupString gives 1 bytes: (5f) "_“
keycode 133 (keysym 0xffeb, Super_L),
比如把f10搞成‘-’加上shift就是'_'
这么写
代码: 全选
xmodmap -e "keycode 75 = minus underscore"
代码: 全选
xmodmap -e "keycode 76 = equal plus"
这个也是可以实现的,但是fn我不知道多少code,可以用win键代替~~主要是Fn+P能正常输出-号,Fn+;能正常输出+号,所以用Fn+Shift+P来映射下划线,用Fn+Shift+;来映射等号
p是33 ‘;‘是47 ";" 是semicolon ":" 是colon
可以注意到,等号后的值都是成对的:p和 P;minus和underscore 等。这一行命令的意思就是,当我们按下字母键 p 的时候,将打出 p;当我们同时按下 shift 和字母键 p 的时候,将出现大写字母 P。那么minus underscore怎么输入呢需要把这个 ISO_Next_Group 加入到一个组合mod里。"keycode 33 = p P minus underscore"
"keycode 47 = semicolon colon equal plus"
终端输入:
代码: 全选
xmodmap -pm
在上面三行里面,clear mod3 将清除 mod3 的内容。keycode 133 = ISO_Next_Group 将我的键盘上左边的 win 键是133,可能跟你们的不一样,最好自己去查对一下,对应到 ISO_Next_Group 上。add mod3 = ISO_Next_Group 将 mod3 对应到 ISO_Next_Group 上,也就是让左边的 win 键具有和 shift 类似的功能,即可以改变键盘的输入状态。好了,把上面所有的内容都写到一个文件里面,比如 ~/.xmodmaprc。内容如下:clear mod3
keycode 133 = ISO_Next_Group
add mod3 = ISO_Next_Group
代码: 全选
clear mod3
keycode 133 = ISO_Next_Group
add mod3 = ISO_Next_Group
keycode 33 = p P minus underscore
keycode 47 = semicolon colon equal plus
然后执行
代码: 全选
xmodmap ~/.xmodmaprc
!(41)2.6.30的内核以及显卡的安装,可以提升系统性能,intel的集成显卡,更是受益,忍不住,我也升级了内核,有惊无险的成功了,就是因为太顺利了,所以基本没什么可以学习的地方~~~
大体讲讲过程吧,其实也挺简单的。
先去
http://kernel.ubuntu.com/~kernel-ppa/mainline/
找2.6.30-rc4文件夹,进去之后,下自己对应的3个包,如果是32bit就下我列的这三个,要是64的,就下amd64结尾的,all是共用的linux-headers-2.6.30-020630rc4_2.6.30-020630rc4_all.deb
linux-headers-2.6.30-020630rc4-generic_2.6.30-020630rc4_i386.deb
linux-image-2.6.30-020630rc4-generic_2.6.30-020630rc4_i386.deb
再去http://www.nvidia.com/Download/index.aspx
找一下自己对应的最新的驱动,我下的是NVIDIA-Linux-x86-180.51-pkg1.run
我是geforce go 8600m显卡
准备好了,开始安装吧,
先去硬件驱动里把显卡驱动remove
再去新力得里把
nvidia-glx-180
nvidia-glx-180-dev
就是库里,最新版本带着180.44的都卸载(我是本本显卡,所以默认最新驱动是180.44)
有一个nvidia-180-modaliases
因为别的版本的像71,173一类的,默认都在,所以这个包我没卸载
卸载完了,
就可以进行装新驱动的步骤了
以headers all,headers i386,image i386的顺序,安装3个deb的包。
因为之前remove了显卡驱动,所以应该不会报编译错误了。
然后切换到命令行模式:
代码: 全选
ctrl+alt+f2
代码: 全选
sudo /etc/init.d/gdm stop
然后运行下好的显卡驱动
代码: 全选
sudo sh ~/NVIDIA-Linux-x86-180.51-pkg1.run
安装过程第一步提示是否卸载旧驱动,选yes,第二步提示说该驱动和内核不配,上网搜新版本,选no,即使选了yes也下不到合适的,要不然还编译什么阿~~~
然后一步是提示the cc version check,意思就是编译需要gcc4.2下进行,而 9.04是4.3的,选no是忽略版本继续,所以选no,
之后会蹦出几个copy不成功的条目,但是看文件名好像都跟180.44有关,具体是啥意思,我没仔细研究,因为之后,使用上是正常的。
然后就顺利的编译成功了,最后会提示,是否运行xorg的自动配置程序,在下次开机的时候自动运行x,选yes,好了,系统跳回命令行,驱动装完了。
在命令行运行:
代码: 全选
sudo /etc/init.d/gdm strat
进去之后awn compiz都正常
然后重启看看,
进入grub菜单的时候,选新建好的30内核,我这里没显示ubuntu的启动画面,代之一些终端启动信息的输出,如果你按照上边的方法把旧驱动清理过了,那开机就不会再去检测180.44版旧驱动了,会节省4,5秒的启动时间哦~
我又进了一下28的内核,能进到终端,但是xwin成了没显卡那种显示状态了,基本被废了。
所以去/boot/menu.lst里把28的启动项删掉了。或者直接把旧的内核文件删掉,那么28就彻底被废了
代码: 全选
sudo aptitude purge ~ilinux-image-.*\(\!`uname -r`\)
之后再手动装回来就可以了
在更新30rc4内核之后,apparmor会启动失败,研究了一下,发现,最新版的apparmor没有针对30内核的补丁出来,针对普通版linux最高到26版,针对ubuntu最高到28版,所以如果想继续使用apparmor恐怕要等几天了。可以考虑先卸载掉apparmor或者换用selinux
代码: 全选
sudo apt-get --purge remove apparmor
关于性能提升,微乎其微,但是还是有点效果的,发俩图,对比一下:关于nvidia卡的两个优化:(尤其是8000,9000系列显卡)
详细的情况可以参考 Nvnews 论坛的帖子:
http://www.nvnews.net/vbulletin/showth ... p?t=115916我的显卡是 8600m,运行上面的命令之后,确实是有点速度提升了,虽然挺微弱的效果,如果对你也有效的话,可以把上面的命令添加到 ~/.xinitrc 中。代码: 全选
nvidia-settings -a InitialPixmapPlacement=2 -a GlyphCache=1
在 xorg.conf 中的 Section "Device" 中加入:然后重启 X代码: 全选
Option "PixmapCacheSize" "300000" Option "OnDemandVBlankInterrupts" "True"
另外一个是解决屏幕不定期闪动的:
具体的请参见:
https://bugs.launchpad.net/ubuntu/+sour ... bug/164589
先用这个命令查看一下nvidia的一个参数,是[/color]nvidia还是nvidia-new代码: 全选
lsmod |grep nvidia
然后写好下面这句如果你的ubuntu比较老,可能会有options nvidia NVreg_RegistryDwords="PerfLevelSrc=0x2222"
/etc/modprobe.d/options and /etc/modprobe.d/nvidia-kernel-nkc
两个文件,把那句加进去就可以了,如果没有nvidia-kernel-nkc 这个文件,写到options里也可以,如果两个文件都没有
那新建一个文件/etc/modprobe.d/nvidia.conf
把那句加进去,保存,重启x,就可以了,这个句话意思大概是禁止N卡自动变频节能的功能。据说会带来稍微的温度上升,不多应该影响不大。
两个条目都修改之后,感觉我的compiz比以前顺畅了许多~~~

这是28的内核+180.44的显卡驱动

这是30的内核+180.51的显卡驱动
平均上升了200fps吧~~~