当前位置: 首页>>技术问答>>正文


如何重新映射键盘键?

,

问题描述

我正在寻找重新映射密钥的一般说明。

有人能告诉我如何将F9重新映射到PrtScrF10ScrollLock按钮吗?

我在这里查看了每个帖子,没有一个建议有效。

我正在使用瑞典语键盘设置和Ubuntu 12.04。

最佳解决思路

这个答案主要是使用此Ask Ubuntu answer的前三个步骤以及它链接/引用的Ubuntu Forums thread中的信息来构成的。这个other Ask Ubuntu answer非常有帮助。所以归功于NES,llazarte,bodhi.zazen和Argusvision。

简单地交换两个键功能:从终端运行xev,然后按F9,这将给出类似的东西

keyboard-layout,ubuntu

为PrtSc做同样的事情并没有为我提供xev中的任何输出(或者我找不到”KeyPress event”)所以我使用了Argusvision的建议在所有设置中使用自定义快捷键,但这样做是为了通过重新分配为禁用PrtSc作为屏幕截图按钮Shift + Alt然后再次尝试按下,这给了我xev中PrtSc的键码107,就像这样

keyboard-layout,ubuntu

重复所有四个键的过程给了我

  • F9 =键码75

  • PrtSc =键码107,动作打印

  • F10 =键码76

  • Scroll Lock =键码127,动作暂停

要更改按键功能,我们需要知道按下的NEW键的键码和OLD的”action”或该功能的现有键。

现在我们已经有了用于识别密钥的密钥代码,我们现在通过使用xmodmap使系统完成我们想要的工作,因为我们知道F9具有“密钥代码75”而PrtSc具有”Print”的动作我们需要做的就是

xmodmap -e "keycode 75 = Print"

使F9键的行为就像按下了PrtSc键一样。即,键码保持不变,但按下F9键会产生不同的结果。

使用xevScroll Lock也给出了

keyboard-layout,ubuntu

确认Scroll Lock密钥的”action”为”Pause”,这样可以使F10充当Scroll Lock

xmodmap -e "keycode 76 = Pause"

应该给出理想的结果。

这是直到您注销或关闭等,所以我们在确认命令后必须做什么

xmodmap -e "keycode 75 = Print"
xmodmap -e "keycode 76 = Pause"

给出所需的结果是SysRec,它被修改为PrtSc并交换其他按钮,因此我们没有相同键操作的多个实例。添加

xmodmap -e "keycode 107 mod1 = F9 Sys_Req"

应该将F9交换到PrtSc再次保留修饰的SysReq(Alt + PrtSc),我们可以使用xev来帮助验证这一点。

交换Scroll LockF10按钮更容易

xmodmap -e "keycode 127 = F10"

确保运行后确认

xmodmap -e "keycode 75 = Print"
xmodmap -e "keycode 107 mod1 = F9 Sys_Req"
xmodmap -e "keycode 76 = Pause"
xmodmap -e "keycode 127 = F10"

确实做了预期的事情剩下要做的就是在启动时发生这种情况。要做到这一点

xmodmap -pke|egrep  -e '(F9|Print)'

这给了我

keyboard-layout,ubuntu

我们只对密钥代码75和107感兴趣。为此做同样的事情

xmodmap -pke|egrep  -e '(F10|Pause)'

这给了我

keyboard-layout,ubuntu

我们只对密钥代码76和127感兴趣。

使用您喜欢的文本编辑器复制创建一个新的文本文档并粘贴相关信息

keycode  75 = Print NoSymbol Print
keycode 107 = F9 Sys_Req F9 Sys_Req
keycode  76 = Pause NoSymbol Pause
keycode 127 = F10 NoSymbol F10

将文件命名为.Xmodmap并将其保存在主目录中将允许您只需在重新启动后登录即可运行更改。

次佳解决思路

对于较新版本的Ubuntu,Xmodmap可以正常工作,但重新启动后,您将丢失键映射!相反,我所做的是编辑xbd文件(/usr /share /X11 /xkb /symbols /pc)。

在这种情况下,您将添加以下条目:

key <FK09> { [Print] };
key <FK10> { [Scroll_Lock] };

然后清除xkb设置缓存:

rm -rf /var/lib/xkb/*

重新启动后,您的密钥将被核心映射。如果您需要更多帮助,请参阅remapping keys in Ubuntu 15.04上的帖子

第三种解决思路

转到System Settings > keyboard > Custom Shortcuts。在这里,您可以为任何键或一组键分配命令。单击添加(+)按钮。在弹出的窗口中,Name = Print Screen; Command = gnome-screenshot。创建它之后,单击名称右侧的行,其中显示”Disabled”。这应该改为”New Accelorator”只需按F9即可。

仍在寻找滚动锁定。

After a little looking, I found an answer for scroll lock. I got started on this answer from what I found here. You should be able to apply it to any set of keys using xmodmap from the terminal. Edit: You can also read more about Xmodmap here

看看xmodmap -pke | grep F10的输出。我的是:

keycode  76 = F10 F10 F10 F10 F10 F10 XF86Switch_VT_10  

这意味着我的F10密钥是keycode 76。您可能会因为使用不同的布局而有所不同。

所以我应该能够使用以下命令为F10分配滚动锁:

xmodmap -e "keycode 76 = Scroll_Lock"  

您需要插入为F10密钥找到的”keycode”。

您还可以通过man xmodmapxmodmap --help查看其他选项。例如,xmodmap -pke将键映射表列为表达式。这样,您也可以找到分配给其他键的表达式。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/2422.html,未经允许,请勿转载。