Kali-Linux
在 Kali 中交換 AltGr 和 Space 鍵 - Firefox 不受影響
在嘗試了幾個關鍵
Space
的AltGr
重新映射想法之後,改變xkb
看起來最有希望。我閱讀並使用了與以下相關的這些想法xkb
:Remap altgr key to AC10 in XKB
乍一看,我的更正似乎在文本編輯器和終端中有效(
Space
符號印在AltGr
按鍵上)。但是,在 Firefox 中它不起作用。仔細觀察,我注意到在所有三個應用程序中,組合鍵AltGr
也可以工作(好像沒有進行重新映射),除了在終端和文本編輯器中,組合額外列印空格字元。例如,在終端和 FireFox 中,組合AltGr
+F
打開文件菜單,在終端中也列印一個空格字元。我
Space
的壞了,我不使用AltGr
。我只想完全交換它們的功能。我錯過了什麼?(我使用 Kali Linux。)這就是我所做的:
1.
Opened/usr/share/X11/xkb/symbols/pc
2.
將註釋行更改為以下行:// key <SPCE> { [ space ] }; key <SPCE> { [ ISO_Level3_Shift ] };
3.
添加了這些行:// Additionally added key <RALT> { [ 32 ] };
4.
保存了pc
文件。
5.
清除xkb
記憶體執行rm -rf /var/lib/xkb/*
6.
重啟附加資訊(在上面列出的更改之後)。
完整的目前
pc
文件:default partial alphanumeric_keys modifier_keys xkb_symbols "pc105" { key <ESC> { [ Escape ] }; // The extra key on many European keyboards: key <LSGT> { [ less, greater, bar, brokenbar ] }; // The following keys are common to all layouts. key <BKSL> { [ backslash, bar ] }; // key <SPCE> { [ space ] }; key <SPCE> { [ ISO_Level3_Shift ] }; include "srvr_ctrl(fkey2vt)" include "pc(editing)" include "keypad(x11)" key <BKSP> { [ BackSpace, BackSpace ] }; key <TAB> { [ Tab, ISO_Left_Tab ] }; key <RTRN> { [ Return ] }; key <CAPS> { [ Caps_Lock ] }; key <NMLK> { [ Num_Lock ] }; key <LFSH> { [ Shift_L ] }; key <LCTL> { [ Control_L ] }; key <LWIN> { [ Super_L ] }; key <RTSH> { [ Shift_R ] }; key <RCTL> { [ Control_R ] }; key <RWIN> { [ Super_R ] }; key <MENU> { [ Menu ] }; // Beginning of modifier mappings. modifier_map Shift { Shift_L, Shift_R }; modifier_map Lock { Caps_Lock }; modifier_map Control{ Control_L, Control_R }; modifier_map Mod2 { Num_Lock }; modifier_map Mod4 { Super_L, Super_R }; // Fake keys for virtual<->real modifiers mapping: key <LVL3> { [ ISO_Level3_Shift ] }; key <MDSW> { [ Mode_switch ] }; modifier_map Mod5 { <LVL3>, <MDSW> }; key <ALT> { [ NoSymbol, Alt_L ] }; include "altwin(meta_alt)" key <META> { [ NoSymbol, Meta_L ] }; modifier_map Mod1 { <META> }; key <SUPR> { [ NoSymbol, Super_L ] }; modifier_map Mod4 { <SUPR> }; key <HYPR> { [ NoSymbol, Hyper_L ] }; modifier_map Mod4 { <HYPR> }; // End of modifier mappings. key <OUTP> { [ XF86Display ] }; key <KITG> { [ XF86KbdLightOnOff ] }; key <KIDN> { [ XF86KbdBrightnessDown ] }; key <KIUP> { [ XF86KbdBrightnessUp ] }; // Additionally added key <RALT> { [ 32 ] }; }; hidden partial alphanumeric_keys xkb_symbols "editing" { key <PRSC> { type= "PC_ALT_LEVEL2", symbols[Group1]= [ Print, Sys_Req ] }; key <SCLK> { [ Scroll_Lock ] }; key <PAUS> { type= "PC_CONTROL_LEVEL2", symbols[Group1]= [ Pause, Break ] }; key <INS> { [ Insert ] }; key <HOME> { [ Home ] }; key <PGUP> { [ Prior ] }; key <DELE> { [ Delete ] }; key <END> { [ End ] }; key <PGDN> { [ Next ] }; key <UP> { [ Up ] }; key <LEFT> { [ Left ] }; key <DOWN> { [ Down ] }; key <RGHT> { [ Right ] }; };
setxkbmap -print
:xkb_keymap { xkb_keycodes { include "evdev+aliases(qwerty)" }; xkb_types { include "complete" }; xkb_compat { include "complete" }; xkb_symbols { include "pc+us+inet(evdev)" }; xkb_geometry { include "pc(pc105)" }; };
xev
(AltGr
按下並釋放):KeyPress event, serial 34, synthetic NO, window 0x3400001, root 0x6cb, subw 0x0, time 1249191, (168,-8), root:(797,298), state 0x0, keycode 108 (keysym 0x20, space), same_screen YES, XLookupString gives 1 bytes: (20) " " XmbLookupString gives 1 bytes: (20) " " XFilterEvent returns: False KeyRelease event, serial 37, synthetic NO, window 0x3400001, root 0x6cb, subw 0x0, time 1249261, (168,-8), root:(797,298), state 0x8, keycode 108 (keysym 0x20, space), same_screen YES, XLookupString gives 1 bytes: (20) " " XFilterEvent returns: False
由於我的鍵盤
Space
鍵壞了,我無法顯示它的xev
.
實際上,即使使用
xkeymap
,我也可以使用它,我將其留在這裡作為不同的答案,因為該方法與我以前的解決方案完全不同。也許您錯過了一些
AltGr
使用情況。為了模仿您的設置,我使用命令導出了目前配置文件,
xkbcomp $DISPLAY current.xkb
並通過刪除所有ISO_Level3_Shift
,LVL3
和Mod5
出現來編輯它。準確地說,我刪除的是:
interpret ISO_Level3_Shift+AnyOf(all) { virtualModifier= LevelThree; useModMapMods=level1; action= SetMods(modifiers=LevelThree,clearLocks); };
interpret ISO_Level3_Shift+AnyOfOrNone(all) { action= SetMods(modifiers=LevelThree,clearLocks); };
key <LVL3> { type= "ONE_LEVEL", symbols[Group1]= [ ISO_Level3_Shift ] };
key <RALT> { type= "ONE_LEVEL", symbols[Group1]= [ ISO_Level3_Shift ] };
modifier_map Mod5 { <LVL3> };
然後我插入了:
key <LVL3> {[space]}; key <RALT> {[space]};
這個編輯的配置可以通過載入它來測試
xkbcomp new_conf.xkb $DISPLAY