manjaro下利用xdotool映射快捷键到TIM提取消息和截图

首页 / 软件 / 正文

前言

  不管使用什么系统,通讯软件都是必不可少的。比如QQ,微信,相对于QQ而言我更喜欢用TIM。但是在manjaro下安装TIM(deepin.com.qq.office)和QQ(deepin.com.qq.im)以后会发现只有在TIM窗口获取到焦点的时候提取消息(ctrl+alt+z)和截图(ctrl+alt+a)的快捷键才能用,当然QQ以及QQ轻聊版也是一样的结果。关掉窗口TIM在后台运行以后会发现快捷键会失去效果没有反应。所以我使用xdotool来解决这个问题。

解决方案

  • 先安装所需软件包
sudo pacman -S xdotool
  • 利用xdotool映射键盘到TIM或者QQ(2种命令)
# 可以打开terminal使用下面命令测试效果
# 提取消息 第一种(TIM)
xdotool search --name "TIM" key "ctrl+alt+z"
# 截图 第一种(TIM)
xdotool search --name "TIM" key "ctrl+alt+a"
# ==============================
# 提取消息 第二种(TIM)
xdotool key --window $(xdotool search --limit 1 --all --pid $(pgrep TIM.exe)) "ctrl+alt+z"
# 截图 第二种(TIM)
xdotool key --window $(xdotool search --limit 1 --all --pid $(pgrep TIM.exe)) "ctrl+alt+a"
  • 编写脚本代码(下一步可以下载,不用复制)
#!/bin/bash
# Author:雨落凋殇
# Desc:利用xdotool映射快捷键到qq以及tim 
# Blog:http://rainss.cn
# 该脚本需要安装xdotool
#判断参数个数
if [ $# -lt 2 ];then
    echo "错误:参数不匹配" 
    echo "使用方法 ./rains 参数一 参数二"
    echo "参数一 0 TIM, 1 QQ"
    echo "参数二 0 提取消息, 1 截图"
    echo "实例 ./rains 0 0"
    exit 1
fi
if [ $1 -eq 0 ]; then
    #判断tim是否运行
    tim=$(pgrep TIM.exe)
    if [ -n "$tim" ];then
        # TIM运行中 
        case $2 in
        0) # 提取消息
            xdotool key --window $(xdotool search --limit 1 --all --pid $tim) "ctrl+alt+z"
        ;;
        1) # 截图
            xdotool key --window $(xdotool search --limit 1 --all --pid $tim) "ctrl+alt+a"
        ;;
        esac
    else
        # TIM没有运行
        echo "TIM没有运行"
    fi
fi

if [ $1 -eq 1 ]; then
    #判断QQ是否运行
    qq=$(pgrep QQ.exe)
    if [ -n "$qq" ];then
        # TIM运行中 
        case $2 in
        0) # 提取消息
            xdotool key --window $(xdotool search --limit 1 --all --pid $qq) "ctrl+alt+z"
        ;;
        1) # 截图
            xdotool key --window $(xdotool search --limit 1 --all --pid $qq) "ctrl+alt+a"
        ;;
        esac
    else
        # QQ没有运行
        echo "QQ没有运行"
    fi
fi
  • 将以上代码保存为rains.sh(名称任意格式sh)
# 将脚本下载到本地
wget https://resource.upcdn.rainss.cn/2019/09/1921264169.txt -O rains.sh
# 修改权限和所有者
sudo chmod 755 rains.sh
# rlds为当前用户名(使用users或者id命令可以查看当前用户名)
sudo chown rlds:rlds rains.sh
  • 设置按键快捷键(设置 > 设备 > 键盘 > 自定义快捷键)

    添加快捷键提取TIM的消息。命令填写脚本的绝对路径,使用TIM第一个参数设置为0,使用QQ的第一个参数为1。

提取消息快捷键

添加TIM截图快捷键。使用TIM第一个参数设置为0,使用QQ的第一个参数为1。

截图快捷键

总结

  到这里TIM或者QQ在关闭以后快捷键依旧可以使用了。现在你可以愉快的提取消息以及使用TIM或QQ截图了。注意:设置的快捷键不要和系统已有的冲突了。还有一定要安装xdotool软件后脚本才能生效。

评论区
头像
    头像
    枫雨
      

    hello,好久不见,我是枫雨,枫林幻境的站长,现网站域名已改,请在有空时更换下友情链接哦,thank you。新域名:https://maplerain.cc

    头像
    EchoCow
      

    很强。。。
    我提取消息用的是 KWIN 的激活请求注意的窗口 这个快捷键,设置 ctrl + alt + Z 就可以提取所有需要请求激活的窗口
    截图用的是深度的,设置快捷键 ctrl alt a,QQ的用在 manjaro 上会有“失真的感觉”,就是感觉颜色不怎么对还会比较模糊就放弃了。。。

      头像
      @EchoCow

      kwin啥时候看看,截图没发现问题,我最近的manjaro的文章都是TIM截的图。就是字体发虚死活没解决!!!

        头像
        EchoCow
          
        @雨落凋殇

        KWin是最近发现的,以前一直用的是快捷键绑定 /opt/deepinwine/tools/sendkeys.sh 这个文件,然后传递相应的参数就可以调用 qq/tim 的快捷键了。超级好用,比如你试试 ctrl + alt + a 绑定这个命令或者直接命令行运行
        sh /opt/deepinwine/tools/sendkeys.sh a
        就可以调用截图了,其他的类似。不过截图颜色这些问题我这边一直找不到啥问题,截代码的时候这种感觉尤为明显。

        字体发虚比较麻烦,年初折腾过成功一次,后面重装就没管了,反正我眼睛不行看不出来。。。他需安装打了字体清晰化补丁,如infinality/ultimate5的freetype的lib32位包,挺复杂。。。可以参考官方 wiki,上次就是看这个成功的。

        https://wiki.archlinux.org/index.php/Font_configuration_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)

        反正我是没心情折腾了,而且忘的差不多了。听他们说还有一种方法是直接放字体进 ~/.deepinwine/Deepin-TIM/drive_c/windows/Fonts 里面去,这个我就没试过了。。。

          头像
          @EchoCow

          啥时候有时间试试emm

    头像
    allms.cn
      

    很强大