2

I've recently equipped my OpenSuSE 15.2 with KDE 5 with a Sun Type 7 keyboard and now would like to use the function keys on its left edge for a variety of system-wide shortcuts. The only issue is that in the shortcut list of KDE's control center, some of these keys are simply ignored:

Shortcut key selector

The Help, Cut, Copy, Paste, and Open keys are recognised as such, whereas Cancel, Redo, Undo, Properties, Foreground, and Find are not, and I don't know why. All of them emit their own scancodes, and xkb maps them to the corresponding key symbols. Here is, for instance, what the Properties key emits (output from 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

What's wrong with these keys? Here is my xkb config for your reference:

╭─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)

UPDATE: I've looked into the current xkb config to find out that in the symbols/inet file, there is a complete block devoted to the proprietary Sun Type 6/7 function keys:

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              ]       };
};

This means that the keycodes and symbols are registered in xkb the right way, but unfortunately, it's KDE's control center, which ignores the Sun-specific keysyms (see the comments above). Does that mean that I'll have to file a ticket with the KDE guys?

5
  • 1
    There are at least two sets of kb mappings for sun keyboards, and both of them are buggy for type 7 keyboards. I've been meaning to look into how to fix that. The sun compat set lets all the function keys on the left work but breaks media keys.
    – user10489
    Commented Jul 22, 2021 at 23:18
  • In xkb/keycodes/evdev, a whole section is devoted to Solaris compatibility: Keycodes #121 thru #124 (media keys in the upper right corner) as well as #136 thru #146 (function keys near the left edge) are mentioned there, but I still don't understand why the media keys and some of the left-edge keys (#141 thru #146) do work with KDE whereas the other ones do not.
    – Neppomuk
    Commented Jul 23, 2021 at 20:46
  • On my system, the correct file is xkb/keycodes/sun
    – user10489
    Commented Jul 24, 2021 at 16:21
  • I have already changed the keyboard model to "Sun Type 6/7 (European)" in the KDE system settings, but no use: I still can't use the abovementioned keys for KDE shortcuts.
    – Neppomuk
    Commented Jul 26, 2021 at 19:56
  • @user10489 I've already given the config another try by switching from Generic PC Keyboard (104/105 keys) to Sun Type 6/7 (European), but this broke the Compose key, which suddenly became the Menu key.
    – Neppomuk
    Commented Aug 1, 2021 at 15:55

2 Answers 2

1

There's two options for the Sun 7 keyboard provided by default

  • The default Sun 7 mapping uses the key bindings you found that neither KDE nor Gnome recognize for Cancel Redo SunProps Undo SunFront
  • The suncompat option binds all the left keys to function keys, but overlaps those with the top row function keys and binds XF86AudioMute XF86AudioLowerVolume XF86AudioRaiseVolume XF86PowerOff to symbols prefixed with Sun that neither KDE nor Gnome recognizes.

So both of the default configurations are buggy in different ways. There are 3 possible fixes for this:

  • use xmodmap to remap the keys correctly, but this is obsolete and is stepped on by multiple things in KDE / Gnome
  • Create a new xkb binding that is correct and submit it as a bug patch (I've been meaning to do this but haven't gotten around to it -- maybe soon, and I'll update things here if I do)
  • Submit a bug report for KDE and Gnome to recognize the missing symbols
0

After having received a handful of good hints (thank you!), I found out that it's the key symbols in the Evdev Standardized Keycodes section of the symbols/inet file, which cause trouble with KDE: Most symbols, which do not start with XF86, are ignored by KDE for some mysterious reason (a bug maybe?), so I simply replaced them with some already existing XF86 key symbols, which suit my needs best. For instance, I replaced the Cancel keysym of the <STOP> keycode with XF86Stop. Then, the key is recognised by KDE's hotkey definition dialog.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .