在沒有 Xmodmap 的情況下將超級鍵映射到控制項
我一直在嘗試在 Macbook 上的 X 中切換我的超級鍵和控制鍵,並且成功了一半。如果可能的話,我想避免創建自定義 .Xmodmap,因為每次載入自定義地圖時都會彈出一個臨時的 100% cpu 錯誤(更不用說我遇到的一般使用 xmodmap 的各種警告) .
經過一番探勘,我最終將 Option “XkbOptions” “altwin:ctrl_win” 放在了我的 01-keyboard-layout.conf 文件中,這讓我走到了一半:例如,left 命令現在映射到 133 Control_L。但是,控制鍵保持不變。左控制,例如仍然映射到 37 Control_L。
瀏覽 evdev.lst (和一堆Google搜尋)發現沒有相關的 XkbOption 將控制鍵變成超級,現在我很卡住。
我現在正在閱讀 Doug Palmer 的An Unreliable Guide to XKB Configuration的瘋狂之處,但正如他所描述的那樣,它是地獄的墮落。
任何曾經嘗試過這種切換並知道完成它的確切規則/符號/鍵盤映射的人,您的幫助都會很棒。
謝謝!
好的,我終於讓它工作了。
首先,這兩個資源對於任何想要深入研究這個爛攤子的人來說都是驚人的:
http://madduck.net/docs/extending-xkb/ & http://www.charvolant.org/~doug/xkb/html/index.html
對於專門嘗試進行此切換的任何人,這就是我所做的:
- 在 /usr/share/X11/xkb/symbols 中為您的新映射創建一個文件 2) 將其放入其中:
// Control is SWAPPED with Win-keys partial modifier_keys xkb_symbols "cmd_n_ctrl" { key <LWIN> { [ Control_L ] }; key <RWIN> { [ Control_R ] }; key <LCTL> { [ Super_L ] }; modifier_map Control { <LWIN>, <RWIN> }; modifier_map Mod4 { <LCTL> }; };
3:編輯 /usr/share/X11/xkb/rules 中的 evdev 以包括:
altwin2:cmd_n_ctrl = +altwin2(cmd_n_ctrl)
(在選項 = 符號部分下)
4:將您的新選項添加到 evdev.lst(相同的目錄):
altwin2:cmd_n_ctrl
(在選項部分下)
5:現在編輯您的 01-Keyboard conf 文件以包含您創建的新選項。我的看起來像這樣:
Section "InputClass" Identifier "keyboard-layout" Driver "evdev" MatchIsKeyboard "yes" Option "XkbLayout" "us, ru, ca, fr" Option "XkbOptions" "altwin2:cmd_n_ctrl" EndSection
6:重新啟動,你應該很好去。
上述資源可以更好地解釋所有這些,或者您可能遇到的任何障礙。可能有更好的方法來做到這一點(可能不會改變 /usr/share 的內容),但到目前為止,這就是讓我開始並執行的原因。
希望能幫助困在這個地方的其他人!
以下解決方案比提問者的解決方案更簡單。(在戴爾上執行的 Ubuntu 14.04 上測試。)
1)在文件
/usr/share/X11/xkb/keycodes/evdev
中,交換要交換的鍵的掃描碼(數字)。注意:您的硬體可能針對不同的密鑰程式碼文件而不是evdev
.2)執行
sudo rm /var/lib/xkb/*.xkm
以清除xkb記憶體,然後重新啟動。