Sun Type 7キーボード+ KDEホットキー:コントロールセンターが左端のほとんどのファンクションキーを無視するのはなぜですか?

Sun Type 7キーボード+ KDEホットキー:コントロールセンターが左端のほとんどのファンクションキーを無視するのはなぜですか?

私は最近、OpenSuSE 15.2にKDE 5とSun Type 7キーボードを搭載しており、左端にあるファンクションキーを使用してさまざまなシステム全体のショートカットを使用したいと思います。唯一の問題は、KDE ​​コントロールセンターのショートカットリストでこれらのキーの一部が無視されることです。

ホットキーセレクター

ヘルプ、切り取り、コピー、貼り付け、開くキーはそのように認識されますが、キャンセル、やり直し、元に戻す、プロパティ、Outlook、検索が認識されない理由がわかりません。これらはすべて独自のスキャンコードをエクスポートし、それらを対応する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正しい方法で登録されていることを意味しますが、残念ながら、Sun固有のキーシンボルを無視するのはKDEコントロールセンターです(上記の説明を参照)。これはKDEの人々にチケットを提出する必要があるという意味ですか?

答え1

Sun 7キーボードには、基本的に2つのオプションがあります。

  • デフォルトのSun 7マッピングは、KDEまたはGnomeが認識しないキーバインディングを使用します。Cancel Redo SunProps Undo SunFront
  • このオプションは、すべての左キーをファンクションキーにバインドしますが、ファンクションキーの一番上の行と重なり、suncompatKDEまたはGnomeで認識されないXF86AudioMute XF86AudioLowerVolume XF86AudioRaiseVolume XF86PowerOffプレフィックスシンボルにバインドします。Sun

したがって、両方の基本構成には異なる方法でバグがあります。これには3つの修正方法があります。

  • 以下を使用してxmodmapキーを正しく再マップします。
  • 新しい正しいxkbバインディングを作成し、それをバグパッチとして送信します。 (これをやろうとしましたが、まだ解決できませんでした。近いうちにここで更新します。)
  • 欠落しているシンボルを識別するKDEとGnomeのバグレポートを送信する

答え2

いくつかの良いヒントを受け取った後(ありがとう!)KDEで問題を引き起こすことはEvdev Standardized Keycodesファイルセクションの重要なシンボルであることがわかりました。ほとんどの記号は実際にsymbols/inetいいえで始まるXF86のは不明な理由で(おそらくバグでしょうか?)KDEでは無視されるので、私のニーズに最もよく合う既存のXF86キーシンボルに置き換えました。たとえば、キーコードCancelのキー記号<STOP>をに置き換えましたXF86Stop。その後、KDEのショートカット定義ダイアログがキーを認識しました。

関連情報