Hoán đổi các phím AltGr và Space trong Kali - Firefox không bị ảnh hưởng
Sau khi thử một số ý tưởng ánh xạ lại Spacevà AltGrquan trọng, việc thay đổi có xkb
vẻ hứa hẹn nhất. Tôi đã đọc và sử dụng những ý tưởng này liên quan đến xkb
:
Sửa lại phím altgr thành AC10 trong XKB
Làm cách nào để sửa lại các phím bàn phím?
Ngay từ cái nhìn đầu tiên, các chỉnh sửa của tôi dường như hoạt động trong trình soạn thảo văn bản và trong thiết bị đầu cuối ( Spacebiểu tượng được in trên AltGrphím bấm). Tuy nhiên, trong Firefox, nó không hoạt động. Xem xét kỹ hơn, tôi nhận thấy rằng trong cả ba tổ hợp phím ứng dụng với AltGrcũng hoạt động (như thể không có ánh xạ lại nào được thực hiện), ngoại trừ trong thiết bị đầu cuối và trong trình soạn thảo văn bản, tổ hợp này sẽ in thêm ký tự khoảng trắng. Ví dụ: trong terminal và trong FireFox, tổ hợp AltGr+ Fmở menu File và trong terminal cũng in một ký tự khoảng trắng.
Của tôi Spacebị hỏng và tôi không sử dụng AltGr. Tôi chỉ muốn hoán đổi hoàn toàn chức năng của chúng. Tôi đang thiếu gì? (Tôi sử dụng Kali Linux.)
Đây là những gì tôi đã làm: Đã
1.
mở /usr/share/X11/xkb/symbols/pc
2.
Đã thay đổi dòng nhận xét bằng dòng bên dưới:
// key <SPCE> { [ space ] };
key <SPCE> { [ ISO_Level3_Shift ] };
3.
Đã thêm những dòng này:
// Additionally added
key <RALT> { [ 32 ] };
4.
Đã lưu pc
tệp.
5.
Đã xóa xkb
bộ nhớ cache đang chạy Đã rm -rf /var/lib/xkb/*
6.
khởi động lại
Thông tin bổ sung (sau những thay đổi được liệt kê ở trên).
pc
Tệp hiện tại đầy đủ :
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
( AltGrnhấn và thả):
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
Vì phím của bàn phím của tôi Spacebị hỏng, tôi không thể hiển thị nó xev
.
Trả lời
Tôi thực sự đã làm cho nó hoạt động ngay cả với xkeymap
, tôi để nó ở đây như một câu trả lời khác vì phương pháp hoàn toàn khác với giải pháp trước đây của tôi.
Có thể bạn đã bỏ lỡ một số lần AltGrsử dụng.
Đang cố gắng để thiết lập bắt chước bạn, tôi đã xuất khẩu các tập tin cấu hình hiện tại với lệnh xkbcomp $DISPLAY current.xkb
và chỉnh sửa nó bằng cách loại bỏ tất cả ISO_Level3_Shift
, LVL3
và Mod5
lần xuất hiện.
Chính xác, những gì tôi đã xóa là:
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> };
Sau đó, tôi đã chèn:
key <LVL3> {[space]};
key <RALT> {[space]};
Cấu hình đã chỉnh sửa này có thể được kiểm tra bằng cách tải nó bằng
xkbcomp new_conf.xkb $DISPLAY
Tôi không tìm thấy bất kỳ tài liệu tham khảo nào chứng minh rằng những gì bạn đã đề xuất không hoạt động trên Firefox, trong khi có vẻ như Chromium (và do đó là Chrome) không dựa vào xkeymaps: đó là một lựa chọn đang phát triển để tích hợp chương trình tốt hơn trong ChromeOS. Do đó, một số ánh xạ hệ thống có thể không được hỗ trợ.
Một bản sửa lỗi phù hợp với tôi là remap các mã khóa ở cấp hạt nhân. Để đạt được điều này, tôi đã thu thập mã quét (ID phần cứng của khóa) và mã khóa (ký hiệu mà chúng được ánh xạ) cho cả không gian và 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
Theo như tôi hiểu, bạn muốn hoán đổi lại altGr thành khoảng trắng vì phím cách của bạn bị hỏng, do đó:
sudo setkeycodes e038 57
nên làm thủ thuật.
Để thực hiện điều này vĩnh viễn trong Kali Linux, bạn phải chỉnh sửa tệp xinit mặc định /etc/xdg/xfce4/xinitrc
, bằng cách sao chép nó ~/.xinitrc
và chèn sudo setkeycodes e038 57
trước câu lệnh if chứa exec xfce4-session
; trên tệp mặc định Kali 20.04, câu lệnh if này nằm trên dòng 86.
Lưu ý rằng điều này yêu cầu bật sudo mà không cần mật khẩu ), nhưng theo tôi có thể nhớ lại, đây đã là tùy chọn mặc định trong Kali.