การสลับคีย์ AltGr และ Space ใน Kali - Firefox จะไม่ได้รับผลกระทบ
หลังจากที่พยายามหลายSpaceและAltGrความคิดที่สำคัญแมปเปลี่ยนxkb
รูปลักษณ์ที่มีแนวโน้มมากที่สุด ฉันอ่านและใช้แนวคิดเหล่านี้ที่เกี่ยวข้องกับxkb
: ทำการ
แมปคีย์ altgr ใหม่เป็น AC10 ใน XKB
ฉันจะทำการแมปคีย์คีย์บอร์ดได้อย่างไร
จากการมองครั้งแรกการแก้ไขของฉันดูเหมือนจะใช้ได้ในโปรแกรมแก้ไขข้อความและในเทอร์มินัล ( Spaceสัญลักษณ์ถูกพิมพ์เมื่อAltGrกดแป้น) อย่างไรก็ตามใน Firefox จะไม่ทำงาน เมื่อมองอย่างใกล้ชิดมากขึ้นฉันสังเกตเห็นว่าในการผสมคีย์แอปพลิเคชันทั้งสามพร้อมกับการAltGrทำงาน (ราวกับว่าไม่มีการแมปใหม่) ยกเว้นในเทอร์มินัลและในโปรแกรมแก้ไขข้อความชุดค่าผสมจะพิมพ์อักขระเว้นวรรคเพิ่มเติม เช่นในเทอร์มินัลและใน FireFox ชุดค่าผสมAltGr+ จะFเปิดเมนูไฟล์และในเทอร์มินัลจะมีการพิมพ์อักขระช่องว่าง
ฉันเสียและผมก็ไม่ได้ใช้Space AltGrฉันแค่ต้องการสลับฟังก์ชันการทำงานทั้งหมด ฉันขาดอะไรไป? (ฉันใช้ Kali Linux)
นี่คือสิ่งที่ฉันทำ:
1.
เปิดแล้ว/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.
Restarted
ข้อมูลเพิ่มเติม (หลังจากการเปลี่ยนแปลงตามรายการด้านบน)
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
ฉันไม่พบข้อมูลอ้างอิงใด ๆ ที่พิสูจน์ได้ว่าสิ่งที่คุณเสนอไม่ควรทำงานบน Firefox ในขณะที่ดูเหมือนว่า Chromium (ดังนั้น Chrome) ไม่ได้อาศัย xkeymaps: เป็นตัวเลือกที่กำลังพัฒนาซึ่งรวมโปรแกรมไว้ใน ChromeOS ได้ดีขึ้น ดังนั้นจึงไม่รองรับการรีแมประบบบางอย่าง
การแก้ไขที่ได้ผลสำหรับฉันคือทำการแมปรหัสคีย์ใหม่ที่ระดับเคอร์เนล เพื่อให้บรรลุสิ่งนี้ฉันได้รวบรวมรหัสสแกน (รหัสฮาร์ดแวร์ของคีย์) และรหัสคีย์ (สัญลักษณ์ที่มีการแมป) สำหรับทั้งช่องว่างและ altGr:
# to collect scan-codes
sudo showkey -s
# space press: 0x39
# altGr press: 0xe0 0x38
# to collect key-codes
sudo showkey
# space press: 57
# altGr press: 100
เท่าที่ฉันเข้าใจคุณต้องการแมป altGr ใหม่เป็นช่องว่างเนื่องจาก Spacebar ของคุณเสียดังนั้น:
sudo setkeycodes e038 57
ควรทำเคล็ดลับ
ในการทำให้สิ่งนี้เป็นแบบถาวรภายใต้ Kali Linux คุณต้องแก้ไขไฟล์ xinit เริ่มต้น/etc/xdg/xfce4/xinitrc
โดยจัดการ~/.xinitrc
และแทรกsudo setkeycodes e038 57
ก่อนคำสั่ง if ที่มีexec xfce4-session
; บนไฟล์เริ่มต้น Kali 20.04 ถ้าคำสั่งนี้อยู่ในบรรทัด 86
โปรดทราบว่าสิ่งนี้จำเป็นต้องเปิดใช้งาน sudo โดยไม่ต้องใช้รหัสผ่าน ) แต่เท่าที่ฉันจำได้นี่เป็นตัวเลือกเริ่มต้นใน Kali แล้ว