如何让我的 Sun Type 7 键盘上的额外键在 kubuntu 18.04 中发挥作用?

如何让我的 Sun Type 7 键盘上的额外键在 kubuntu 18.04 中发挥作用?

我在这里提出并回答我自己的问题,希望它对其他人有用,因为我花了很长时间才找到解决方案!

我有一个 Sun Microsystems Type 7 键盘,右侧有一组 11 个额外的键,我希望能够对它们进行编程,以便在 kubuntu 中执行一些有用的操作。但是,当系统设置正在等待要编程的键的按键时,当我按下大多数键时,它们都没有反应。例外是剪切、复制和粘贴:我可以为这三个键分配 Ctrl+X、Ctrl+C 和 Ctrl+C,它们通常在应用程序中工作(并且,当我在系统设置中按下它们时,甚至会显示正确的键名)。

那么如何让其他特殊键被识别呢?

答案1

首先,我注意到系统设置/输入设备/键盘/键盘型号中列出了各种 Sun 键盘。因此,我选择了英国布局的 Type 7 键盘。然后我使用xev并注意到,当我按下任何特殊键时,它们都会被识别,并显示键码、正确名称和键符。此外,查看各种 X11 键盘文件后,很明显 Sun 键盘支持肯定存在,至少在 X 中是这样的。

经过一番折腾,我最终决定xmodmap将高数字功能键值分配给特殊键。我将命令放在我称为的脚本文件中sunkeys,其中包含:

#!/bin/bash

# Assign F13 to F23 to the special extra Sun keyboard keys so that an action
# can be assigned to them. But Cut, Copy and Paste seem to work anyway.

if [[ -n "$1" ]]; then
  sleep "$1"
fi

setxkbmap -option ctrl:ralt_rctrl # Right Alt === Right Ctrl

xmodmap -e "keycode 146 = F13" # Help
xmodmap -e "keycode 136 = F14" # Stop
xmodmap -e "keycode 137 = F15" # Again
xmodmap -e "keycode 138 = F16" # Props
xmodmap -e "keycode 139 = F17" # Undo
xmodmap -e "keycode 140 = F18" # Front
#xmodmap -e "keycode 141 = F19" # Copy
xmodmap -e "keycode 142 = F20" # Open
#xmodmap -e "keycode 143 = F21" # Paste
xmodmap -e "keycode 144 = F22" # Find
#xmodmap -e "keycode 145 = F23" # Cut

(我马上就谈到睡眠问题。)

功能键 F13 至 F23 不在键盘上,而是在 X 系统中,kubuntu 系统设置知道它们,当按下它们时,它允许将内容分配给它们。该setxkbmap行将右 AltGraph 键重新编程为右控制键。

但是,尽管sunkeys从命令行运行可以正确编程按键,但当我sunkeys在文件末尾放置时~/.profile,重新启动时按键并未编程。事实证明,出于某种原因,在运行之前需要延迟xmodmap,因此才出现sleep上述脚本中的业务。因此,在我的 ~/.profile 文件末尾,我现在有一行

~/bin/sunkeys 15 &

这会使 sunkeys 脚本在执行xmodmap命令之前休眠 15 秒。&行末的sunkeys告诉 shell 在休眠期间继续启动sunkeys。如果没有&,您在登录时输入密码,然后系统似乎会挂起 15 秒。

我现在让所有额外的键都发挥明显的实用功能。我将 Ctrl+S(在大多数应用程序中 = 保存)分配给大帮助键。并将 Ctrl++ 和 Ctrl+- 用于快速进出不明显的 Front 和 Props 键,因为它们彼此相邻。

作为奖励,Compose 键实际上做了它应该做的事情,不需要做任何进一步的改变:要输入,café我输入c a f Compose e '

更新:我做了一个快速测试,从 kubuntu 20.04 USB 启动,系统设置似乎可以看到大多数特殊键,并正确显示它们的名称,但 Front 和 Props 除外。所以当我最终升级时,我仍然会使用这种技术。

相关内容