Fedora gnome 键盘应用程序的替代品

Fedora gnome 键盘应用程序的替代品

我使用的是 Fedora 25 Gnome。我有一个罗技 K350 无线键盘。当我使用 Xubuntu 和 Manjaro 时,我可以轻松映射所有键。

现在,在 Fedora 上,某些键无法使用 Fedora 的键盘快捷键应用程序进行映射,并且当我尝试映射某些键时,某些键会执行它们的命令。例如,我的键盘上有一个额外的关闭按钮。在 Fedora 上,它使笔记本电脑休眠,我找不到它来删除它,如果我尝试添加快捷方式,如果我按下它,电脑就会休眠,而不是向我显示按钮的代码。

另外,键盘应用程序很滞后。我想知道是否可以用 XFCE 的键盘应用程序替换它

在此输入图像描述

我想将所有大灰色按钮映射到顶部和左侧。但最重要的是右上角的灰色小按钮,它应该是关机按钮。

答案1

很长一段时间没有使用 Fedora 或 Gnome(或 XFCE)来实现此目的。但是将按键重新映射到功能发生在多个层上,并且在 WM 层上执行此操作在我看来很麻烦。按键/代码来自内核(来自硬件中的 IRQ 等)到 Xorg,其中编号全部它们并传递回应用程序(无论是通过所有其中应用程序是另一个故事)。

Xorg 传递关键代码的应用程序包括 WM(XFCE 或 Gnome 甚至 KDE),以及这些应用程序打开的窗口。键映射桌面应用程序等工具的作用是点击 Xorg 的键码配置。通过创建新键盘 ( setxkbmap) 修改按键 ( xmodmap) 或什至在将代码重新发送到窗口 (IME) 之前在内存中重新映射。

如果我们自己输入 Xorg 按键代码,我们可以为任何系统(即运行 Xorg 的系统)配置键盘。我将使用我自己的键盘:

在此输入图像描述

轮廓显示了我将用作示例的一个键,该键带有音符。我们将使该键用作向上箭头。

首先让我们看看 Xorg 如何看待我的键盘:

$ xinput 
⎡ Virtual core pointer                      id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ Logitech USB Optical Mouse                id=10   [slave  pointer  (2)]
⎜   ↳ SynPS/2 Synaptics TouchPad                id=14   [slave  pointer  (2)]
⎣ Virtual core keyboard                     id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Power Button                              id=6    [slave  keyboard (3)]
    ↳ Video Bus                                 id=7    [slave  keyboard (3)]
    ↳ Power Button                              id=8    [slave  keyboard (3)]
    ↳ Sleep Button                              id=9    [slave  keyboard (3)]
    ↳ USB 2.0 Camera                            id=11   [slave  keyboard (3)]
    ↳ Asus Laptop extra buttons                 id=12   [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=13   [slave  keyboard (3)]

嗯,是的,我想我的钥匙(音符)在“华硕笔记本电脑额外按钮”中。这意味着它位于虚拟键盘下。很好,这意味着我可以xev通过以下方式找到它的密钥代码:

xev -event keyboard

如果它不是虚拟键盘的一部分,我将需要遍历所有事件(包括鼠标事件),这将使它很难找到,虽然不是不可能,但很难。然后我在xev运行时按下音符键,发现 Xorg 理解如下:

KeyPress event, serial 28, synthetic NO, window 0x1a00001,
    root 0x496, subw 0x0, time 32080036, (381,333), root:(382,352),
    state 0x0, keycode 234 (keysym 0x1008ff32, XF86AudioMedia), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

很好,这意味着它是键码 234。这也表明它被映射到XF86AudioMedia我的 WM 上没有任何作用(xmonad,因为它忽略了大量 XF86 标准)。但无论如何,我们有一个要重新映射的键。要执行此操作,我们执行以下操作:

xmodmap -e 'keycode 234 = Up NoSymbol Up'

我的音符键用作向上箭头。而且,这是独立于 WM 的。为了使其在重新启动时工作,您需要将xmodmap表达式放入文件中~/.Xmodmap

keycode 234 = Up NoSymbol Up

并运行

xmodmap ~/.Xmodmap

在 WM 初始化期间。在 XFCE 初始化期间运行哪些文件、、、~/.xprofile以及其他文件是另一个问题。 WM 对于运行哪些文件特别不标准化。不过,您始终可以手动运行它。~/.xinitrc~/.profile

.Xmodmap文件每行包含一个映射,因此可用于重新映射多个键。该!标记是该文件中的注释指示符。

这是如何运作的?

首先,让我们理解为什么我需要编写Up NoSymbol Up而不是简单地编写Up。实际上我不需要,但通常为一个键提供至少三个(有时是四个)映射。映射意味着当键为以下情况时要采取的操作:

= <key pressed> <shift+key> <ctrl+key> <ctrl+shift+key>

(请注意,Ctrl+Up在某些应用程序中效果不佳,这使得这个示例不太好。)

好的,我们重新映射了一个键。但如何找到正确的操作来重新映射按键。箭头很简单:上、下、左、右;字母也可以通过添加字母作为参数来简单地重新映射。但是XF86AudioMedia我们之前的那个东西呢?或者如何让一个按键成为睡眠或电源按钮?

要获取当前的映射,请执行以下操作:

xmodmap -pke

它打印一个很长的列表,包括几个XF86修饰符(例如,,,XF86Sleep)。这些可以添加到任何键,就像我们使用上面的向上箭头所做的那样。完整列表可以在 Xorg 中找到XF86PowerOffXF86WebCam源代码

不幸的是,就像源代码中的评论所述:

X.Org 不会添加到 XF86 键符号集中,尽管它们已被采用并被视为 X 键符号定义的“标准”部分。 XFree86 从未正确注释过这些键符号,因此我们已尽力解释这些键的语义。

XFree86 已经删除了该时期的邮件档案,这可能会让人们对其中一些定义有更多的了解。直到/除非我们复活这些档案,这些档案都来自记忆和使用。

可能很难找到每一个的确切目的。而且,由于缺乏明确定义的标准,WM 只实现了其中的一些映射。并且不同的WM实现不同的映射。此外,一些 WM 具有这些映射功能的配置工具,而其他 WM 则没有。一些 WM 几乎忽略所有这些映射。

测试您的 WM 是否支持特定映射的一种方法是尝试它。例如,我将尝试XF86XK_ToDoList首先从XK定义中删除 并重新映射未使用的键码:

xmodmap -e 'keycode 248 = XF86_ToDoList'

并使用xdotool来组成这样的按键代码的按键:

xdotool keydown 248
xdotool keyup 248

我的WM当然不支持,XF86_ToDoList因为什么也没发生(实际上我不认为任何WM支持那个)。

然后,您可以搜索密钥所需的功能,并在找到该功能后重新映射它们。当然,考虑到 XFCE 支持它。

警告

如果您使用或在幕后setxkbmap调用的工具在不同语言之间更改键盘,则映射将被撤消。 setxkbmapIME 很好,因为它们独立于 Xorg 运行。

当您登录时,映射就会起作用。您可以创建“开机”键

测试类似的内容时要小心XF86PowerOff,您可能会无意中强制硬重启。

答案2

Fedora 支持切换桌面环境,如果你想安装整个xfce桌面:

yum groupinstall 'Xfce Desktop'

在登录屏幕上,您将能够选择 xfce 桌面。

如果您想坚持使用 Gnome,您可以安装 xfce 的部分内容。尝试:

yum search xfce

查找任何看起来与键盘相关的 xfce 实用程序并安装它们。

相关内容