如何在Linux中将上下文菜单重新映射到另一个键?


19

我刚刚购买了Lenovo ThinkPad,而其中的一切让我感到非常自豪。感觉和Linux内核:P一样坚如磐石。

问题是联想决定删除上下文菜单键,该菜单键是执行右键单击操作的键。他们将其替换为打印屏幕键。我的键盘的数字部分上方带有一些按钮。我想重新映射一个放大镜键,以打开上下文菜单或单击鼠标右键。是否有可能做到这一点?

我曾尝试搜索其他相关问题,但仅找到有关如何向Nautilus上下文菜单添加选项的问答。我想映射键盘的物理键以打开此菜单。就像以前那样。看来戴尔也正在Inspiron键盘上放下此键。我不知道发生了什么事,因为我比鼠标更多地使用键盘。

提前致谢。


3
请使用安装xbindkeys sudo apt-get install xbindkeys。然后在终端运行中xbindkeys -k,键入要更改的密钥。您可以将输出添加到您的问题吗?
赛斯

“ NoCommand” m:0x50 + c:46 Mod2 + Mod4 + l
Jhonnytunes 2012

谁会希望在需要菜单键的地方使用“打印屏幕”键?我真的很想知道您是多么醉酒,可以在联想工作。无论如何,请注意,您并不需要使用.Xmodmap生成器xmodmap -pke,也可以将绑定放在一个空文件中。另外,看看下面的@Baha_hi发现了什么。
J. Katzwinkel

Answers:


13

这有点复杂,但是您可以做到。跟着这些步骤:

检测键码

  1. 运行xev以检测键码:

    xev | grep keycode
    
            state 0x0, keycode 36 (keysym 0xff0d, Return), same_screen YES,
            state 0x0, keycode 107 (keysym 0xff67, Menu), same_screen YES,
            state 0x0, keycode 64 (keysym 0xffe9, Alt_L), same_screen YES,
    
  2. 按您要重新配置的键。终端中的输出将向您显示keycode(注意,可能有多个)。

测试映射

  1. 临时设置新的映射,对我来说是keycode 107

    xmodmap -e "keycode  107 = Return NoSymbol Return"
    

如果密钥的行为符合预期,则可以保存配置。

保存您的配置

  1. 将当前的键盘映射表保存到中$HOME,以覆盖默认设置:

    xmodmap -pke > ~/.Xmodmap
    
  2. 创建或编辑~/.xinitrc以加载配置:

    $EDITOR ~/.xinitrc
    
  3. 添加以下行

    if [ -f $HOME/.Xmodmap ]; then
            /usr/bin/xmodmap $HOME/.Xmodmap
    fi
    

请享用

上面的大多数信息来自ArchWiki文章


有一个问题。当我按下按钮“ l”时被标记。我在xev上进行了检查,它给出了分配给L l字母的46个键控代码。也许它没有键码。
Jhonnytunes 2012

@Jhonnytunes。检查键盘布局是否正确。您可以输入sudo dpkg-reconfigure keyboard-configuration更改模型。
Ed Villegas

还是一样的行为。我尝试了其他型号的ThinkPad,但没有尝试。
Jhonnytunes 2012

顺便说一句,我的thinkpad是E530c,并且没有出现在键盘列表中。
Jhonnytunes 2012

如果是您的键盘布局,则“删除”旁边的键实际上可能是“上下文菜单”(您要查找的功能)。否则,请重新配置其他按键或直接询问Lenovo的办公桌您应该选择哪种布局。
Ed Villegas

12

我在这里发现使用:shift+ F10打开上下文菜单。

我知道这不是最好的解决方案,但我认为它可以临时使用!

PS:我也有e530c,我在Debian 7(Wheezy)上进行了测试。


3

经过数小时的测试,我终于找到了执行此操作的方法,但失败了:D

首先安装xautomation:

sudo apt-get install xautomation

然后转到Ubuntu系统设置中“键盘”部分的“快捷方式”选项卡。首先转到“屏幕截图”条目,然后将操作重新映射到另一个键,或者根据需要禁用它们。我用Thinkpad黑色按钮(Launch1)替换了PrtSc(Print)键。

现在转到“自定义快捷方式”部分并添加一个快捷方式。随便命名,例如菜单。在命令字段中插入以下内容:

xte 'keydown Shift_L' 'key F10' 'keyup Shift_L'

工作完成了!它像奇迹一样运作;)


2

这对我有用。对我而言,thinkpad上“ PrtSc”按钮的键码是107。我在ubuntu中通过“ xev”工具发现了该键。

xmodmap -e "keycode  107 = Menu"

这是暂时的更改。

您可以通过将此命令添加到/ etc / profile中来使其永久化,并且该命令将在每次引导时执行,并且将是永久性更改。


1

我最近购买了一台Lenovo E550,并且遇到了同样的问题,我通过将xte(from xautomation)和一起使用解决了该问题xmodmap

为什么其他答案不能完全起作用?

  1. @Ed Villegas(也不是@Null Pointer)答案将不起作用,因为位于数字部分上方的某些键本身不是唯一键(例如,锁定键与Super+ L组合相关)。当xev用于尝试查找锁键键码时,它同时返回Super和键码L,您只需要xev逐行解释输出。

  2. 对于@Bahax@John FineganShift+ F10是上下文菜单键,它不能在所有应用程序中正常工作,并且不能提供与相同的功能Menu。如果在文件资源管理器中选择一个文件,然后按 Menu上下文菜单,则该文件本身应弹出,而Shift+ F10组合则不会出现这种情况,它将为窗口提供上下文菜单。

  3. @Danial Behzadi对第二项中的人员采取了类似的方法,但是通过击键模拟器将键盘组合链接到一个键,它将把该键链接到Shift+ F10并提供相同的结果。

可行的答案

重要的是要考虑到ThinkPad键盘中不存在的键是Menu(即名称),如下图所示:

菜单键

尽管该密钥不存在,但是它的密钥代码应该存在于您的计算机中,您可以通过打印密钥代码表来找到它,该密钥代码表xmodmap -pke | grep Menu将为您提供以下信息:

xmodmap输出

考虑到这一点,请像在@Danial Behzadi答案中那样安装xautomation(以便xte用于击键模拟):

sudo apt-get install xautomation

并创建一个自定义快捷方式,在“ 触发器”中,按要用作快捷方式的键,然后在“ Action粘贴”中xte 'key Menu'申请并测试。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.