AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 1200893
Accepted
Daniel A. Thompson
Daniel A. Thompson
Asked: 2020-01-06 12:55:18 +0800 CST2020-01-06 12:55:18 +0800 CST 2020-01-06 12:55:18 +0800 CST

如何完全禁用多媒体键?18.04 LTS

  • 772

我使用 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        ]   };
};
gnome keyboard xkb xmodmap media-buttons
  • 2 2 个回答
  • 4249 Views

2 个回答

  • Voted
  1. Best Answer
    Raffa
    2020-01-06T15:23:05+08:002020-01-06T15:23:05+08:00

    键盘多媒体键是否不同?

    是的,这些键有点不同。例如,当与其他键一起按下时,它们可能会报告单个键码或多个键码Fn。此外,通常很难使用xev. 这取决于键盘制造商的配置。

    多媒体按键的按键代码通常配置为XF86按键名称。这些名称不同,但以XF86like 等XF86MonBrightnessUp开头XF86MonBrightnessDown。


    如何禁用/重新配置键盘多媒体键?

    XKB方法

    最简单的方法是编辑 XKB 配置文件,如下所示:

    1. /usr/share/X11/xkb/symbols/pc通过在终端中运行以下命令来编辑 XKB文件:

      sudo nano /usr/share/X11/xkb/symbols/pc

    2. 查找包含XF86如下内容的行:

      key <KEY_CODE> { [ XF86MonBrightnessDown ] };

    3. 通过在它们之前添加注释掉//它们,如下所示:

      //key <KEY_CODE> { [ XF86MonBrightnessDown ] };

    4. 按Ctrl+保存文件并退出编辑器,X然后按Y。

    5. 通过在终端中运行以下命令来清除 XKB 缓存:

      sudo rm -rf /var/lib/xkb/*

    6. 重新启动系统以激活新的 XKB 配置,或者您可以避免重新启动并尝试通过在终端中使用以下命令设置 XKB 映射布局来重新加载新的 XKB 配置:

      setxkbmap -layout us

    7. 测试你的钥匙。

    如果制造商将键盘多媒体键配置为报告单个键代码,则上述解决方案可能会禁用它们,并使键可以自由用于其他目的。

    但是,如果情况并非如此,那么您将需要处理xmodmap.

    xmodmap方法

    该xmodmap方法有点不同,您不能只使用此方法禁用多媒体键并将它们分配给任何东西,xmodmap -e 'keycode Number ='因为这通常会使它们无法使用,因此您需要将它们重新分配给所需的功能。您还需要采取一些机制来维护您在重新启动和注销/登录之间的更改。

    要实现此方法,请按照以下步骤操作:

    1. 通过在终端中运行以下命令来显示当前键盘映射:

      xmodmap -pke

    2. 检查输出并识别符号后面XF68包含的行,如下所示:=

    keycode 232 = XF86MonBrightnessDown NoSymbol XF86MonBrightnessDown NoSymbol XF86MonBrightnessDown
    

    例如,上面的行显示代码编号为232的键当前配置为触发XF86MonBrightnessDown,这将降低显示器的亮度,您可以通过为其分配不同的值来更改此行为,如下所示xmodmap -e 'keycode 232 = New_Value'。例如,要将F11功能分配给此多媒体键,请在终端中运行以下命令:

    xmodmap -e 'keycode 232 = F11'
    

    新功能将立即生效。但是,重新启动或注销/登录后,此功能更改将丢失。

    注意:在终端中运行命令并在您按下实际物理键时监视输出可能会有所帮助,acpi_listen然后将其与您获得的输出进行比较,xmodmap -pke以便您确认键码是您想要的。您也可以尝试该xev实用程序,但不幸的是,它在处理多媒体或供应商特定密钥时并不总是返回密钥代码。

    要在重新启动和注销/登录后保留更改,您需要执行以下操作:

    1. 通过在终端中运行以下命令,在主目录中创建和编辑脚本文件:

      nano ~/.Modify_Multimedia_Keys.sh

    2. 在第一行添加这个#!/bin/bash,然后在第一行下面添加你的xmodmap -e 'keycode Number = New_Value'命令(每个命令都在一个新行中),如下所示:

    #!/bin/bash
    xmodmap -e 'keycode 232 = F11'
    xmodmap -e 'keycode 122 = F2'
    
    1. 按Ctrl+保存脚本文件并退出编辑器,X然后按Y。

    2. 通过在终端中运行以下命令使脚本文件可执行:

      chmod +x ~/.Modify_Multimedia_Keys.sh

    3. 让脚本文件在每次启动时执行,方法是通过 GUI 将其添加到您的启动应用程序中,或者将一个Modify_Multimedia_Keys.desktop文件放在~/.config/autostart/包含以下内容的目录中,替换YOUR_USERNAME为您的实际用户名:

    [Desktop Entry]
    Type=Application
    Exec=/home/YOUR_USERNAME/.Modify_Multimedia_Keys.sh
    Hidden=false
    X-GNOME-Autostart-enabled=true
    Name=Modify Multimedia Keys
    Comment=This modifies keyboard multimedia keys
    
    • 3
  2. Daniel A. Thompson
    2020-01-08T09:15:40+08:002020-01-08T09:15:40+08:00

    对于后代,这里是 shell 脚本,其中包含在xmodmap这种情况下将键码映射到键所需的命令:

    #!/bin/bash
    
    # fix the common F keys
    xmodmap -e 'keycode 128 = F3'
    xmodmap -e 'keycode 212 = F4'
    xmodmap -e 'keycode 237 = F5'
    xmodmap -e 'keycode 238 = F6'
    xmodmap -e 'keycode 173 = F7'
    xmodmap -e 'keycode 172 = F8'
    xmodmap -e 'keycode 171 = F9'
    xmodmap -e 'keycode 121 = F10'
    xmodmap -e 'keycode 122 = F11'
    xmodmap -e 'keycode 123 = F12'
    
    # fix the '=' on the numeric keypad
    xmodmap -e 'keycode 125 = equal' 
    

    我按照此答案xev中的描述确定了键码。请注意,Apple 铝键盘从 F 键一直到 F19(!),上面的脚本中没有介绍,因为我并没有真正使用它们。应该可以用来确定这些键的键码是什么并将它们添加到脚本中(如果需要)。xev

    • 1

相关问题

  • 如何重置我的键盘布局?

  • 为什么我的时钟、指示器小程序和通知区域有时会在我重新启动时移动?我怎样才能防止这种情况?

  • 停止菜单图标闪烁

  • 是否有适用于 IMAP 邮件帐户的 Gnome 小程序?

  • 如果顶部面板中缺少会话小程序,如何注销?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve