关键代码如何映射到适当的操作?

Ger*_*ger 18 xorg keyboard udev

在弄清楚如何使用 更改扫描码到键码的映射后udev,请参阅此问题,我想知道如何将这些键码(或事件,如果您愿意)映射到适当的操作。

因此,例如,如果您按下volume up键盘上的键,则会发送一个扫描码,然后将其转换为volumeup键码。但是这个关键代码是如何被截获的,音量调大,显示相应的通知呢?

我的猜测是必须在某个地方调用脚本,所以我想知道这些脚本在哪里。

编辑:我提到的关键代码不要与关键代码xev返回混淆,但我也对那些感兴趣 ;)

Mat*_*teo 6

好的,在https://help.ubuntu.com/community/MultimediaKeys找到了这个

当您按下键盘上的某个键时,Linux 内核会为其生成一个原始扫描码(如果已分配)。每个扫描码都可以映射到一个键码。这是在内核级别。X 有一种(准)完全独立的键映射方式:X 在启动时读取内核键码表,然后将键码映射到其独立的键码表(它与内核键码相同但不同:))。然后可以将每个键码映射到键符,即表示键或建议操作的字符串。因此,为了让我们的密钥完全发挥作用,它们需要一个内核扫描码/密钥代码加上一个 X 密钥代码/密钥符号。这可能看起来很奇怪,但 X 开发人员有理由从内核中保留一个单独的键盘映射。这一点都不难,只是一个相当乏味的过程。

所以键码被映射到键符,那么键符在哪里?我发现并回答了这个问题:这些天我在哪里可以找到所有 X 键符的列表?由于我们正在讨论音量键,因此可以XF86keysym.h在答案中提到的源代码中找到它。

在我电脑上的那个文件中,我找到了以下音量:

#define XF86XK_AudioLowerVolume 0x1008FF11   /* Volume control down        */
#define XF86XK_AudioMute    0x1008FF12   /* Mute sound from the system */
#define XF86XK_AudioRaiseVolume 0x1008FF13   /* Volume control up          */
Run Code Online (Sandbox Code Playgroud)

奇怪......与其他任何东西不同的值,也许有多个系统来处理密钥?http://crunchbang.org/forums/viewtopic.php?id=16656


我正在使用 Xubuntu,为了控制按键,我需要手动映射操作(像这样如何在 xubuntu 中更改我的键盘快捷键?)。然而,通知似乎是独立的,好像它们是在按键时接收并相应地采取行动,这可能意味着 Ubuntu 中的其他程序是这样设置的,因此不需要将脚本映射到键。

所以我很确定程序现在正在接收密钥(因此找不到任何脚本)。

在 Xubuntu 中,我在使用 Pulse Audio 和使用自定义脚本来更改音量时遇到了这个问题,似乎 Pulse 正在拦截 Mute 键,Mute 键将 Alsa 和 PulseAudio 静音,但取消静音只有 Alsa为有趣的解决方法而制作。


看看这个关于 NotifyOSD https://wiki.ubuntu.com/NotifyOSD#Volume_changes

如果你看这些图:https : //wiki.ubuntu.com/NotifyOSD#Architecture

尤其是这个: 在此处输入图片说明

它表明有一个接收来自 DBus 或 HAL 的“硬件密钥侦听器”?然后它“从系统中检索视觉元素”,声音和亮度图标在 Notify-OSD 的源中,然后从那里制作气泡。


这一切都是疯狂的混乱,但据我所知(到目前为止):

原始扫描码(例如 e016)> 键码(例如 160)> 键符(例如 XF86AudioMute)> gnome-settings-daemon(例如音量增大)> DBus 信号 > 用于通知 OSD(或其他节目收听)


Ste*_*ler 1

大多数情况下,没有运行任何脚本。它们导致事件被发送到窗口管理器或设置守护程序。我唯一知道在此过程中编写脚本的时候是当您配置自定义键绑定时。对于自定义键绑定,您可以添加命令行(可执行文件或脚本)并将它们绑定到键。

请参阅我针对有关在 Ubuntu 中备份键绑定的问题所写的答案:GNOME 键盘快捷键存储在哪里? 我有一个脚本可以备份或恢复所有键绑定,包括自定义键绑定。如果运行该脚本,您可以看到键绑定存储在 dconf 中的位置,以及哪个应用程序收到有关键事件的通知。

  • 我运行了你的脚本,但它似乎所做的只是获取可以通过*系统设置>键盘>快捷方式*访问的快捷方式,例如,我没有找到任何关于亮度的参考。 (2认同)

归档时间:

查看次数:

4607 次

最近记录:

12 年 前