![为什么其他答案完全不起作用?](https://linux22.com/image/965078/%E4%B8%BA%E4%BB%80%E4%B9%88%E5%85%B6%E4%BB%96%E7%AD%94%E6%A1%88%E5%AE%8C%E5%85%A8%E4%B8%8D%E8%B5%B7%E4%BD%9C%E7%94%A8%EF%BC%9F.png)
我刚买了一台联想 ThinkPad,我对它的一切都很满意。它感觉就像 Linux 内核一样坚固 :P。
问题是联想决定删除上下文菜单键,也就是执行右键单击操作的键。他们用打印屏幕键代替了它。我的键盘有数字部分,上面有一些按钮。有一个放大镜键,我想重新映射以打开上下文菜单或作为右键单击键。可以这样做吗?
我尝试搜索其他相关问题,但只找到了有关如何向 Nautilus 上下文菜单添加选项的问答。我想映射键盘上的一个物理键来打开此菜单。就像以前一样。戴尔似乎也在他们的 inspiron 键盘中放弃了这个键。我不知道发生了什么,因为我使用键盘的次数比鼠标多。
提前致谢。
答案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,
按下要重新配置的键。终端中的输出将显示
keycode
(小心,可能会有多个)。
测试映射
临时设置新的映射,对我来说它是
keycode 107
:xmodmap -e "keycode 107 = Return NoSymbol Return"
如果密钥表现符合预期,则可以保存配置。
保存你的配置
将当前的键盘映射表保存到您的
$HOME
,以覆盖默认值:xmodmap -pke > ~/.Xmodmap
创建或编辑
~/.xinitrc
以加载您的配置:$EDITOR ~/.xinitrc
添加以下行
if [ -f $HOME/.Xmodmap ]; then /usr/bin/xmodmap $HOME/.Xmodmap fi
享受
以上大部分信息来自ArchWiki 文章。
答案2
答案3
我最近购买了一台联想 E550 并且遇到了同样的问题,我通过使用xte
(来自xautomation
)和解决了这个问题xmodmap
。
为什么其他答案完全不起作用?
@Ed Villegas(也不@Null 指针)答案不起作用,因为位于数字部分上方的某些键本身并不是唯一键(例如Super锁键与+组合相关L。当
xev
用于尝试查找锁键 keycode 时,它会返回和Superkeycode L,您只需xev
逐行解释输出即可。为了@Bahax和@约翰·芬根: Shift+F10是上下文菜单键,它不适用于所有应用程序,也不提供与 相同的功能Menu。如果您在文件资源管理器中选择一个文件并按下 文件本身的上下文菜单,则应该会弹出该文件本身的上下文菜单,而使用+组合Menu则不会发生这种情况,它会为窗口提供上下文菜单。ShiftF10
@Danial Behzadi采用与第二项中类似的方法,但通过按键模拟器将键盘组合链接到一个键,它会将该键链接到 +Shift并F10提供相同的结果。
有效的答案
重要的是要考虑到 ThinkPad 键盘上不存在的键是Menu(这是它的名字),如下图所示:
尽管密钥不存在,但它的密钥代码应该存在于您的计算机中,您可以通过打印密钥代码表来找到它,xmodmap -pke | grep Menu
该表应该会给您类似如下的内容:
考虑到这一点,安装xautomation
(以便用于xte
按键模拟)如下@Danial Behzadi回答:
sudo apt-get install xautomation
并创建自定义快捷方式,在扳机按下您想要作为快捷方式的键,然后Action
粘贴xte 'key Menu'
。申请并测试。
答案4
经过几个小时的测试和失败后,我终于找到了解决方法:D
首先安装 xautomation:
sudo apt-get install xautomation
然后转到 Ubuntu 系统设置中键盘部分的快捷键选项卡。首先转到屏幕截图条目并将操作重新映射到另一个键或禁用它们(如果需要)。我用 Thinkpad 黑色按钮(Launch1)替换了 PrtSc(打印)键。
现在转到“自定义快捷方式”部分并添加快捷方式。将其命名为您喜欢的任何名称,例如菜单。在命令字段中插入以下内容:
xte 'keydown Shift_L' 'key F10' 'keyup Shift_L'
工作完成了!它就像一个奇迹 ;)