特定应用程序的组合键重新映射?

特定应用程序的组合键重新映射?

我知道在 Ubuntu 中有很多方法可以在全局范围内重新映射组合键(例如,全局重新映射 Ctrl+S 以发送 Ctrl+D 等),比如绑定键应用程序。然而,我需要一种方法来做到这一点仅适用于特定应用。例如,“重新映射 Ctrl+S 以发送 Ctrl+D,但仅限 Chrome“。有什么办法可以实现这个吗?

答案1

您使用 xbindkeys 的想法听起来不错:

添加.xbindkeysrc新的键绑定:

"app_specific_keys.sh"
   Control+s

"app_specific_keys.sh"当您按下 时,它将执行ctrl+s

现在您需要定义脚本。它应该获取活动窗口,并从中获取当前具有焦点的应用程序的名称:

xprop -id `xdotool getactivewindow` |awk '/WM_CLASS/{print $4}'

这可以达到目的:它向 xdotool 询问活动窗口,然后向 xprop 询问具有给定 id 的窗口的所有属性,然后将非常详细的输出简化为应用程序的名称(实际上是它的类)。如果你在 gnome 终端中运行它,你会得到

"Gnome-terminal"

现在您需要为您的应用程序定义操作:

if [ $N = '"Gnome-terminal"' ]; then                                                    
    xdotool key --clearmodifiers ctrl+s                                                          
else                                                                            
    xdotool key --clearmodifiers ctrl+d                                                          
fi  

因此,脚本整体"app_specific_keys.sh"看起来可能像这样:

#!/bin/bash                                                                     
W=`xdotool getactivewindow`                                                     
S1=`xprop -id ${W} |awk '/WM_CLASS/{print $4}'`                                 
S2='"Gnome-terminal"'                                                           
if [ $S1 = $S2 ]; then                                                          
   xdotool key --clearmodifiers ctrl+d                                             
else                                                                            
   xdotool key --clearmodifiers ctrl+s                                          
fi  

应该工作,但就像这个问题,我不得不承认它不行。可能是因为 Compiz、Unity、Global Menu 中的一个不能很好地与--clearmodifiersxdotool 选项配合使用。解决方法可以在脚本前面添加一个 sleep 以便能够自己释放按键: 在您.xbindkeysrc对此键绑定的更改中:

"sleep 0.5; app_specific_keys.sh"
   Control+s

附注:如果您想更改在终端中运行的程序的键(例如控制台模式下的 vi 或 emacs),这将不起作用。返回的应用程序类仍将是“Gnome-terminal”。

希望有所帮助。

答案2

自动键就像 Ubuntu 的 AutoHotkey。您可以用 Python 编写脚本,并通过键盘快捷键和 Windows 过滤器执行它们(使其成为特定于伪应用程序的)。您的脚本可以控制键盘和鼠标事件,甚至可以移动窗口作为附加功能。

相关内容