标签: xbindkeys

使用 CapsLock 作为鼠标左键;大多数情况下有效,但因一些事情而失败

Linux System Info:
OS:        GNU/Linux x86_64
Kernel:    3.13.0-24-generic
Distro:    Linux Mint 17 Qiana, Cinnamon 64-bit 2.2.16
           [Based On: Ubuntu 14.04.5 LTS, Trusty Tahr]
Run Code Online (Sandbox Code Playgroud)

由于包括手指损伤在内的残疾(脊椎损伤),我进行了一些改动,以便可以将键盘的 CapsLock 键用作鼠标左键。NumLock 被重新映射为 CapsLock。

当使用 CapsLock 作为左键单击和左键双击时,几乎一切正常,但下面列出的一些事情不...

编辑 2019-01-10

一篇长文章的其余部分已被删除 - 请参阅下面我的回答,了解如何将 CapsLock 键设置为鼠标左键,并将 NumLock 重新映射为 CapsLock。

devices cinnamon xbindkeys

8
推荐指数
1
解决办法
632
查看次数

在不中断按键事件的情况下在按键上运行程序

是否可以将(全局)按键绑定到某个命令并且仍然不会中断按键完成?我的意思是,如果我尝试在此处其他地方发布的 bindkey 解决方案:

# In file: ~/.xbindkeysrc
# Bind key 'q' to running 'some_command'
"some_command"
  q
Run Code Online (Sandbox Code Playgroud)

然后按键'q'永远不会完成,因为它会做:即,永远不会在终端上打印字符'q',例如。

利用xdotool发送“Q”按键是这样的:

# In file: ~/.xbindkeysrc
# Bind key 'q' to running 'some_command'
"some_command && xdotool key q"
  q
Run Code Online (Sandbox Code Playgroud)

导致循环,因为执行的“q”键xdotool将通过绑定执行另一个“some_command”。

更清楚一点,我希望按键“q”像往常一样执行,另外还执行一些外部命令。上面的解决方案用执行一些外部命令替换了 'q' 按键事件。问题是,如果该外部命令也模拟了“q”键按下,那么绑定会重新启动外部命令,我就会陷入无限循环。

xbindkeys xdotool

7
推荐指数
1
解决办法
3605
查看次数

如何在 Linux 中仅重新映射特定键盘的按键?

我有一个通过 USB 连接的数字键盘,我的目标是能够重新映射该数字键盘上的按键,以便它们可以运行自定义命令或映射到其他按键组合。

我的文件中有这个.xbindkeysrc

~ $ cat .xbindkeysrc
"xte 'keydown Super_L' 'key Left' 'keyup Super_L'"
  m:0x10 + c:79 + Release
  Mod2 + KP_Home
Run Code Online (Sandbox Code Playgroud)

这会将 NUM 7 键(通常打印 7)重新映射到Super_L + Left Arrow。这很棒并且有效,但适用于所有键盘,而我的目标是使其仅适用于数字键盘。

一直在寻找如何做到这一点,但我得到的最接近的是使用xinput set-button-map. 不幸的是,这似乎只适用于鼠标等设备。我喜欢尝试获取数字键盘的按钮映射xinput get-button-map [device id],但它只打印从 1 到 7 的数字,而且我的键盘上肯定有更多按钮,所以它不一定有意义。

有什么建议吗?

xinput xte xbindkeys

7
推荐指数
1
解决办法
4553
查看次数

xdotool 和 xbindkeys

我有一个 Acrobat 阅读器,它不会在 Control+plus 上放大,而是在 Control+acute 上放大(Control-plus 会烦人地旋转文档)。

我想使用 xbindkeys 和 xdotool 解决这个问题,但复杂的是 Control-plus 也被其他应用程序使用。

所以思路是拦截Control-plus,检查Acrobat是否为活动窗口。如果是,则向 Acrobat 发送 Control-acute,否则发送 Control-plus。

这是我目前对 xbindkeys 在 Control+plus 上启动的脚本的尝试:

WM_CLASS=$(xprop -id `xdotool getactivewindow` WM_CLASS |awk '{print $4}')

if [ "$WM_CLASS" = "\"Acroread"\" ];
then
   sleep 0.1s;
   xdotool key --clearmodifiers ctrl+acute
else
   killall xbindkeys
   xdotool key --clearmodifiers ctrl+plus
   xbindkeys
fi
Run Code Online (Sandbox Code Playgroud)

这实际上有效,但问题是如果我不杀死 xbindkeys,那么 xdotool 发送 ctrl-plus 将再次触发 xbindkeys 等等。

但这当然意味着每次我在非 acrobat 窗口中点击 Control+plus 时,xbindkeys 都需要被杀死并重新启动......

有一个更好的方法吗?

非常感谢!

xbindkeys xdotool

6
推荐指数
1
解决办法
1051
查看次数

插入“?” 字符到文本字段

我正在尝试使用 xbindkeys 插入“?” 带有键盘快捷键的字符。以下不起作用:

"xvkbd -xsendevent -text '?'" control + shift + 3

相反,它发送“â”。

xbindkeys

5
推荐指数
1
解决办法
750
查看次数

使用鼠标多媒体按钮调节音量

我知道互联网上有很多关于在 Linux 中设置键盘/鼠标多媒体键/按钮的问题,但我的问题更具体。

我的无线输入设备:

上述键盘有ia:

  • 提高音量,
  • 音量减小

工作正常的按键。我的鼠标有几个多媒体按钮,没有分配任何操作。我想分配给两个鼠标按钮,相同的操作,它们分配给音量增大/减小键盘键。

重要的提示:

当我按住音量增大/减小键盘键时,音量 逐渐变大/变小,直到音量达到最大/静音。我想要用鼠标达到同样的效果。

为了满足上述要求,我遵循了以下步骤:

  1. 我安装了xvkbd,这是X窗口系统的虚拟键盘,
  2. 我检查了xev鼠标按钮的代码(8- 音量减小,9- 音量增大),
  3. 我添加了以下几行~/.xbindkeysrc

    "xvkbd -text '\[XF86AudioLowerVolume]'"
      b:8
    
    "xvkbd -text '\[XF86AudioRaiseVolume]'"
      b:9
    
    Run Code Online (Sandbox Code Playgroud)
  4. 我残酷地“重装”了xbindkeys守护进程(其实我不知道它是否可以称为守护进程,因为它是从 开始的/etc/xdg/autostart):

    pkill -f xbindkeys && xbindkeys
    
    Run Code Online (Sandbox Code Playgroud)

    顺便说一句:我不知道如何优雅地重新加载它。

它几乎可以工作了。现在我可以用鼠标按钮调高/调低音量,但如果我继续按住音量调高/调低按钮,音量不会逐渐变大/变小。它在一次“迭代”后停止。只要按住按钮,我就想要“自动重复”。

问题:

  • 我该如何修复它?
  • 我还有其他方法可以做到吗?例如仅使用xmodmap, 而不是xvkbd+ xbindkeys?

为了完整起见:

keyboard-shortcuts audio mouse multimedia xbindkeys

5
推荐指数
2
解决办法
6100
查看次数

Control+Shift + 鼠标滚轮与 xbindkeys 快捷键传播

我的.xbindkeysrc文件包括:

"amixer sset -q 'Master' 10%+"
  control + shift + b:4

"amixer sset -q 'Master' 10%-"
  control + shift + b:5
Run Code Online (Sandbox Code Playgroud)

Ctrl这使我可以使用+ Shift+鼠标滚轮控制音量。在最近升级之前,这一切都工作得很好。

目前这是可行的,但它也会将Ctrl+ Wheel传递到底层窗口 - 这通常会导致放大/缩小(例如在浏览器或终结者中)。

如何在不缩放的情况下更改音量?:-)

我正在使用 arch linux 和 gnome 以及 xorg。

  • 侏儒 41.3
  • X.Org X 服务器 21.1.3

更新:使用sxhkd时也会发生同样的情况。

(2022-02,更新版本,问题依然存在)

gnome arch-linux xorg xbindkeys

5
推荐指数
1
解决办法
2689
查看次数

从 i3 配置执行脚本

题:

我正在使用 i3-wm 并且我将 Mod3 用作热键。我有以下内容./config/i3/config

#This command works
  bindsym Mod3+f exec "firefox" 

#This doesn't work nor do my other scripts
  bindsym Mod3+w exec "openBrowser" 
Run Code Online (Sandbox Code Playgroud)

当我从 bash 运行它们时,这两个命令都可以正常工作,但只有“firefox”命令使用热键运行。运行我自己的脚本不起作用。

额外细节:

openBrowser 是一个脚本,/opt/bin/在我的路径中。还尝试做:

#This command works
  bindsym Mod3+f exec /opt/bin/openBrowser
Run Code Online (Sandbox Code Playgroud)

我还尝试了其他脚本,但在 i3 调用时这些脚本都不起作用。因此,我确定这不是脚本的问题。

我还注意到,当我在 bash 中时,如果我执行 Mod3+w,我的光标会闪烁,就像我执行 Mod3+[any unset key] 一样,该键会将其值写入屏幕。所以看来 i3 至少正在尝试运行该功能。

keyboard-shortcuts macro i3 xbindkeys

3
推荐指数
1
解决办法
2万
查看次数

将多个命令与 .xbindkeys 中的一个键相关联

按下某个键时如何连续运行多个命令?例如,

"Command 1"
"Command 2"
"Command 3"
   Hotkey
Run Code Online (Sandbox Code Playgroud)

似乎不起作用。

xbindkeys

1
推荐指数
1
解决办法
2021
查看次数