现在我一直在使用 Wine 运行 TM2013。这个版本支持一个窗口里以标签页的方式放多个对话了。然后就遇到一个问题——不同平台切换标签页的快捷键是不同的!
Linux 使用Alt+数字,Mac OS X 使用⌘数字,而 Windows 则使用Ctrl+数字。像火狐这种多平台支持得非常好的程序,不仅有一个适合其所运行平台的默认值,而且也可以通过手动修改about:config
来使用其它平台上的习惯。但是,TM 显然不可能这么体贴。
不过我是 Linux + Awesome 用户嘛,怎么可能轻易就妥协呢。既然 TM 自己不认,那我让 Awesome 在Alt+数字时给 TM 的窗口发Ctrl+数字就好了嘛。想法是好的,现实却不那么美好,Awesome 不支持直接给窗口发送指定按键。于是只好调用 xdotool 命令了。因为按 Awesome 快捷键的时候,焦点会暂时移出原窗口,所以我指定了窗口 ID。延时的解决方法没这个优雅:
-- {{{ bind_alt_switch_tab_keys
alt_switch_keys = awful.util.table.join(
-- it's easier for a vimer to manage this than figuring out a nice way to loop and concat
awful.key({'Mod1'}, 1, function(c) awful.util.spawn('xdotool key --window ' .. c.window .. ' ctrl+1') end),
awful.key({'Mod1'}, 2, function(c) awful.util.spawn('xdotool key --window ' .. c.window .. ' ctrl+2') end),
awful.key({'Mod1'}, 3, function(c) awful.util.spawn('xdotool key --window ' .. c.window .. ' ctrl+3') end),
awful.key({'Mod1'}, 4, function(c) awful.util.spawn('xdotool key --window ' .. c.window .. ' ctrl+4') end),
awful.key({'Mod1'}, 5, function(c) awful.util.spawn('xdotool key --window ' .. c.window .. ' ctrl+5') end),
awful.key({'Mod1'}, 6, function(c) awful.util.spawn('xdotool key --window ' .. c.window .. ' ctrl+6') end),
awful.key({'Mod1'}, 7, function(c) awful.util.spawn('xdotool key --window ' .. c.window .. ' ctrl+7') end),
awful.key({'Mod1'}, 8, function(c) awful.util.spawn('xdotool key --window ' .. c.window .. ' ctrl+8') end),
awful.key({'Mod1'}, 9, function(c) awful.util.spawn('xdotool key --window ' .. c.window .. ' ctrl+9') end)
)
function bind_alt_switch_tab_keys(client)
client:keys(awful.util.table.join(client:keys(), alt_switch_keys))
end -- }}}
然后在 TM 的窗口上调用这个函数就可以了。唯一有点小遗憾的是,fcitx 的图标在按 Awesome 快捷键时会切换一下。