私は最近、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
- このオプションは、すべての左キーをファンクションキーにバインドしますが、ファンクションキーの一番上の行と重なり、
suncompat
KDEまたは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のショートカット定義ダイアログがキーを認識しました。