11

wine 应用程序全局快捷键无效的解决方案

 2 years ago
source link: https://blog.diqigan.cn/posts/wine-global-hotkey-problem.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

在 Ubuntu 下我们经常会使用 Wine 或者 Crossover 运行 Windows 应用程序。当应用程序切换到后台时,是无法响应预设的全局快捷键的。比如” 打开微信” 的快捷键 ctrl + alt + w 在这种情况下就无法响应.

我们可以借助一个小工具 xdotool 来解决这个问题.

  • 此方法在 Ubuntu 17, 18, 19 全系列测试通过,其他平台未作测试,理论通用;
  • 本文以 “打开微信” 快捷键为例,其他应用以此类推;

1. 安装 xdotool

直接在命令行运行以下命令即可:

sudo apt install --no-install-recommends xdotool

2. 编写 xdotool 脚本

* 思路: Wine 应用在后台无法接收到快捷键状态,此时借助 xdotool 向 Wine 应用发送模拟按键信息即可. *

在合适的位置新建一个脚本文件 “open_wechat.sh”, 写入以下内容:

#!/bin/sh
#在当前运行的应用中找到名为WeChat.exe的应用程序,并向它发送按键事件"ctrl+alt+W"
#WeChat的可执行文件名为WeChat.exe,如果是其它应用程序就修改成其它应用程序的可执行文件名, 应用名称大小写敏感, 一个字母都不能错!
xdotool key --window $(xdotool search --limit 1 --all --pid $(pgrep WeChat.exe)) "ctrl+alt+W"

赋予脚本可执行权限:

chmod +x open_wechat.sh

如果此时你的微信正好运行在后台,执行这个脚本就可以把它召唤到前台。如果没有,请检查脚本是否有错误.

3. 设置快捷键

图形界面依次打开 “设置” -> “设备” -> “键盘”, 点击列表最底部的 “+” 号添加自定义快捷键.

快捷键设置

快捷键设置

  • 名称随便,填写 “打开微信” 即可;
  • 命令填写刚才编写的脚本的全路径 ;
  • 快捷键设置自己想用的快捷键即可,建议于应用内部快捷键相同;
  • 最后点击” 添加” 即可.

到这里已经设置成功了,打开微信,切换到后台,然后按下刚才设置的快捷键就能召唤应用至前台。如果不能,请检查自己前面的设置是否有误.

其他应用以此类推,还是那句话,之后的事情对于敢玩 Ubuntu 的你只能是小菜一碟了,加油!

  1. 如何获取 Wine 应用名称?

    先启动目标应用,然后使用 ps 命令查看即可,运行:

    ps aux | grep wine

    从中查找自己的应用名称.

这个方法是一个 QQ 交流群中名为 “简单” 得大佬教给我的,略加整理,发布至此。感谢大佬的贡献.


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK