将媒体键(音量增大/减小)映射到自定义操作

将媒体键(音量增大/减小)映射到自定义操作

我刚刚升级到 20.04。当我尝试将媒体键分配给自定义快捷方式或除声音和媒体组之外的任何快捷方式时,设置窗口不会记录按键,而是直接控制音量。它在 18.04 中运行良好。这是正常的吗?有什么方法可以让它工作吗?

答案1

柯莫纳德是我尝试的第一个对我有用的方法。你可以试试他们的二进制下载。我从源代码构建了他们的开发容器

按照常问问题

sudo groupadd uinput
sudo usermod -aG input $USER
sudo usermod -aG uinput $USER
# Then log out for groups to take effect

将以下内容放入/etc/udev/rules.d/kmod.rules

KERNEL=="uinput", MODE="0660", GROUP="uinput", OPTIONS+="static_node=uinput"

查找要修改的键盘设备:ls -1 ls /dev/input/by-id/

我有以下输出:

usb-CN00XMGG8LG001CMDJ3JA04_Integrated_Webcam_HD_200901010001-event-if00
usb-CN00XMGG8LG001CMDJ3JA04_Integrated_Webcam_HD_200901010001-event-if02
usb-Logitech_Gaming_Keyboard_G213_085338673338-event-kbd
usb-Logitech_Gaming_Keyboard_G213_085338673338-if01-event-kbd
usb-Logitech_USB_Receiver-if02-event-mouse
usb-Logitech_USB_Receiver-if02-mouse

我有 2 个“Logitech_Gaming_Keyboard_”条目。“if01-event”条目是我需要的。根据文档的建议,[ apt install]evtest可以帮助缩小设备范围。媒体键甚至无法到达xev,但在使用 测试正确的设备时确实会显示出来evtest

自定义配置文件。该input行需要设置为您的设备。请参阅教程文件了解详情。这是我的foo.kbd


(defcfg
    ;; Not this one. That's all the normal keys.
    ;; input (device-file "/dev/input/by-id/usb-Logitech_Gaming_Keyboard_G213_085338673338-event-kbd")
    input (device-file "/dev/input/by-id/usb-Logitech_Gaming_Keyboard_G213_085338673338-if01-event-kbd")
    output (uinput-sink "My KMonad output" )
    fallthrough true
)

;; https://github.com/kmonad/kmonad/blob/master/src/KMonad/Keyboard/Keycode.hs
;;   , (KeyVolumeDown,     ["voldwn", "vold"])
;;   , (KeyVolumeUp,       ["volu"])
;;   , (KeyNextSong,       ["next"])
;;   , (KeyPlayPause,      ["pp"])
;;   , (KeyPreviousSong,   ["prev"])
;; Nothing for KeyStopCd
;; KeyMute -> mute
(defsrc
    ;;      mute    vold    volu
    pp      stopcd  prev    next
)
;; Ubuntu 20.04/gnome/wayland eats f13, f20, f21, f22, f23
;; f24 just doesn't work.
;; That leaves f14-19 open.
(deflayer name
    ;;      f18     f19     f24
    f14     f15     f16     f17
)

测试一下:

./kmonad  ./foo.kbd 

当 kmonad 运行时:

  • 重新定义的按键不应触发媒体操作
  • xev会响应按键,但会调用类似XF86Launch5
  • Gnome 设置 - 键盘快捷键将允许在快捷方式中使用这些键。将显示Launch5为键。使用启动计算器捷径。
  • 这些键可用于在 vscode 中绑定快捷方式。它们将显示为f14等。

一旦它开始工作,您就可以按照自己喜欢的方式将 kmonad 设置为在启动时运行。

已使用 Ubuntu 20.04 / Wayland / gnome 3.36.8 进行测试


我尝试过涉及 xmodmap 或 setxkbmap 的解决方案,但都没有成功。这个答案通过首先重写输入来在其他系统上工作。但它仍然在 Ubuntu 中使用随机扩展 f 键运行:无法在 20.04 上禁用“工具”键绑定

请告诉我一个更简单、可行的解决方案,哈哈

答案2

以下是使静音和音量键执行其他操作的步骤概要。如果您更改键盘布局(例如,在两种语言之间切换),该步骤就会中断。

  1. 创建一个描述键重新映射的 xmodmap 文件。通常,它是.Xmodmap主目录中的一个名为的文件,但可以命名为任何名称。内容应该是:
keysym XF86AudioMute = XF86Launch5
keysym XF86AudioLowerVolume = XF86Launch6
keysym XF86AudioRaiseVolume = XF86Launch7

(1b:您可以通过运行“xmodmap ~/.Xmodmap”进行测试。它应该不会产生任何输出,并且音量键不再执行任何操作)

  1. 在桌面上找到启动应用程序(搜索它)。添加一个要运行的条目/usr/bin/xmodmap /home/username/.Xmodmap将“用户名”替换为您自己的用户名(通常的 $HOME 或 ~ 不起作用,因为命令字段不是 shell)。

名称可以是任何内容,命令如上所述,注释为空白

  1. 现在,您可以将音量键映射到设置中的其他操作

相关内容