分类归档: Linux

解决fcitx 4.1 选择候选词后输入框消失的问题

fcitx更新到4.0之后我就一直在用fcitx,但是自2011年9月5日更新到4.1.0-1之后,很多候选词就无法上屏了,尤其是当候选词是处在第二页的时候。具体表现为当选择一个无法输入的词时输入框就会消失。后来我把这个问题报给了fcitx的开发人员,以下贴上问题解决的过程。

Issue地址是:http://code.google.com/p/fcitx/issues/detail?id=429

Reported by hess…@gmail.com, Yesterday (25 hours ago)
如何重现?
1. 输入 shishi
2. 翻页找到"实时"两个字
3. 按下对应数字键

这个时侯你会发现输入框消失了,但是当你再尝试输入其他内容时之前输入的文字又会出现在输入框里。

Fcitx 版本: 4.1.0-1
来源: Archlinux pacman
操作系统:Archlinux
桌面环境:Openbox

Comment 1 by hess…@gmail.com, Yesterday (25 hours ago)

实时是其中一个例子,如果无法重现请尝试其他词组,出现在第二页的字词在我这里基本上都无法输入。
Comment 2 by project member wen…@gmail.com, Yesterday (24 hours ago)

你是不是在用sunpinyin而没有用sunpinyin-git?

Comment 3 by hess…@gmail.com, Today (8 hours ago)

我根本就没装sunpinyin呢,只有fcitx
Comment 4 by project member wen…@gmail.com, Today (8 hours ago)

无法重现你的问题。移除配置能解决你的问题吗?

Comment 5 by hess…@gmail.com, Today (97 minutes ago)

非常遗憾,我将~/.config/fcitx 重命名为 ~/.config/fcitx.bak之后重新启动,问题依旧。

基本上只要选择的是第二页的字词候选框就会消失。
Comment 6 by project member wen…@gmail.com, Today (88 minutes ago)

我这里所有的输入法都没办法重现你的问题(码表,拼音,sunpinyin,googlepinyin)
即使是重新安装源内提供的4.1.0都没办法重现。

我怀疑你对问题的描述有不准确的地方(假设存在这个bug的话)。
如果你能把这个问题录下来就最好了。

Comment 7 by hess…@gmail.com, Today (67 minutes ago)

非常感谢你的耐心回答,我刚才又测了一下,如果我pkill fcitx,然后再从命令行通过fcitx&来启动,居然就一点问题也没有。

不知道是不是跟什么变量之类的有关系呢?

还有我再次pkill fcitx之后X就挂掉了,点啥都没反应。

我把fcitx启动的输出导了出来,你看看是否有异常?
fcitx.log
3.2 KB   View   Download
Comment 8 by project member wen…@gmail.com, Today (49 minutes ago)

其实我应该再问问你具体输入的程序是什么……按照我的推测,如果是输入很诡异的话,很可能是这个程序本身输入支持的问题,但是在某种情况下这个问题可以由fcitx绕过或者怎么样。

不过即使我用xim的话在gtk或者qt程序(甚至开启了新加入的xim的on the spot支持,这个选项默认关闭),也都没有试验出问题。

输出里面有一个dbus相关的问题,不过fcitx那个问题会进行数次连接尝试,看起来是绕过了这个问题才对。

有个相关的你也不妨参考,虽然和fcitx无关,但是也是dbus的启动问题。
https://bbs.archlinux.org/viewtopic.php?id=115474

既然你已经升级到4.1.0了
不妨把 fcitx-gtk2 ( fcitx-gtk3 fcitx-qt 如果你有需要 ) 装上,并且设置
GTK_IM_MODULE=fcitx ,而不是你以往设置的xim。

当然你更加不妨用openbox的自动启动来启动fcitx(也许这样就解决了),而不是写自己的~/.xinitrc

Comment 9 by hess…@gmail.com, Today (moments ago)

我照你的方法做了之后依然没有效果。

不过好消息是我尝试加上参数 -s 把delay设成5之后就正常了。

我现在的配置:
安装了 fcitx-gtk2 + fcitx-qt
变量写在 ~/.xprofile
export XMODIFIERS="@im=fcitx"
export GTK_IM_MODULE="fcitx"
export QT_IM_MODULE="fcitx"

启动写在 ~/.config/openbox/autostart.sh
fcitx -d -s 5 

现在看来没有发现什么问题。

非常感谢你的帮助

[转]Linux 中的键盘映射

原文地址:http://www.linuxidc.com/Linux/2011-04/35197.htm

 

对于英语来说,键盘上的字母键直接和英语字母表中的字母对应,但是对于非英语的语种来说,情况就不太一样了。例如,德语中的“ß”字母就没有直接的键和它对应,为此,Linux 提供“键盘映射”或“键盘翻译”,利用键盘映射可将某些键转换为特殊键。

前面提到,X Window 直接处理了键盘的输入输出端口,因此,在 Linux 虚拟控制台下和 X Window 下使用不同的键盘映射方法。在 Linux 虚拟控制台上,可利用 loadkeys 命令将特殊按键映射为特殊字符;而在 X Window 中,必须使用 xmodmap 命令完成键盘映射。这些命令均按照字符映射表文件(文本文件)中的规定完成相应的转换。在 X Window 启动时,它会参考 Linux 文本模式下的字符映射表,因此可获得某些一致的键映射。

字符映射表文件保存在 /usr/lib/kbd/keytables 目录下,defkeymap.map 是默认的字符映射表文件。利用命令:

$ loadkeys fr.map

可装入 fr.map 所规定的字符映射表。这时,按下“.”会显示“:”。命令

$ loadkeys –d

可装入默认字符映射表。对于非默认的键盘映射,可在启动时在 shell 脚本中装入特殊的映射表。

对X Window 而言,它对键盘的处理过程分如下两个步骤:

1.X Server 首先将键码转换为键符号名(keysym)。文件 /usr/include/X11/keysymdef.h 中包含所有的符号名。X Server 能够区分修饰键带来的不同,因为 keysymdef.h 中区分了两种不同的键,例如对“a”和“A”,分别用“KS_a”和“KS_A”定义。

2.X Server 将键符号翻译为 ASCII 字符串。对于大多数的键来说,该字符串只包含一个字符,而对于功能键等特殊按键来说,则包含多个字符。例如,F5 键对应的默认 ASCII 字符串为 “5~”。

利用 xmodmap 工具可修改键盘和键符号名之间的对应关系。例如,X Window 中“A”的键码为 30,而“Q”的键码为16。如果建立文件 maptest:

keycode 38 = A
keycode 24 = Q

在 xterm 中运行

$ xmodmap maptest

之后,将发现“A”键和“Q”键交换了过来。

上述的 maptest 文件实际就是一个简单的 X Window 映射文件。但需要注意的是,文件中的 keycode 和 Linux 内核对键值的定义是不一样的,一般而言,X Window 中的键码要比内核的键值大 8。利用 showkey 命令可以查看内核对键值的定义。例如,运行 showkey 并前后按下“A”和“Q”后,程序的输出为:

$ showkey
kb mode was RAW
...
keycode 30 press
keycode 30 press
keycode 16 press
keycode 16 press

该程序给出的是“A”和“Q”的内核键值。
在 XF86Config 文件中,Keyboard 段用来指定键盘参数,一般而言,这些参数不需要特殊设置:

Section “Keyboard”
Protocol    “Standard”
AutoRepeat 500 5
EndSection

[译]如何在Linux下禁用键盘、触摸板、鼠标等输入设备

原文地址:http://blog.yjl.im/2010/12/using-xinput-to-disable-keyboard-mouse.html

我最近发现可以用 xinput 来禁用/启用输入设备。我经常用 synclient 来关掉我的触摸板, 或者用 xinput 来关闭我的笔记本键盘。

第一步我们需要先拿到设备的名字或者ID:

$ xinput list
⎡ Virtual core pointer                          id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ USB Optical Mouse                         id=8    [slave  pointer  (2)]
⎜   ↳ SynPS/2 Synaptics TouchPad                id=7    [slave  pointer  (2)]
⎣ Virtual core keyboard                         id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Sleep Button                              id=9    [slave  keyboard (3)]
    ↳ Power Button                              id=10   [slave  keyboard (3)]
    ↳ Video Bus                                 id=11   [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=6    [slave  keyboard (3)]

在这里触摸板的名字是 'SynPS/2 Synaptics TouchPad' ID是 7;
键盘的名字是 'AT Translated Set 2 keyboard' ID是 6.

下一步我们要知道设备都有什么属性:

$ xinput list-props 'AT Translated Set 2 keyboard'
Device 'AT Translated Set 2 keyboard':
        Device Enabled (127):   1

键盘只有一个属性 'Device Enabled' 他的值是 1,意思就是说键盘是打开状态的。

我们来尝试关掉它:

sleep 0.1 ; xinput set-prop 'AT Translated Set 2 keyboard' 'Device Enabled' 0 ; sleep 5 ; xinput set-prop 'AT Translated Set 2 keyboard' 'Device Enabled' 1

开头 sleep 0.1 的目的是要留出时间让你执行当前命令时所敲的回车的按键(keypress)事件能够完成, 我猜测当你按下回车时命令就会执行并把键盘禁用,但是按键弹起(keyup)还没有被发送,所以X会以为你一直按这回车键。

另一个更简单的用法是用ID来进行操作,这样你就不需要输入一大长串的名字了:

sleep 0.1 ; xinput set-prop 8 127 0 ; sleep 5 ; xinput set-prop 8 127 1

键盘的ID是8, 属性 'Device Enabled' 的ID是127。 当你用 list-props 列出设备属性时, 在属性名后面的数字就是属性的ID。 像 'Device Enabled' 的ID总是 127,但是设备的ID就不一样,它跟设备的连接时间有关,一般越先连接的设备ID越小,之后会越来越大。

PS:设置设备属性不需要root权限。

Arch Linux + Wine运行RTX / QQ

最近被客户要求用RTX沟通,我又懒得开虚拟机,想到以前就有人用WINE 运行过QQ,应该RTX也可以运行才对就到网上搜索了一下。

最后找到这篇帖子:http://www.php-oa.com/2011/01/06/linux-wine-rtx.html

因为我用的是archlinux,最后只需要 pacman -S wine winetricks 就行。

在安装RTX之前需要运行 winetricks mfc42 安装一下MFC的运行库,RTX需要这玩意。

然后 用 wine 运行安装文件就可以了, 中间会提示 ShlMenu 神马的注册失败,不用管,Ignore掉就行了,安装好就可以从桌面直接运行RTX了。

推荐在winecfg里把”Allow the window manager to decorate the windows” 给关掉,不然RTX的窗口会有两层边框和状态栏的。

——————–

另外附上好用的独立EXE的QQ,这个也是从 扶凯 哪里拿过来的。

深度单体版QQ

http://u.115.com/file/t8c7c407ad

Archlinux 环境配置记录

Archlinux+Openbox+Bmpanel2

Archlinux+Openbox+Bmpanel2

Window Manager = Openbox
http://openbox.org/

Desktop Background = Habak

Performace Monitor = Conky
http://conky.sourceforge.net/

Panel = Bmpanel2
http://code.google.com/p/bmpanel2/

Panel-Calendar = Gsimplecal
http://code.google.com/p/gsimplecal/

Volume Control = Volumeicon
http://softwarebakery.com/maato/volumeicon.html

NetworkManager = NetworkManager + nm-applet
http://projects.gnome.org/NetworkManager/?x=22

FileManager = PcManFM
http://pcmanfm.sourceforge.net/

现在用着感觉用pcmanfm做桌面还是不太爽,于是改用了xfce4的桌面,xfdesktop,但是用这个的话file manager也得换成thunar。。。

大部分软件在pacman 中就有,但是有几个像 gsimplecal和volumeicon都是在AUR里