如何知道什么是超级钥匙?

Tuy*_*ham 6 xmodmap super-key

我有这个xmodmap命令输出:

shift       Shift_L (0x32),  Shift_R (0x3e)
lock        Caps_Lock (0x42)
control     Control_L (0x25),  Caps_Lock (0x42),  Control_R (0x69)
mod1        Alt_L (0x40),  Alt_R (0x6c),  Meta_L (0xcd)
mod2        Num_Lock (0x4d)
mod3
mod4        Super_L (0x85),  Super_R (0x86),  Super_L (0xce),  Hyper_L (0xcf)
mod5        ISO_Level3_Shift (0x5c),  Mode_switch (0xcb)
Run Code Online (Sandbox Code Playgroud)

所以我想知道这里的超级钥匙是什么?问题是,当我尝试映射超级关键,在这里我想mod4作为windows button left一个组合使用钥匙sxhkd守护进程,它似乎并没有工作,例如,地图打开firefox,没有效果。

编辑:我试图使用windows left button键盘上的快捷地图使用一些命令sxhkd在ArchLinux的守护进程,在意见中讨论,即使我有keycod 133 mod4 = Super_L.Xmodmap使用mod4.config/sxhkd/sxhkdrc映射例如以打开Firefox:

mod4 + f
   firefox
Run Code Online (Sandbox Code Playgroud)

这似乎不起作用,按下windows lef buttonf没有调用 Firefox 或我,只需ffffff在终端中打印出系列。

小智 6

回答您的第一个问题“我想知道这里的超级密钥是什么”:xmodmap无法说出密钥代码是什么,您必须使用命令xev,查看xev man以获取更多信息。

xev从终端调用,然后单击“超级键”,然后检查终端中的输出信息。它会是这样的:

KeyRelease event, serial 37, synthetic NO, window 0x4000001,
    root 0x75, subw 0x0, time 2014984514, (70,-18), root:(82,60),
    state 0x50, keycode 115 (keysym 0xffeb, Super_L), same_screen YES,
    XLookupString gives 0 bytes: 
    XFilterEvent returns: False
Run Code Online (Sandbox Code Playgroud)

xev往往会产生大量输出,尤其是当您将鼠标移到终端窗口上时。您可能需要向后滚动一段时间才能找到所需的输出。在前面的输出中,我们看到 super_L 的键码为 115。

要检查键盘映射,该实用程序xmodmap可用于该目的。xmodmap从终端调用,这将打印类似于您的问题中提供的表格的虚拟或抽象修饰符(或 mod)。

教程:

在表中提供了 int eh 问题文本,似乎mod3没有使用。Windows 超级键已映射,mod4而 Hyper_R(或 F8)根本未映射。

假设我们想映射Hyper_Rmod3. 我们执行以下操作:

  • xev从终端呼叫>> 按Hyper_R。这将显示以下内容:

    KeyRelease 事件,serial 37,合成 NO,window 0x4000001,root 0x75,subw 0x0,时间 2188213888,(74,-12),root:(687,178),state 0x10,keycode 74 (keysym 0xffc5,same_XLStringup)给出 0 个字节:XFilterEvent 返回:False

  • 打开gedit并输入以下内容:

    清除 mod3 键码 74 = Hyper_R 添加 mod3 =Hyper_R

  • 将此信息作为隐藏文件保存在您的主目录中。命名文件.Xmodmap

  • 注销,然后登录。然后打开终端并调用xmodmap。您必须看到 mod3 映射的 Hyper_R,等等以用于任何其他映射目的。对于更复杂的映射目的,您可能会认为其他一些工具可能更有帮助,请参见此处

记住:

xmodmap无法设置一个键来键入组合键,例如CTRL+W

xmodmap 无法设置运行脚本的键。

xmodmap 键不能根据当前应用程序更改键。