xte当我在终端中运行此命令时,会触发 Expo 模式:
xte 'keydown Super_L' 'key S' 'keyup Super_L'
Run Code Online (Sandbox Code Playgroud)
但是,当我把它放在我的 .xbindkeysrc 文件中时:
"xte 'keydown Super_L' 'key S' 'keyup Super_L'"
b:11
Run Code Online (Sandbox Code Playgroud)
当我单击按钮时没有任何反应。当我按下按钮 11 时,以下绑定使字母 X 出现在我的控制台中:
"xte 'key X'"
b:11
Run Code Online (Sandbox Code Playgroud)
这是xbindkeys -n -v单击按钮 11 时的详细输出:
按钮按下!
e.xbutton.button=11
e.xbutton.state=16
"xte 'keydown Super_L' 'key W' 'keyup Super_L'"
m:0x0 + b:11(鼠标)
窗口 2bb 的屏幕为 0
使用 fork+exec 调用启动程序
按钮释放!
e.xbutton.button=11
e.xbutton.state=16
什么也没有发生。这与xbindkeys执行命令的方式有什么关系吗?(fork+exec 调用)
博览会.sh:
#!/usr/bin/env bash
export DISPLAY=:0
xte 'keydown Super_L' 'key S' 'keyup Super_L'
Run Code Online (Sandbox Code Playgroud)
从命令行执行此脚本会激活 …
这个问题已经被问到,但从未得到正确回答。与@Seth 通关后,我现在再次询问。这将使我能够更轻松地回答并可能修改问题。原始问题可以在这里找到:
问题:
虽然这是非常简单的任何按键动作映射到使用鼠标按钮xbindkeys会同xdotool或xte似乎多了很多问题映射一个修改键(如ALT,CTRL,SHIFT等)给它。
最终的解决方案应该允许仅使用鼠标按CTRL +单击(例如,用于选择列表的多个条目)。
可以在 Stack Exchange 以及其他 Linux 相关论坛上找到解决此问题的几种可能方法。但是这些都没有按预期工作,因为它们会导致其他问题和副作用。
笔记:
下面的一些示例涉及带有Scheme语法的Guile并依赖于文件,而其他示例则依赖于具有各自语法的文件。我知道他们不会一起工作。.xbindkeysrc.scm.xbindkeysrc
此外,下面的片段xdotool仅依赖于,但我对涉及其他应用程序的方法持开放态度,例如xte,尽管它似乎都导致相同的结果,因此我在xdotool这里只使用操作。
方法一:
使用以下内容更新.xbindkeysrc文件:
"xdotool keydown ctrl"
b:8
"xdotool keyup ctrl"
release + b:8
Run Code Online (Sandbox Code Playgroud)
这就是我最初尝试的,但它有一个副作用,即修饰符被保留并且无法释放。
方法B:
使用以下内容更新.xbindkeysrc.scm文件:
(xbindkey '("b:8") "xdotool keydown ctrl")
(xbindkey '(release "b:8") "xdotool keyup ctrl")
(xbindkey '("m:0x14" …Run Code Online (Sandbox Code Playgroud) 我正在尝试将鼠标上的切换窗口按钮绑定到 Ubuntu。目前我正在尝试使用xbindkeysandxte来做这件事,但是.xbindkeysrc只在输出 aTab并且不切换窗口中执行此操作。
当前.xbindkeysrc代码:
"'xte' 'keydown Alt_L' 'keydown Tab' 'keyup Tab' 'keyup Alt_L'"
b:10
Run Code Online (Sandbox Code Playgroud)
我想知道是否有一个不同的命令可以直接给出切换窗口的指令。
编辑:我也试过xdotool,这是使用它的代码:
"xdotool keydown alt key Tab && sleep 1 && xdotool keyup alt"
b:10
Run Code Online (Sandbox Code Playgroud)
它也没有用。
EDIT2:我xdotool在命令行中尝试了一个并且它有效。有什么原因它不起作用xbindkeys吗?
你知道怎么做吗?我知道如何通过键盘 (Alt+F4) 执行此操作,我知道如何使用鼠标执行此操作(单击该 X),并且我还知道kill X应该终止 id Xkillall Y的进程(并且应该终止名为是)。但我想知道如何从终端杀死活动窗口。
因此,根据我上面所说的,一个有效的答案也是获取活动窗口的 id。
现在我正在从xte实现这个功能(模拟 Alt+F4),但我想知道是否有一种方法不意味着安装另一个应用程序。谢谢你们。
编辑。这是完整的脚本。首先启用“按下 Ctrl 时显示鼠标”,然后将此脚本添加到 CompizConfig 中的命令并绑定到右上角。当您触摸右上角时,会显示鼠标周围的小通知。如果您什么都不做,活动窗口将在 1 秒后关闭。但是,如果您在第二秒内再次触摸角,活动窗口将不会关闭。
xte 'key Control_R'; if [ -f ~/.fcont ]; then rm -f -r ~/.fcont; else touch ~/.fcont; sleep 1; if [ -f ~/.fcont ]; then xkill -id `xprop -root _NET_ACTIVE_WINDOW | cut -d\# -f2`; rm -f -r ~/.fcont; fi fi
Run Code Online (Sandbox Code Playgroud)
请注意,我仍然使用之前命名的 xte 应用程序,因为我前段时间提出的这个问题从未得到解答。
我正在尝试xbindkeys在 Kubuntu 中进行设置,因为我得到了一个带有一些无用按钮的新鼠标。我试图将 F5 键绑定到鼠标上的 windows-logo 按钮,我将其标识为 c:134。
不幸的是,它似乎不起作用。这是我在 .xbindkeysrc 中所做的
"xte 'key F5'"
c:134
Run Code Online (Sandbox Code Playgroud)
这不起作用。但是,如果我在终端中输入:sleep 10; xte 'key F5'并切换到另一个窗口,10 秒后 F5 键将被正确模拟(例如,它将刷新当前浏览器页面)。
这也不是密钥识别的问题。这将正确启动凯特。
"kate"
c:134
Run Code Online (Sandbox Code Playgroud)
我真的不明白,为什么xte不会模拟密钥!
有什么建议?
我想将我的(罗技鼠标,拇指按钮)绑定b:2到鼠标中键button 2。
我试过
"xte 'mouseclick 2'"
b:8
Run Code Online (Sandbox Code Playgroud)
它在终端中有效,但不适用于 xbindkeys。以下也不会触发任何操作,这正是我实际计划做的:
"xte 'mousedown 2'"
b:8
"xte 'mouseup 2'"
b:8 + release
Run Code Online (Sandbox Code Playgroud)
但是,我可以像"xte 'keydown A'"使用 xbindkeys一样发送击键,没有任何问题。如果我替换keydown A为mouseclick 2,则不会触发鼠标操作。(我将鼠标悬停在 Firefox 选项卡上查看它是否关闭)
我究竟做错了什么?