วิธีการสลับคำสั่งและปุ่มควบคุมด้วย xkb ทีละขั้นตอน?


9

ฉันต้องการใช้แป้นพิมพ์อะลูมิเนียมแบบยาวของAppleกับปุ่มเปลี่ยนคำสั่งCmdและการควบคุม Ctrlนี่เป็นวิธีการทำทีละขั้นตอนใน Trusty Tahr (14.04) โดยใช้xkb?

หมายเหตุ: นี้แก้ปัญหาไม่ทำงานสำหรับฉันเป็นxkbแทนที่xmodmapใน13.04 หรือแม้ก่อนหน้านี้


1
วิธีนี้ไม่ได้ผลสำหรับฉัน มันน่าจะล้าสมัยไปแล้ว (จริง ๆ แล้วฉันค่อนข้างแน่ใจว่าไม่พบข้อมูลอ้างอิงในตอนนี้) ฉันลองก่อนโพสต์ นั่นเป็นเหตุผลที่ฉันระบุเวอร์ชันของ Ubuntu
Aleksandar Savkov

1
@WaldirLeoncio ฉันหวังว่านี่จะทำให้ชัดเจนว่าทำไมคำถามไม่ซ้ำกัน: askubuntu.com/questions/325272/ …
Aleksandar Savkov

คำตอบ:


8

คำตอบนี้จะขึ้นอยู่กับคำตอบที่ได้รับส่วนใหญ่ที่นี่ เหตุผลที่ฉันถามและตอบคำถามนี้อีกครั้งเป็นขั้นตอนสุดท้ายซึ่งไม่ได้อธิบายอย่างสมบูรณ์ สำหรับการอ่านเพิ่มเติมxkbดูที่นี่ , ที่นี่และที่นี่

  1. สร้างไฟล์ใน/usr/share/X11/xkb/symbols(อาจเป็น/etc/X11/xkb/symbols) เรียกaltwin2และมีการแม็พต่อไปนี้:

    // 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> };
    };
    
  2. แทรกบรรทัดต่อไปนี้ใต้option = symbolsส่วนใน/usr/share/X11/xkb/rules/evdev(ไม่ต้องสนใจคำเตือนในบรรทัดแรก):

    altwin2:cmd_n_ctrl               =       +altwin2(cmd_n_ctrl)
    
  3. เพิ่มตัวเลือกใหม่/usr/share/X11/xkb/rules/evdev.lstในส่วนoption:

    altwin2:cmd_n_ctrl    Win swapped with Ctrl
    
  4. หากคุณไม่ทราบว่าแฟ้มการกำหนดค่าแป้นพิมพ์ของคุณคือคุณสามารถแก้ไขได้โดยใช้dconf บรรณาธิการเพิ่ม"altwin2:cmd_n_ctrl"ในxkb-optionsภายใต้องค์กร :: คำพังเพย :: เดสก์ทอป :: การป้อนข้อมูลแหล่งที่มาตามที่แสดงไว้ที่นี่ หากคุณรู้ว่าไฟล์กำหนดค่าของคุณอยู่ที่ไหนคุณควรรวมตัวเลือกใหม่ในXkbOptionsฟิลด์ดังที่แสดงด้านล่าง:

    Section "InputClass"
            Identifier "keyboard-layout"
            Driver "evdev"
            MatchIsKeyboard "yes"
            Option "XkbLayout" "us, ru, ca, fr"
            Option "XkbOptions" "altwin2:cmd_n_ctrl"
    EndSection
    
  5. รีบูตหรือรีสตาร์ทlightdmเพื่ออัพเดตการเปลี่ยนแปลง:

    sudo restart lightdm
    

หมายเหตุ: หากมีการเปลี่ยนแปลงใด ๆ จะทำโดยตรงในรูปแบบไฟล์เช่นไม่ได้ใช้ตัวเลือกไฟล์ที่เก็บไว้ชั่วคราวใน/var/lib/xkb/ความต้องการที่จะถูกลบออกตามที่ระบุไว้ที่นี่


2
ควรเป็น!option = symbolsส่วนไม่ใช่options = symbols(ใช้เวลาค้นหา "options =" ​​เพื่อค้นหาส่วน)
Ben Davis

ดูเพิ่มเติมได้ที่นี่: reddit.com/r/Ubuntu/comments/8lnr8q/remapping_keys
Aleksandar Savkov

เช่นเดียวกับสิ่งต่าง ๆ ส่วนใหญ่ที่มี xkb และ xmodmap ไม่ทำงานอาจจะทำให้ระบบของฉันพังในทางอื่นฉันเบื่อกับอึนี้และฉันหวังว่า linux จะได้รับอึร่วมกับการทำแผนที่พื้นฐานและการผูกมัด
SEPH

โปรดจำไว้ว่านี่ถูกเขียนขึ้นในปี 2014 และไม่ได้ใช้กับการแจกแจงที่ทันสมัย
Aleksandar Savkov

3

ใน 16.04 นี่คือวิธีที่ฉันได้รับสิ่งนี้ในที่สุด Xmodmap ไม่สามารถทำงานได้อย่างเป็นสากลในแอพทั้งหมดเครื่องมือ gnome tweak ขาดฟังก์ชั่น dconf การแก้ไขการแลกเปลี่ยนคีย์ altwin2 แบบกำหนดเอง (เช่นคำตอบหลักที่นี่) ล้มเหลวดังนั้นฉันจึงฉีกผมออกจนกว่าจะรวมคำตอบหลายคำเข้าด้วยกัน และวิธีการแก้ปัญหาที่สง่างาม:

gksudo gedit /usr/share/X11/xkb/symbols/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      ]   };

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> {    [ Alt_L     ]   };
key <LWIN> {    [ Super_L       ]   };

key <RTSH> {    [ Shift_R       ]   };
key <RCTL> {    [ Alt_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, Control_L, Control_R    ]   };
//include "altwin(meta_alt)"
key <LALT> {    [ Control_L     ]   };
key <RALT> {    [ Control_R     ]   };
modifier_map Mod1   { Alt_L, Alt_R, Meta_L, Meta_R };

key <META> {    [ NoSymbol, Meta_L, Meta_R  ]   };
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 ] };
};

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        ]   };
};

บันทึก

rm -rf /var/lib/xkb/*

(ฉันไม่รู้ว่าจำเป็นต้องใช้สิ่งนี้หรือไม่ แต่ฉันทำ)

Reboot


ขอบคุณสำหรับสิ่งนั้น ฉันจะทดสอบเมื่อฉันย้ายไปยัง 16.04 ในอนาคตอันใกล้
Aleksandar Savkov

เพียงแค่ใช้สิ่งนี้กับการอัพเกรด 16.10 ของฉัน ทำงานได้ดีมาก
Tom Mercer

1
คำตอบที่ง่ายที่สุดทำงานได้อย่างมีเสน่ห์บน Fedora ของฉัน ขอบคุณ!
hakunin
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.