Kali'de AltGr ve Space tuşlarını değiştirme - Firefox etkilenmez
Birkaç kez denedikten Spaceve AltGranahtar yeniden eşleme fikirleri aldıktan sonra , değişen xkb
görünümler en umut verici. Aşağıdakilerle ilgili bu fikirleri okudum ve kullandım xkb
:
Altgr anahtarını XKB'de AC10 ile
yeniden eşleştir Klavye tuşlarını nasıl yeniden eşleştirebilirim?
İlk bakışta düzeltmelerim metin düzenleyicide ve terminalde çalışıyor gibi görünüyor ( tuşa basıldığında Spacesembol basılıdır AltGr). Ancak, Firefox'ta çalışmıyor. Daha yakından baktığımda AltGr, terminalde ve metin düzenleyicide kombinasyonun ek olarak boşluk karakterini basması dışında , üç uygulamada da tuş kombinasyonlarının (sanki yeniden eşleştirme yapılmamış gibi) çalıştığını fark ettim . Örneğin, terminalde ve FireFox'ta AltGr+ kombinasyonu Dosya menüsünü Façar ve terminalde ayrıca bir boşluk karakteri yazdırılır.
Benim Spacekırık ve kullanmıyorum AltGr. Sadece işlevlerini tamamen değiştirmek istiyorum. Neyi kaçırıyorum? (Kali Linux kullanıyorum.)
Yaptığım şey buydu:
1.
Açıldı Yorum /usr/share/X11/xkb/symbols/pc
2.
satırını aşağıdaki satırla değiştirdim:
// key <SPCE> { [ space ] };
key <SPCE> { [ ISO_Level3_Shift ] };
3.
Şu satırlar eklendi:
// Additionally added
key <RALT> { [ 32 ] };
4.
Kaydedilen pc
dosyayı. Yeniden Başlatıldı çalıştıran önbelleği
5.
temizledixkb
rm -rf /var/lib/xkb/*
6.
Ek bilgiler (yukarıda listelenen değişikliklerden sonra).
Tam güncel pc
dosya:
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
( AltGrbasın ve bırakın):
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
Klavyemin Spaceanahtarı bozuk olduğu için gösteremiyorum xev
.
Yanıtlar
Aslında bununla bile çalışmasını sağladım xkeymap
, burada farklı bir cevap olarak bırakıyorum çünkü yöntem önceki çözümümden kesinlikle farklı.
Belki bazı AltGrkullanım durumlarını kaçırdınız .
Mimik ayarlarınıza çalışıyorum, ben komutuyla geçerli yapılandırma dosyası ihraç ettik xkbcomp $DISPLAY current.xkb
tüm kaldırarak ve düzenleseniz ISO_Level3_Shift
, LVL3
ve Mod5
olayları.
Kesinlikle, sildiğim şey:
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> };
Sonra ekledim:
key <LVL3> {[space]};
key <RALT> {[space]};
Bu düzenlenmiş konfigürasyon yüklenerek test edilebilir.
xkbcomp new_conf.xkb $DISPLAY
Chromium'un (ve dolayısıyla Chrome'un) xkeymaps'e dayanmadığı görülürken, önerdiğiniz şeyin Firefox'ta çalışmaması gerektiğini kanıtlayan herhangi bir referans bulamadım: Bu, programı ChromeOS ile daha iyi entegre eden gelişmekte olan bir seçimdir . Bu nedenle bazı sistem yeniden eşlemeleri desteklenmeyebilir.
Benim için işe yarayan bir düzeltme, anahtar kodlarını çekirdek düzeyinde yeniden eşleştirmektir. Bunu başarmak için, hem boşluk hem de altGr için tarama kodları (anahtarın donanım kimliği) ve anahtar kodları (eşleştirildikleri sembol) topladım:
# 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
Anladığım kadarıyla altGr'yi boşluğa yeniden eşlemek istiyorsunuz çünkü boşluk çubuğunuz bozuk, bu nedenle:
sudo setkeycodes e038 57
hile yapmalı.
Kali Linux altında bu kalıcı hale getirmek için, varsayılan xinit dosyasını düzenlemek zorunda /etc/xdg/xfce4/xinitrc
bunu başa çıkma tarafından, ~/.xinitrc
ve ekleme sudo setkeycodes e038 57
içeriyorsa deyimi önce exec xfce4-session
; Kali 20.04 varsayılan dosyasında, bu if ifadesi 86. satırdadır.
Bunun, sudo'yu şifre olmadan etkinleştirmeyi gerektirdiğini unutmayın ), ancak hatırlayabildiğim kadarıyla, bu zaten Kali'de varsayılan seçenektir.