Keyboard-Shortcuts
Sun Type 7 鍵盤 + KDE 快捷鍵:為什麼控制中心忽略了左側邊緣的大部分功能鍵?
我最近為我的 OpenSuSE 15.2 配備了 KDE 5 和 Sun Type 7 鍵盤,現在想使用其左側邊緣的功能鍵來實現各種系統範圍的快捷方式。唯一的問題是,在 KDE 控制中心的快捷方式列表中,其中一些鍵被簡單地忽略了:
Help、Cut、Copy、Paste 和 Open 鍵被辨識為這樣,而 Cancel、Redo、Undo、Properties、Foreground 和 Find 不是,我不知道為什麼。它們都發出自己的掃描碼,並將
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 人員送出一張票?
在收到一些好的提示(謝謝!)後,我發現是文件
Evdev Standardized Keycodes
部分中的關鍵符號symbols/inet
導致 KDE 出現問題:大多數不以 開頭的符號XF86
在某些情況下會被 KDE 忽略神秘的原因(可能是一個錯誤?),所以我只是用一些已經存在的 XF86 鍵符號替換它們,這最適合我的需要。例如,我將鍵碼Cancel
的鍵符替換為. 然後,該鍵被 KDE 的熱鍵定義對話框辨識。<STOP>``XF86Stop
Sun 7 鍵盤預設提供兩個選項
- 預設的 Sun 7 映射使用您發現 KDE 和 Gnome 都無法辨識的鍵綁定
Cancel
Redo
SunProps
Undo
SunFront
- 該
suncompat
選項將所有左鍵綁定到功能鍵,但與頂行功能鍵重疊,並綁定XF86AudioMute
XF86AudioLowerVolume
XF86AudioRaiseVolume
XF86PowerOff
到前綴為Sun
KDE 和 Gnome 均不辨識的符號。因此,這兩種預設配置都以不同的方式存在缺陷。對此有 3 種可能的修復方法:
- 用於
xmodmap
正確重新映射鍵,但這已經過時並且被 KDE / Gnome 中的多個東西踩到了- 創建一個正確的新 xkb 綁定並將其作為錯誤更新檔送出(我一直打算這樣做但還沒有解決它 - 可能很快,如果我這樣做,我會在這裡更新內容)
- 為 KDE 和 Gnome 送出錯誤報告以辨識失去的符號