Sun Type 7 键盘 + KDE 快捷键:为什么控制中心忽略左侧边缘的大部分功能键?

Sun Type 7 键盘 + KDE 快捷键:为什么控制中心忽略左侧边缘的大部分功能键?

我最近为我的 OpenSuSE 15.2 配备了 KDE 5 和 Sun Type 7 键盘,现在想使用其左侧边缘的功能键来实现各种系统范围的快捷键。唯一的问题是,在 KDE 控制中心的快捷方式列表中,其中一些键被简单地忽略:

快捷键选择器

帮助、剪切、复制、粘贴和打开键被识别为这样,而取消、重做、撤消、属性、前景和查找则不然,我不知道为什么。它们都发出自己的扫描码,并将xkb它们映射到相应的按键符号。例如,以下是 Properties 键发出的内容(来自 的输出xev):

KeyPress event, serial 40, synthetic NO, window 0x7800001,
    root 0x561, subw 0x0, time 3103717, (-256,541), root:(1374,570),
    state 0x10, keycode 138 (keysym 0x1005ff70, SunProps), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

这些键有什么问题吗?这是我的xkb配置供您参考:

╭─jacek@epica ~  
╰─➤  setxkbmap -verbose 10
Setting verbose level to 10
locale is C
Trying to load rules file ./rules/evdev...
Trying to load rules file /usr/share/X11/xkb/rules/evdev...
Success.
Applied rules from evdev:
rules:      evdev
model:      pc102
layout:     de
variant:    pl
options:    terminate:ctrl_alt_bksp,altwin:meta_win,lv3:ralt_switch,compose:menu
Trying to build keymap using the following components:
keycodes:   evdev+aliases(qwertz)
types:      complete
compat:     complete
symbols:    pc+de(pl)+inet(evdev)+terminate(ctrl_alt_bksp)+altwin(meta_win)+level3(ralt_switch)+compose(menu)+terminate(ctrl_alt_bksp)
geometry:   pc(pc102)

更新:我查看了当前的xkb配置,发现该symbols/inet文件中有一个完整的块专用于专有的 Sun Type 6/7 功能键:

partial alphanumeric_keys
xkb_symbols "evdev" {
    key <MUTE>   {      [ XF86AudioMute         ]       };
    key <VOL->   {      [ XF86AudioLowerVolume  ]       };
    key <VOL+>   {      [ XF86AudioRaiseVolume  ]       };
    key <POWR>   {      [ XF86PowerOff          ]       };
    key <STOP>   {      [ Cancel                ]       }; // KDE ignores me!
    key <AGAI>   {      [ Redo                  ]       }; // KDE ignores me!
    key <PROP>   {      [ SunProps              ]       }; // KDE ignores me!
    key <UNDO>   {      [ Undo                  ]       }; // KDE ignores me!
    key <FRNT>   {      [ SunFront              ]       }; // KDE ignores me!
    key <COPY>   {      [ XF86Copy              ]       };
    key <OPEN>   {      [ XF86Open              ]       };
    key <PAST>   {      [ XF86Paste             ]       };
    key <FIND>   {      [ Find                  ]       };
    key <CUT>    {      [ XF86Cut               ]       };
    key <HELP>   {      [ Help                  ]       };
    key <LNFD>   {      [ Linefeed              ]       };
};

这意味着键码和符号已注册在xkb正确的方式注册的,但不幸的是,它是 KDE 的控制中心,它忽略了 Sun 特定的键符号(请参阅上面的评论)。这是否意味着我必须向 KDE 人员提交票据?

答案1

默认情况下为 Sun 7 键盘提供了两个选项

  • 默认的 Sun 7 映射使用您发现 KDE 和 Gnome 都无法识别的键绑定Cancel Redo SunProps Undo SunFront
  • suncompat选项将所有左键绑定到功能键,但与顶行功能键重叠,并绑定到KDE 和 Gnome 都无法识别的XF86AudioMute XF86AudioLowerVolume XF86AudioRaiseVolume XF86PowerOff前缀符号。Sun

因此,这两种默认配置都以不同的方式存在错误。对此有 3 种可能的修复方法:

  • 使用xmodmap正确地重新映射键,但这已经过时了,并且被 KDE / Gnome 中的多个东西踩踏
  • 创建一个新的正确的 xkb 绑定并将其作为错误补丁提交(我一直想这样做,但还没有抽出时间——也许很快,如果我这样做的话,我会在这里更新内容)
  • 提交 KDE 和 Gnome 的错误报告以识别丢失的符号

答案2

在收到一些好的提示(谢谢!)后,我发现它是Evdev Standardized Keycodes文件部分中的关键符号symbols/inet导致了 KDE 的问题:大多数符号,这确实不是以 , 开头XF86,由于某种神秘的原因(可能是一个错误?)被 KDE 忽略,所以我只是用一些已经存在的 XF86 键符号替换它们,这最适合我的需要。例如,我将键码Cancel的键符号替换<STOP>XF86Stop.然后,KDE 的热键定义对话框会识别该键。

相关内容