我尝试了 OP 在如何将 [Alt] + [hjkl] 键映射到箭头键?并面临同样的问题。唯一的答案没有奏效。有什么建议么?
我想我现在已经在整个互联网上寻找答案,但我找不到它。
我有一个键盘,其中波浪号键应映射到条形/管道键。在 Wayland 之前,我使用了这个配置
➜ ~ xmodmap -e "keycode 49 = less greater bar bar bar"
但是现在这个配置在终端窗口中不起作用,出于某种奇怪的原因。据我了解,它根本不应该在韦兰工作。
据我了解setxkbmap
是要走的路。我试过setxkbmap -option "tlde:bar"
了,但它根本没有任何效果。我该如何走得更远?
更新
➜ ~ setxkbmap -query
rules: evdev
model: pc105
layout: us
➜ ~ gsettings get org.gnome.desktop.input-sources sources
[('xkb', 'se')]
➜ ~ echo $DESKTOP_SESSION
ubuntu-wayland
➜ ~ echo $XDG_CURRENT_DESKTOP
ubuntu:GNOME
我正在尝试使用正确Ctrl的类型->
那可能吗?如果没有,您知道实现它的简单方法吗?
这是我尝试过的代码:
keycode 105 = (minus, greater)
我把啤酒洒在我的机械键盘上,因为每当我按下它时它往往会重复“ a ”键(是的,我已经清洁过几次,使用过酒精等)。我尝试使用“弹跳键”来缓解此问题,但此功能会在按下所有键后暂时禁用它们。换句话说,“弹跳键”会干扰我在需要键入带有重复字母的单词(< 就像单词“letter”中的“t”)或重复aaa快速按退格键时快速键入的能力。
(好的,我不会在其余文本中留下重复,但你可以看到它以 m a a denning 频率发生)
如果有帮助,我使用 xev 来准确确定操作系统正在接收的命令序列,看起来每次“a”重复时都是因为键盘多次发送所需的序列(KeyPress 后跟 KeyRelease,然后 KeyPress其次是 KeyRelease 再次)。换句话说,键没有停留在“KeyPress”状态。它在重复自己,好像我多次按下并释放它一样。
我见过其他人问同样的问题,但解决方案实际上并不是我正在寻找的。例如,在这个问题的第一个答案中提出的解决方案禁用自动重复,但这对我不起作用,因为“a”没有陷入“按下”状态。同一问题中的第二个答案也不起作用,因为在按下问题键后它会禁用整个键盘。我只想暂时禁用“a”键,并且只禁用“a”键一段很短的时间(~50ms)。
幸运的是,我在打字时很少需要重复字母“a”,所以即使是使用自动更正之类的解决方案也对我有用。最好,我想使用一个使用 xbindkeys 的解决方案,因为我已经在使用该包来重新映射我的鼠标按钮。
编辑:针对下面的评论,以下是“xinput list”和“xev”的输出:
$ xinput list
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ SINOWEALTH Game Mouse id=9 [slave pointer (2)]
⎜ ↳ EST Gaming keyboard id=12 [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)]
↳ Power Button id=7 [slave keyboard (3)]
↳ SINOWEALTH Game Mouse Keyboard id=10 [slave keyboard (3)]
↳ EST Gaming keyboard id=11 [slave keyboard (3)]
↳ EST Gaming keyboard id=13 [slave keyboard (3)]
↳ Eee PC WMI hotkeys id=15 [slave keyboard (3)]
↳ EST Gaming keyboard id=16 [slave keyboard (3)]
$ xev
KeyPress event, serial 37, synthetic NO, window 0x7c00001,
root 0x4e5, subw 0x0, time 188722500, (165,-16), root:(4636,676),
state 0x10, keycode 38 (keysym 0x61, a), same_screen YES,
XLookupString gives 1 bytes: (61) "a"
XmbLookupString gives 1 bytes: (61) "a"
XFilterEvent returns: False
KeyRelease event, serial 37, synthetic NO, window 0x7c00001,
root 0x4e5, subw 0x0, time 188722576, (165,-16), root:(4636,676),
state 0x10, keycode 38 (keysym 0x61, a), same_screen YES,
XLookupString gives 1 bytes: (61) "a"
XFilterEvent returns: False
在尝试实施@Raffa 的建议时,我使用“3”作为键盘 ID,并将键码保留为 38。但是,键仍然重复。
我使用 gnome-shell 3.28.4 安装了全新的 vanilla 18.04 LTS。我正在使用有线 Apple 铝制键盘:
我想在各种最终用户应用程序(Firefox、CLion 等)中使用顶行 F 键作为键盘快捷键,但每当我按下其中任何一个时,gnome/X11 堆栈中的某些东西(我假设)正在拦截它们并将它们解释为“媒体”键。据我所知,这样的 F 行按键不会传递给任何应用程序。
例如,如果我按 F5,我希望 Firefox 重新加载当前网页,或者让 CLion 触发构建,但是,唯一发生的事情是屏幕上覆盖了以下巨大图标:
我玩过gnome-tweaks
设置应用程序,但无济于事。我也环顾四周dconf-editor
,但我不熟悉它,也没有改变任何东西,因为我不知道我在做什么。
我做了很多搜索,但我得到的唯一点击似乎来自那些媒体不工作的人(他们希望他们工作)。需要明确的是,我想完全禁用媒体键。
有谁知道如何做到这一点?谢谢!
更新1:输出cat /usr/share/X11/xkb/symbols/pc
:
daniel@legolas:~$ cat /usr/share/X11/xkb/symbols/pc
default partial alphanumeric_keys modifier_keys
xkb_symbols "pc105" {
key <ESC> { [ Escape ] };
// The extra key on many European keyboards:
key <LSGT> { [ less, greater, bar, brokenbar ] };
// The following keys are common to all layouts.
key <BKSL> { [ backslash, bar ] };
key <SPCE> { [ space ] };
include "srvr_ctrl(fkey2vt)"
include "pc(editing)"
include "keypad(x11)"
key <BKSP> { [ BackSpace, BackSpace ] };
key <TAB> { [ Tab, ISO_Left_Tab ] };
key <RTRN> { [ Return ] };
key <CAPS> { [ Caps_Lock ] };
key <NMLK> { [ Num_Lock ] };
key <LFSH> { [ Shift_L ] };
key <LCTL> { [ Control_L ] };
key <LWIN> { [ Super_L ] };
key <RTSH> { [ Shift_R ] };
key <RCTL> { [ Control_R ] };
key <RWIN> { [ Super_R ] };
key <MENU> { [ Menu ] };
// Beginning of modifier mappings.
modifier_map Shift { Shift_L, Shift_R };
modifier_map Lock { Caps_Lock };
modifier_map Control{ Control_L, Control_R };
modifier_map Mod2 { Num_Lock };
modifier_map Mod4 { Super_L, Super_R };
// Fake keys for virtual<->real modifiers mapping:
key <LVL3> { [ ISO_Level3_Shift ] };
key <MDSW> { [ Mode_switch ] };
modifier_map Mod5 { <LVL3>, <MDSW> };
key <ALT> { [ NoSymbol, Alt_L ] };
include "altwin(meta_alt)"
key <META> { [ NoSymbol, Meta_L ] };
modifier_map Mod1 { <META> };
key <SUPR> { [ NoSymbol, Super_L ] };
modifier_map Mod4 { <SUPR> };
key <HYPR> { [ NoSymbol, Hyper_L ] };
modifier_map Mod4 { <HYPR> };
// End of modifier mappings.
key <OUTP> { [ XF86Display ] };
key <KITG> { [ XF86KbdLightOnOff ] };
key <KIDN> { [ XF86KbdBrightnessDown ] };
key <KIUP> { [ XF86KbdBrightnessUp ] };
};
hidden partial alphanumeric_keys
xkb_symbols "editing" {
key <PRSC> {
type= "PC_ALT_LEVEL2",
symbols[Group1]= [ Print, Sys_Req ]
};
key <SCLK> { [ Scroll_Lock ] };
key <PAUS> {
type= "PC_CONTROL_LEVEL2",
symbols[Group1]= [ Pause, Break ]
};
key <INS> { [ Insert ] };
key <HOME> { [ Home ] };
key <PGUP> { [ Prior ] };
key <DELE> { [ Delete ] };
key <END> { [ End ] };
key <PGDN> { [ Next ] };
key <UP> { [ Up ] };
key <LEFT> { [ Left ] };
key <DOWN> { [ Down ] };
key <RGHT> { [ Right ] };
};
使用 xmodmap 我可以将 F2 映射为左键单击:
xmodmap -e "keycode 68 = Pointer_Button1"
但是,当我使用 shift+F2 模拟 shift 左键单击以选择 nautilus 上的文件时,它不起作用。