Linux输入法

十月 8th, 2008

Linux下的输入法有一个XIM框架,X程序通过XIM协议与输入法联系。如用户按下键盘按键后不直接把字符传给X程序,而是输入法程序,输入法处理后再传给X程序。aptitude install scim-pinyin同时安装了scim平台和拼音输入法。接下来就是启动scim和通知x程序使用scim。把这些事情放在一个脚本里面就是:

/usr/bin/scim -d
export  XMODIFIERS=”@im=SCIM”
export GTK_IM_MODULE=scim

XMODIFIERS是X程序用来识别输入法的标记,GTK和QT也有单独的一套。

为了开机自动运行把这个脚本保存为~/.xinput,然后再~/.xinitrc中加一句source ~/.xinput。

如果输入法工作不正常,检查一下

ps aux|grep scim                         scim是否启动。
export |grep XMODIFIERS        XMODIFIERS变量是否正确设置。
locale                                           LC_CTYPE是否设为zh_CN.UTF-8

 

http://www.scim-im.org/projects/imengines
http://code.google.com/p/ibus/wiki/PinYinUserGuideCN
http://sourceforge.net/projects/novel-pinyin/
http://www.opensolaris.org/os/project/input-method/

 

启动X

十月 3rd, 2008

X的启动方法几种
最直接的是运行xinit或xinit firefox,不带参数的话会默认打开一个term,进入这样的X能做的事情很有限(窗口不能移动会互相覆盖),但可以让我们对窗口管理器有一个感性的认识。

startx
在装了某个窗口管理器(如openbox或fluxbox)后,可以用startx命令进入一个带窗口管理功能的X界面。startx是一个在/usr/bin目录下的脚本,它会分别读取用户级和系统级的一些配置,然后用xinit运行X。配置文件有xinitrc,xserverrc,xsession等,一般系统级的配置在/etc/X11目录下,而用户级配置在用户主目录并用.xinitrc的形式命名,原则是用户级配置覆盖系统级配置。
如果系统安装了多个窗口管理器可用startx -m openbox的形式指定,或者在.xinitrc中加一句exec openbox。否则startx会调用/usr/bin/x-window-manager启动默认窗口管理器,它是一个指向/etc/alternatives/x-window-manager的链接,而后者是一个指向真正窗口管理器如/usr/bin/openbox的链接。这个链接通过update-alternative –config x-window-manager维护,但update-alternative是怎样知道系统有多少个窗口管理器呢。
在Debian下用strace -eopen update-alternatives –config x-window-manager监控update-alternatives的文件操作,可以发现它打开了/var/lib/dpkg/alternatives/x-window-manager,这是一个记录了系统安装的窗口管理器的文本文件,估计用Apt安装的窗口管理器都会来这里登记一下。

关于update-alternatives
因为Linux有很多相同功能的软件,alternatives是一个用来统一这些软件的机制,比如我想开一个浏览器只需要运行x-www-browser而不用管系统是装了Firefox还是Opera,alternatives机制会帮我们选择一个可用的。具体实现是在/etc/alternatives/目录创建一些通用的链接,并根据情况指向真实的程序,update-alternatives是Debian用来维护/etc/alternatives/目录下那些链接的Perl程序。如update-alternatives –config x-window-manager用来更新/etc/alternatives/x-window-manager这个链接。

或者还可以安装启动管理器。

启动管理器是一个管理登录的程序,如GNOME用的gdm和KDE用的kdm。用这种方法的话就不需要用户手动输入命令,而是像Windows一样开机后直接得到一个输入帐号密码的登录界面。gdm们获取自动运行机会的方法是把自己加到开机默认运行级别的rc*.d目录。

在VBox窗口的Devices, mount CD, CD image然后选中VBoxGuestAdditions.iso确定。

Debian控制台下:
mkdir /mnt/cd
mount /dev/cdrom /mnt/cd -t iso9660
cd /dev/cdrom
sh VBoxLinuxAdditions-x86.run help
sh VBoxLinuxAdditions-x86.run

之前要安装build-essential和Linux-header文件
aptitude install build-essential
uname -r查看内核版本。
aptitude search linux-header。
安装对应的头文件。

GuestAdditions的一些功能:

  1. 鼠标指针无缝连接,无需按右Ctrl切换。
  2. 更好的显示支持,在用户缩放Vbox窗口的时候自动调整Guest的分辨率来配合缩放。
  3. 共享文件夹。
  4. 共享剪切板。
  5. 以及非常酷的无缝窗口。

共享文件夹访问
net use x: file:///P|/vboxsvr/sharename
mount -t vboxsf sharename /mnt/vb

无缝窗口把程序窗口从虚拟机里分离出来,这样可以把两个系统中的程序窗口统一起来,貌似Wine的完美替换,右Ctrl+L呼出。

另外装上GuestAdditions以后,就不能以Framebuffer方式启动Linux,否则会僵死掉,至少在我的机器上是这样。

控制台下的Linux

十月 1st, 2008

图形界面下面的Linux更易于理解也更接近Linux的本质,而且基本上大部分的事情在startx之前就可以完成了。

控制台下的图像处理如mplayer和fb开头的软件都依赖framebuffer,framebuffer是Linux对显示设备的抽象,设备符号一般为/dev/fb0,可以把它理解为一幅显示到屏幕的图像,用户只要修改这幅图像就能修改显示器的视频显示,比如用dd if=/dev/fb0 of=fb.raw就可以截屏,只是因为生成的是raw图像数据,无法用图像浏览软件直接打开,还需用fbgrab等软件处理一下。而 dd if=fb.raw of=/dev/fb0则可以把之前保存的图像写回显示屏。
Debian默认支持framebuffer,但须手动开启,方法是编辑/boot/grub/menu.lst在kernel那行加上vga=ask或0×343,具体值的设置可先用hwinfo –framebuffer确定。

控制台下的软件:
ftp:lftp
http下载:wget
浏览器:lynx
图片浏览:fbi
截屏:fbgrab
编辑:vi
文件管理:mc
影音:mplayer -vo fbdev
鼠标支持:gpm

lynx
export WWW_HOME=www.google.com设置主页。
方向键操作,d下载选中文件。a书签。g跳转。k显示命令列表。

wget
export http_proxy=”http://proxy.com:8080″设置代理。
wget -r -l2 –accept=bz2,gz http://cross-lfs.org/view/clfs-sysroot/arm/materials/packages.html 下载指定页面两层链接内的所有bz2和gz文件。
wget -rkpN -np -t 5 -T 20 URL 抓全站。

lftp
get ,put, mirror,mirror -r,bookmark。

vi
i,a,o,O进入编辑模式。
r修改一个字符后返回Normal模式,R进入修改模式。
x删除一个字符。
dd删除行。
yyp复制行。

http://www.linuxsir.org/bbs/thread245239.html
http://www.linuxsir.org/bbs/thread199931.html
http://fbsplash.berlios.de/wiki/doku.php

控制台字体

十月 1st, 2008

因为当时X还没有开启,控制台不可能用X核心字体或者xft,而是有自己的一套,一般放在/usr/share/consolefonts下。可以用aptitude install console-terminus安装专门为其准备的console-terminus字体,这是一套适合控制台使用很漂亮的等宽字体。

在使用之前,用unicode_start打开Unicode模式。
whereis unicode_start
vi unicode_start

db_mode -u
dumpkeys | loadkeys –unicode
consolechars –font= –sfm=
echo -n -e ‘33%G’

这个脚本先把键盘置于Unicode模式,然后用consolechars工具接受我们传来的参数设置字体,最后用echo -n -e ‘33%G’命令把控制台置为Unicode模式。

自己设置字体的话,先ls /usr/share/consolefonts浏览字体。
consolechars -f Uni3-TerminusBoldVGA16查看效果。
确定了以后在/etc/console-tools/config中修改SCREEN_FONT为自己指定的字体。
如SCREEN_FONT=Uni3-TerminusBoldVGA16.psf

控制台只能使用这种psf字体,而系统提供的包括安装的Terminus字体中都没有中文字符,所以有Unicode编码的中文名文件时用ls命令查看会是一些小方框。

所以如果想让控制台支持中文显示以及输入,还需要其他更麻烦的步骤,如安装zhcon,然后用zhcon –utf8开启一个新的支持中文的控制台,那样刚才针对fb设置的字体都会无效。
也可以安装unicon,unicon通过修改内核提供中文支持,需要重新编译内核。另外还有fbiterm, jfbterm等。

以繁體中文介面安裝 Debian 時預設會安裝的套件

http://www.turbolinux.com.cn/products/tlw/tlc/node143.html

http://tetralet.luna.com.tw/index.php?op=ViewArticle&articleId=194&blogId=1

Aptitude替换apt-get

十月 1st, 2008

apt-get install aptitude install pkgname 安装软件
apt-get update aptitude update 更新本地软件数据库
apt-get upgrade aptitude upgrade 更新所有软件
apt-get dist-upgrade aptitude dist-upgrade 版本升级
apt-get remove aptitude remove pkgname 卸载软件
apt-get –purge remove aptitude purge pkgname 卸载软件并删除配置
apt-cache search string aptitude search string 搜索软件
apt-cache show pkgname aptitude show pkgname 显示包信息
apt-get clean aptitude clean 删除安装包
apt-get autoclean aptitude autoclean 删除过期的安装包
  aptitude hold pkgname upgrade时不升级

locale设置

九月 30th, 2008

locale -a列出所有locale
Debian可用dpkg-reconfigure locales重新配置locale。
或者手动编辑 /etc/locale.gen(从/usr/share/i18n/SUPPORTED选择想要的locale),然后运行locale-gen。

编辑/etc/defaults/locale设置默认local。

locale变量:
LANG 语言
c程序运行时会依次检查LC_ALL,LC_CTYPE,LANG并使用第一个有效值作为locale并加载相关locale data。
所谓的locale主要就是决定字符的解码方式,以及数字时间货币等每个地区不同的显示方式。

LANG=en_US.UTF-8
en语言,US国家,utf-8编码。en_US.UTF-8和zh_CN.UTF-8的区别,不是说有几种UTF-8,而是前面两个变量的区别。任选一种带UTF-8的locale就可以正常显示中文,只是货币时间等的表示会有不习惯,另外输入法会依赖中文locale。
LC_CTYPE定义字符编码。
LC_COLLATE定义字符串如何排序。
其他的LC_都是自解释的,就不赘述了。
LC_ALL和LANG都可以做LC_*没有设置时的默认值,但LC_*单独设置时只能覆盖LANG加与的默认值,LC_ALL的默认的优先级别最高,一旦设置了LC_ALL其他的设置都会无效。所以一般只设置LANG和LC_CTYPE。
比如LANG=en_US.UTF-8
LC_TYPE=zh_CN.UTF-8这样就可以配一个使用中文的英文环境。

Debian版本升级

九月 29th, 2008

Debian目前的版本:
sid (unstable)
lenny (testing)
etch stable
sarge oldstable

lenny本来据说这个月会成为新的stable,但现在都快十一了还没有动静。当时被名字误导选了stable所以一直在用Etch,因为Debian非常注重软件的稳定性,稳定版Etch里的软件版本都很老,而个人用户完全没有必要那么保守。所以决定不等官方了直接升级到testing。

Linux发行版的版本号其实是很人为的东西,所谓版本最基本的是Linux内核和其他常用软件的版本,Linux各种发行版最多只是软件的组织形式不同,所以只要自己编译了最新的内核,安装了最新的软件,那就是最新的发行版了。

对于Debian来说,要装更新的软件,最直接的方法是自己上软件发布的网站下载源码编译。用APT的话,需要更换apt的源。

Source.list文件中
deb http://some-server/debian etch main
对应的是http://some-server/debian/dists/etch/main/这样的网址,一般这样的网站也会提供http://some-server/debian/dists/lenny/main/这样的地址,所以只需把source.list文件中的etch换成lenny。

然后aptitude update。这样以后装的软件都是lenny下的版本了。

但因为软件的依赖,还需要升级一下各种库,同时也可以升级以前安装的软件。 
aptitude upgrade

aptitude safe-upgrade

如果source.list中同时有etch和lenny可以用
aptitude install nano/lenny选择。
而在 /etc/apt/apt.conf中用,
APT::Default-Release "testing";
APT::Get::Assume-Yes "true";
来设置默认。

升级内核
aptitude search linux-image
找到想要的内核aptitude install之。
reboot。

备注:用apt-get dist-upgrade升级会remove一些程序,推荐aptitude safe-upgrade。
source.list中用testing或stable标记源比etch,lenny这样的版本代号要好一点。

Unicode,CJK与字体

九月 16th, 2008

ASCII编码了英文环境的128个符号,而Unicode则是把这个星球上所有人类使用的符号统一编了一个号,所有人只需使用其中一个子集,中文被包含在其中称为CJK的部分,CJK是中国日本韩国的意思,三国文字中字形相同的汉字编码也是一样的。CJK中的符号又根据常用与否又分为
# CJK Compatibility
# CJK Compatibility Forms
# CJK Compatibility Ideographs
# CJK Compatibility Ideographs Supplement
# CJK Radicals Supplement
# CJK Strokes
# CJK Symbols and Punctuation
# CJK Unified Ideographs
# CJK Unified Ideographs Extension A
# CJK Unified Ideographs Extension B
等几个子集。
其中CJK Unified Ideographs包涵了两万多常用汉字,是中文显示最主要的部分。
可以把Unicode想象成一张大表,在其中放着这个星球上的每一个符号和与之对应32位数字索引,32位索引意味着这张表可以容纳2的32次方也就是40多亿个符号,这基本可以包括任何人脑想象得出来的符号。但直接用这个索引来标明符号的缺点是冗余太大,一个英文字母用ASCII码表示只需8位,但Unicode需要32位。于是就产生了很多编码方式,如UTF8,UTF16等(包括中国的GB18030也最终映射到了Unicode表),编码的宗旨就是给常用的符号分配短一点的码位,不常用的分配长一点的,以减少冗余。
存放在磁盘上的文本文件,都是按照某种方式编码后的数据,要最终把这些文字显示出来,首先要用对应的编码方式解码,找到那个字符在Unicode中的编号,然后显示其对应的图形,这时候就要用到字体文件了,字体文件中保存这符号的图形,因此体积相对会很大,一种字体文件一般不会包含所有的Unicode字符图形,而只是其中针对某一种语言的子集。
http://www.alanwood.net/unicode/unicode_samples.html打开这个网页,显示的方框就是你系统上没有装对应字体的Unicode字符,这个Win平台的小工具可以查看Unicode和字体文件的信息。http://www.babelstone.co.uk/Software/BabelMap.html


如图显示,CJK Unified Ideographs共有20932个符号,微软雅黑字体中包含了其中20909个,比其它字体都要多一些。而CJK Unified Ideographs Extension中6582个稀奇古怪的汉字雅黑也全部把他们实现了,其他字体如宋体却只实现了 52个,至于CJK Strokes则根本没有字体文件实现了其中的符号,所以也不知道它们是什么样的,它们的编号从U+31C0到U+31EF只需16位,还在Unicode中最基本的BMP平面上,据说是为了方便GB18030映射到Unicode引入的。

另外Windows自带了一个charmap程序,可以用来查看字符映射的信息。还可以在记事本中按住Alt+Unicode码输入符号。

Linux控制台下(没有启动X)可用unicode_start开启unicode模式,也可以用Alt+Unicode码输入符号。

E2开发资料

九月 15th, 2008

http://www.linuxdevices.com/articles/AT8243331060.html

http://wiki.openezx.org/Rokr_E2

http://moto4lin.sourceforge.net/wiki/FlashingEZX

http://wiki.openmoko.org/wiki/Main_Page

https://opensource.motorola.com/sf/frs/do/viewSummary/projects.rokre2/frs

https://developer.motorola.com/

交叉编译相关

http://wiki.openezx.org/Crosscompile

https://sourceforge.net/projects/libxze2/

http://kegel.com/crosstool/

http://www.freaknet.org/martin/crosstool/

http://blog.chinaunix.net/u/26710/showart_394113.html

http://cross-lfs.org/view/clfs-sysroot/arm/

xscale-gcc-vfp-3.3.tar.gz

e2资料

SD卡USB2.0支持

130万像素摄像机

2inch ,240X320QVGA,26万色TFT显示屏

调频收音机 无线蓝牙

系统:MontaVista Linux Kernel + Framebuffer + Qte + ezx/Chemalon

Telnet

UsbNet模式连接电脑,装USB Net Drivers 驱动或moto全能驱动包

telnet 192.168.16.2 用root登录。

Linux

modprobe usbnet
modprobe cdc-acm

$ sudo ifconfig usb0 192.168.1.1
$ telnet 192.168.1.2

刷系统

安装RSD lite软件。

下载要刷的系统包,sbx是内核,sbf是图形界面。

关机。按住侧边右上的语音键,同时按下挂机键,进入初级启动界面,稍后片刻继续按语音键进入第二启动界面。

把手机连上电脑,打开RSD,刷sbx文件(有些包只有sbf文件,那就刷sbf)。

刷完sbx,拔下手机卸下电池关机,按第一步进入初级启动界面,开始刷sbf。

over。详细

http://www.kmobiletools.org

http://www.aktaeon.com/tag/e2/

http://www.e2mod.com/