[Steam聊天工具]Linux下,Steam中文输入的治标方案.

2020-04-14

更新下现状,linux的steam上还是不能直接输入中文。 脚本后面又做了小改动。这个工具要配合着系统的快捷键来使用更方便。给它绑定一个全局快捷键,以方便在需要的时候呼出它来。

set -e
which zenity &>/dev/null || (echo '错误:zenity 程序未安装。' >&2; exit 2)
which xdotool &>/dev/null || (echo '错误:xdotool 程序未安装。' >&2; zenity --error --text '错误:xdotool 程序未安装' --title 'steam linux中文聊天辅助工具'; exit 2)

_chat_input="$(zenity --entry --text '在系统内绑定一个全局快捷键给它。\n请在此输入聊天内容(Esc退出):' --title 'steam linux中文聊天辅助工具')"
sleep 0.7
echo [$(date '+%Y/%m/%d %H:%M:%S')] $_chat_input >> _history
sleep 0.7
# xdotool key Return
xdotool type --delay 150 "$_chat_input"    # 若输入间隔太短,可能造成少字的情况,这种情况下可以调整下delay的值,时间单位是毫秒。
# xdotool key Return

以下是原日志

Linux下的Steam无法切换中文输入法,于是只能靠复制粘贴来聊天. 但这样的方式需要切出去打字复制,再切进游戏内粘贴,碰上不能粘贴的游戏,更是没辙.

我是发愁已久了,这两天又是不死心,想看看网上有没有出现新的方法可以使用,这一找,还真找到了个辅助方法.

minecraft-chat-helper, 这是给mc用的中文聊天工具,经测试可以用在steam上聊天. 传送门: https://github.com/m13253/minecraft-chat-helper

我对这个工具进行了些许修改: 1.原先需要在菜单界面再用工具打字,改为直接在正常界面下呼出工具打字. 2.原工具发送一次即退出.现在加了个死循环,除非按ESC键,或输入’qqq’退出 传送门: https://git.coding.net/anye7up/steam-chat-helper.git

整个代码很简单,可以自己新建个.sh后缀的文件,里面代码如下:

set -e
which zenity &>/dev/null || (echo '错误:zenity 程序未安装。' >&2; exit 2)
which xdotool &>/dev/null || (echo '错误:xdotool 程序未安装。' >&2; zenity --error --text '错误:xdotool 程序未安装' --title 'steam linux中文聊天辅助工具'; exit 2)
while :
do
    _mcchat_input="$(zenity --entry --text '保持游戏运行,并切换到此工具。\n请在此输入聊天内容(输入'qqq'退出工具):' --title 'steam linux中文聊天辅助工具')"
    test "$_mcchat_input" == 'qqq' && exit 0
    sleep 0.25
    xdotool key Return
    xdotool type --delay 150 "$_mcchat_input"
    xdotool key Return
done

欢迎大家分享更好的解决方案,最好是能在游戏内直接切换输入法的那种.