我在 Ubuntu 中使用智能拼音键盘 1 将中文字符输入到我的文档中。ibus
其input-method
设计方式是,可以键入pinyin
与字符相关联的字符,然后可以使用数字从字符列表中选择它0-9在键盘上。
例子:
问题:在上周,有时会发生当我按数字时0-9输入法不会产生汉字而是我按的数字。此外,任何进一步的键盘输入都不会被解释为 ibus 的输入,而只是按原样写在屏幕上,直到我pinyin
再次手动切换输入模式。
我按顺序尝试了什么:
- 重启
- 去掉输入法配置,重新添加
- 重新安装 ibus 拼音
这些似乎都没有帮助。
问:有谁知道如何解决这个问题?
附带说明一下,里面似乎有一个*ibus-engine-libpinyin.*.crash
文件/var/crash
可能与这个问题有关。但是,我不确定如何在线跟踪这个错误报告,看看它是否已经有在线解决方案。
编辑:我目前的解决方法是使用fcitx
而不是ibus
.. 虽然这并不能真正解决软件中的问题。
1 智能拼音键盘可以通过调用安装sudo apt-get install ibus-libpinyin
在中文All Setting-->Text Entry-->Input sources to use-->+(智能拼音)(Ibus)中。
TL;博士:
rm ~/.cache/ibus/libpinyin/*
长答案:
我有类似的问题,除了我的问题无法在下一列中返回任何汉字>。
我做的第一件事是
watch -n 3 -d 'ps auxww|tac'
比较成功(第一列)和失败(下一列)发生时输出之间的区别。我很快注意到它
/usr/lib/ibus/ibus-engine-libpinyin --ibus
仍然在成功运行,但在失败时消失。这意味着
/usr/lib/ibus/ibus-engine-libpinyin --ibus
在下一列中选择字符时进程崩溃。由于之前的进程没有了,而Super+Space要切换新的libpinyin进程,选择第一列,然后
ps auxww
在另一个终端运行知道最新pid
的是6798
,运行sudo strace -ff -vvv -p 6798 -s 1000000
了解进程:在下一列中选择字符后,strace 输出停止。现在我知道这是核心转储了。另一种方法是调试
tail -f /var/log/syslog
以知道它是systemd-coredump
.所以我跑
coredumpctl list
知道相关的核心转储pid
是6798
:我运行
coredumpctl dump 6798 --output alamak
将 coredump 保存到 alamak 文件中,然后运行gdb -q /usr/lib/ibus/ibus-engine-libpinyin alamak
(可执行路径可以从ps auxww
or获取coredumpctl list
)来检查 coredump 文件:尝试导航下一页,我可以看到一些有趣的关键字,与之前
thread apply all bt full
的输出相同:Enterstrace
write()
现在导致核心转储的主要关键字已经被确认,谷歌
const pinyin::PhoneticKeyMatrix*, const pinyin::ForwardPhoneticConstraints*
,将找到这个错误报告线程:就是这样,运行
rm ~/.cache/ibus/libpinyin/*
,它解决了问题。1.
在
SunPinyin
(带ibus
输入)中,您可以设置输出的初始状态为英文/中文。它不适用于IBus Pinyin 1.5.0
.2. 至少在crash修复之前作为权宜之计,可以尝试使用
Google Pinyin
,WubiPinyin
,SunPinyin
orPinyin
underfcitx
,这样可以更好的管理罗马化的输入法。您需要更改输入法
fcitx
并System Settings --> Language Support重新启动系统(在我的情况下注销/登录就足够了)。托盘图标将显示keyboard(fcitx
) 代替En/ Ru/Pl按钮 (ibus
)。然后查找
Google Pinyin
、或inWubiPinyin
,键入中文以缩小列表。SunPinyin
Pinyin
All Setting --> Text Entry --> Input sources to use --> +3.(临时便利)按下Shift可以手动更改输入以及标点符号等。检查:All Settings --> Text Entry --> Input source --> Preferences --> Shortcuts分配适当的快捷方式。