如何使用默认 ALT+TAB 的替代按键在 Ubuntu/Gnome 中切换应用程序?

如何使用默认 ALT+TAB 的替代按键在 Ubuntu/Gnome 中切换应用程序?

在 Ubuntu/Gnome 上,是否可以使用单个替代按键来模拟 ALT+TAB?

我想通过键盘上的一个按键(最好是菜单上下文键)来模拟 ALT+TAB。

为了正确模拟这一点,它必须表现得像先按下 ALT 键,然后在短暂延迟后按下 TAB 键一样 - 另一方面,如果模拟同时按下两个键,我相信任务导航菜单不会出现。

有人知道如何在 Ubuntu 上模拟这个吗?

更新:

按照 John T 的建议,我安装了 monodevelop,下载了 IronAHK 并运行“make install all”,结果出现此错误:

/mainline/Scripting/IACodeProvider.cs(100,32): error CS1502: 
The best overloaded method match for
`System.CodeDom.Compiler.CompilerError.CompilerError(string, int, int, 
string, string)' has some invalid arguments /usr/lib/mono/gac/System
/2.0.0.0__b77a5c561934e089/System.dll (Location of the symbol related 
to previous error) /mainline/Scripting/IACodeProvider.cs(100,32): 
error CS1503: Argument `#4' cannot convert `int' expression to type `string'

答案1

如果您使用 compiz 作为窗口管理器,即如果您启用了视觉效果,只需安装该包。通过-> ->compizconfig-settings-manager启动设置管理器。现在找到模块的设置,您可以将您喜欢的任何按键分配给和命令。SystemPreferencesCompizConfig Settings ManagerApplication SwitcherNextPrevious Window

答案2

由于您没有使用 Compiz,因此您应该查看System-> Preferences->下的选项Keyboard Shortcuts。此Window Management部分至少包含两个可能有用的条目:Move between windows, using a popup menuMove between windows immediately。也许您可以为其中一个分配一个快捷键。

答案3

新答案

在过去一个多小时里,我一直在胡思乱想,想出一个解决方案,但我被难住了。我设法做的是制作一个宏,执行Alt+ Tab,然后每两秒发送一次额外的宏Tab……但我不知道如何在您受够了时终止脚本。(您只需点击一次键即可启动)

我想知道是否有任何宏/Linux 专家可以制作第二个宏或脚本,可以根据要求终止宏的播放 - 当您按下一个键并松开时,这只需起作用。

在 Ubuntu 中,首先进入终端并输入:

sudo apt-get install xmacro

(现在,我不是最好的 Linux 人,但我不知道为什么我无法在突触包管理器中找到它,但我必须从终端输入它)。

接下来,我编写的脚本是(将其保存在某处,我在主目录中将其命名为 test.macro)

KeyStrPress Alt_L

然后,根据需要复制并粘贴以下内容:

KeyStrPress Tab
KeyStrRelease Tab
Delay 2

要运行它,您需要键入以下内容(从保存宏的位置):

cat test.macro | xmacroplay ":0.0"

我为上述命令创建了一个别名/热键。

再次强调,这不是解决方案,但希望是一个起点。我已经接近目标了,但花了很多时间之后,我还是想不出一个可靠的解决方案。抱歉,但希望这能让你更接近目标。


旧答案

据我所知,这是不可能的。

我查看了各种配置文件,但由于其工作方式,无法找到复制Alt+ 的好方法。Tab

简而言之,您需要按住一个按钮,同时另一个按钮进行切换。

我建议你这样做,如果你愿意,我可以帮你看看,就是编写一个宏,当按下一个键时,它会自动执行Alt+ Tab,然后Tab每隔几秒钟发送另一个。松开它只会在当前选定的应用程序上释放。

答案4

使用铁矿石,它是 AutoHotkey 的完全重写,可在 Mono 下运行以实现 Mac 和 Linux 兼容性(它附带一个构建脚本)。

至于代码:

Numpad1::
Send {Alt Down}
Sleep, 1000
Send {Tab}
Loop
{
   GetKeyState, state, Numpad1, P
   if state = U
      break
   Sleep, 1000
   Send {Tab}
}
Send {Alt Up}
return

这会将数字键盘上的数字 1 设置为以 1 秒的延迟发送 Alt-Tab 序列。您可以随意修改代码以满足您的喜好!

相关内容