การผูก Super + C Super + V เพื่อคัดลอกและวาง


23

บางครั้งฉันก็สนใจที่จะเชื่อมโยงคีย์ Windows (Super_L) บนคีย์บอร์ดของฉันเพื่อคัดลอกและวางโดยไม่มีเหตุผลอื่นนอกจากความสะดวกและความสอดคล้องระหว่างเดสก์ท็อปของฉันกับ MacBook ของฉัน

ฉันคิดว่าฉันสนิทหลังจากอ่านเกี่ยวกับ xmodmap และดำเนินการต่อไปนี้:

$ # re-map Super_L to Mode_switch, the 3rd col in keymap table `xmodmap -pke`
$ xmodmap -e "keycode  133 = Mode_switch"

$ # map Mode_switch+c to copy
$ xmodmap -e "keycode  54 = c C XF86_Copy C"

$ # map Mode_switch+v to paste
$ xmodmap -e "keycode  55 = v V XF86_Paste V"

น่าเสียดายที่ XF86Copy และ XF86Paste ดูเหมือนจะไม่ทำงานเลย พวกเขาอยู่ในรายการ/usr/include/X11/XF86keysym.hและxevแสดงให้เห็นว่าลำดับคีย์ถูกตีความโดย X ว่า XF86Paste และ XF86Copy สัญลักษณ์เหล่านี้ใช้งานได้จริงหรือไม่? พวกเขาต้องมีการสนับสนุนระดับแอปพลิเคชันหรือไม่

คำตอบ:


18

การเชื่อมโยง Super ถึง Ctrl

แล้วการผูกWindows/Logo/Superปุ่มซ้ายของคุณเพื่อทำหน้าที่เป็นCtrlกุญแจอีกดอก?

คุณสามารถทำได้โดยใช้คำสั่ง xmodmap ต่อไปนี้:

remove mod4 = Super_L
keysym Super_L = Control_L
add Control = Control_L

สมมติว่าคุณบันทึกบรรทัดข้างต้นในขณะที่super_as_ctrl.xmodmapคุณสามารถทดสอบผลกระทบโดยการดำเนินการ

xmodmap super_as_ctrl.xmodmap

หากต้องการให้การเปลี่ยนแปลงเป็นไปอย่างถาวร (ยังคงอยู่ในการเข้าสู่ระบบ / รีบูตใหม่) ให้เปลี่ยนชื่อไฟล์เป็น.Xmodmapในโฮมโฟลเดอร์ของคุณ

(ข้างต้นได้รับการทดสอบบน Ubuntu 11.10 ระบบสด แต่มันควรจะเหมือนกันสำหรับลีนุกซ์รุ่นอื่น ๆ )


การปรับทางลัดคัดลอก / วางสำหรับโปรแกรมเทอร์มินัลของคุณ

มีผูกพันSuperไปCtrlตอนนี้คุณสามารถใช้Super-Cเพื่อคัดลอกเกือบทุกที่ ข้อยกเว้นทั่วไปคือโปรแกรมเทอร์มินัลของคุณ อย่างไรก็ตามคุณสามารถกำหนดทางลัดใหม่ได้ที่นั่น

ฉันพบว่าแม้จะgnome-terminalมีตัวเลือกนี้ในขณะนี้ (ฉันไม่ได้จนกว่าฉันจะคุ้นเคยCtrl-Shift-Cต่อไป) ในกรณีที่คุณใช้อันนั้นให้ไปEdit / Keyboard Shortcuts...ที่เมนูและกำหนดCtrl-Cให้คัดลอกและCtrl-Vวาง ควรคล้ายกันkonsoleเป็นต้น

และไม่ต้องกังวลคุณจะไม่สูญเสียความสามารถในการยกเลิกโปรแกรมโดยใช้ทางลัด หลังจากปฏิเสธทางลัดการคัดลอกสำหรับเทอร์มินัลคุณสามารถใช้Ctrl-Shift-Cเหมือนที่เคยใช้มาCtrl-Cก่อน เทอร์มินัลไม่แยกความแตกต่างที่นี่หากกด Shift หรือไม่ และทางลัดจะไม่ถูกจับอีกต่อไปสำหรับการคัดลอก อีกทางเลือกหนึ่งที่จะยุติการทางลัดอีกทางหนึ่งเนื่องจาก MountainX แนะนำในคำตอบของเขา


XF86 คัดลอก ฯลฯ ไม่ทำงาน

เกี่ยวกับสัญลักษณ์สำคัญสำหรับการคัดลอกและวาง: เห็นได้ชัดว่าไม่มีผลกระทบ ฉันทดสอบอย่างรวดเร็วโดยกำหนดการดำเนินการคัดลอกให้กับ Shift-ScrollLock (มันไม่ได้ใช้และฉันต้องการทดสอบด้วยคีย์ที่ไม่ใช่ตัวดัดแปลง):

xmodmap -e 'keycode 78 = Scroll_Lock XF86Copy Scroll_Lock'

กดมันไม่มีผลใด ๆ กับ XF86AudioMute อย่างไรก็ตามมันทำงานเมื่อกำหนดตัวอักษร 'a' ดังนั้นฉันเดาว่าจะมีปัญหาเฉพาะกับสัญลักษณ์คีย์พิเศษ XF86 เหล่านี้


3
น่าเสียดายที่แม้ว่าฉันจะผูก Super กับ Ctrl ฉันจะยังคงต้องใช้ Ctrl / Super + Shift + C เพื่อคัดลอกและวางภายในเทอร์มินัลซึ่งเป็นแรงจูงใจหลัก ขอบคุณที่ยืนยันว่าปุ่ม XF86 ไม่ทำงาน
เดี่ยว

โปรแกรมเทอร์มินัลใดที่คุณใช้ ฉันได้เพิ่มวิธีแก้ปัญหาที่ใช้งานได้กับ gnome-terminal อย่างน้อย และมันควรจะคล้ายกันสำหรับคนอื่น ๆ
zpea

4
การควบคุมการผูกกับ Meta ไม่เหมือนกับการเปลี่ยนแปลงทางลัดสำหรับการคัดลอก / วางเป็น Meta + c / v ฉันต้องการทำให้ MacOs ทางลัด kboard เหมือนกันบน Linux ดังนั้นคำตอบนี้ไม่ได้ยอดเยี่ยม ...
Sonique

1
Shift + ctrl + c หรืออะไรก็ตามที่เงอะงะเกินไปและเพิ่ง rebinding Super ไปที่ Ctrl จะส่งสัญญาณ kill ด้วย Super + c ดังนั้นมันจึงไม่แก้ปัญหานั้นมากนัก
rien333

ขั้นตอนแรกคือสิ่งที่ฉันทำเพื่อเปลี่ยนคำสั่ง super / command เป็น control ที่แก้ไขสิ่งส่วนใหญ่ - แต่ฉันยังต้องการ cmd-c และ ctrl-c มีฟังก์ชั่นต่าง ๆ แม้ว่า cmd หมายถึง ctrl ที่อื่น ไม่แน่ใจว่าฉันสามารถทำได้ด้วย xmodmap และทางลัดเฉพาะเทอร์มินัล
tedder42

9

หากคุณต้องการผูกเพียงไม่กี่ลำดับของแบบฟอร์ม Super + x, Super + c, Super + v ไปยังลำดับอื่นเช่น Ctrl + x, Ctrl + c, Ctrl + v เป็นต้นเพื่อให้ (ตามที่ต้องการ OP) โดยเฉพาะอย่างยิ่งลำดับ Super-key โดยทั่วไปจะแมปเพื่อตัดและวางโดยไม่กระทบการใช้งานอื่น ๆ ของปุ่ม Super ในระบบของคุณมันเป็นไปได้โดยใช้เพียงแค่ส่วนขยาย XKB ขั้นตอนด้านล่างแสดงขั้นตอนและให้ตัวอย่างที่แตกต่างกันสองอย่างของรายละเอียดสำหรับการตั้งค่าคีย์บอร์ดเริ่มต้นสองแบบ หวังว่าจะให้ข้อมูลเพียงพอที่จะปรับให้เข้ากับระบบของคุณ /usr/share/X11/xkbมันถือว่าคุณมีความสะดวกสบายในการสร้างและแก้ไขไฟล์ในระบบของคุณรวมทั้งคนที่อยู่ในสถานที่ระบบเช่น

  1. ตัดสินใจว่าคุณต้องการให้แผนภูมิการกำหนดค่า XKB ของคุณอยู่ที่ใด ขั้นแรกให้หาระบบหนึ่ง โดยทั่วไปแล้วจะอยู่ใน / usr / share / X11 / xkb และฉันไม่แน่ใจว่าจะค้นหามันได้อย่างไรหากไม่มี คุณสามารถค้นหาไดเรกทอรีของระบบที่ชื่อ "xkb" ได้ เมื่อใดก็ตามที่คุณพบมันคุณสามารถแก้ไขระบบได้หรือคุณสามารถใช้ไดเรกทอรีใด ๆ ที่คุณต้องการ ข้อดีของการใช้ไดเรกทอรีระบบคือคุณสามารถเรียกใช้การเปลี่ยนแปลงได้ง่ายขึ้น แต่ข้อเสียเปรียบก็คือการอัปเดตระบบในอนาคตอาจเขียนทับการเปลี่ยนแปลงของคุณ (คุณได้รับคำเตือน) ไม่ว่าในกรณีใดชื่อไฟล์ทั้งหมดที่กล่าวถึงในที่นี้จะสัมพันธ์กับไดเรกทอรีนี้ซึ่งฉันจะอ้างถึงเมื่อจำเป็นต้องใช้ $ XKBLOCAL $ และคำสั่งทั้งหมดถือว่าเป็นไดเรกทอรีปัจจุบันของคุณ

  2. กำหนดว่า XKB "ประเภท" ของคีย์คือปุ่มใดในปัจจุบันคือ x, c, v วิธีที่ง่ายที่สุดในการทำเช่นนี้คือผ่านคำสั่งxkbcomp -a $DISPLAY - | grep -C 6 c,(หมายเหตุเครื่องหมายจุลภาครวมอยู่ในรูปแบบโดยเจตนา) ในการตั้งค่าตัวอย่างแรกของฉันสิ่งนี้จะสร้าง:

    key <AB02> {
        type= "ALPHABETIC",
        symbols[Group1]= [               x,               X ]
    };
    key <AB03> {
        type= "ALPHABETIC",
        symbols[Group1]= [               c,               C ]
    };
    key <AB04> {
        type= "ALPHABETIC",
        symbols[Group1]= [               v,               V ]
    };
    key <AB05> {
    

    ในขณะที่การตั้งค่าตัวอย่างอื่นของฉันนี้ผลิต

    key <AB02> {
        type= "FOUR_LEVEL",
        symbols[Group1]= [               x,               X, approxeq,     dead_ogonek ]
    };
    key <AB03> {
        type= "FOUR_LEVEL",
        symbols[Group1]= [               c,               C, ccedilla,        Ccedilla ]
    };
    key <AB04> {
        type= "FOUR_LEVEL",
        symbols[Group1]= [               v,               V, squareroot,           U25CA ]
    };
    key <AB05> {
    

    ผลที่สุดคือในตัวอย่างแรกปุ่มที่เกี่ยวข้องเป็นประเภท "ALPHABETIC" ในขณะที่ตัวอย่างที่สองเป็นประเภท "FOUR_LEVEL" ขึ้นอยู่กับการตั้งค่าแป้นพิมพ์ของคุณคุณอาจพบว่าเป็นประเภทอื่นทั้งหมด ในสิ่งต่อไปนี้ชนิดจะถูกเรียกว่า $ TYPE $ ซึ่งคุณต้องแทนที่ด้วยสตริง ALPHABETIC จริงหรืออะไรก็ตามในคำสั่งด้านล่าง

  3. ค้นหาคำจำกัดความของ $ TYPE $ และคัดลอกไปยังไฟล์ใหม่ในไดเรกทอรี $ XKBLOCAL $ / types xkbcomp -a $DISPLAY - | grep -z -o 'type "$TYPE$" {[^}]*};' > types/cutpasteต่อไปนี้เป็นคำสั่งที่ไม่เพียงแค่ว่า: ชื่อของไฟล์ "cutpaste" ที่ฉันเลือกนั้นเป็นชื่อที่ไม่เจาะจงใช้ชื่อใดก็ได้ที่คุณชอบ แต่โปรดทราบว่าคุณจะต้องอ้างอิงไฟล์นี้อย่างสม่ำเสมอในขั้นตอนต่อไป ในการตั้งค่าครั้งแรกไฟล์นี้จะได้รับเนื้อหา

    type "ALPHABETIC" {
        modifiers= Shift+Lock;
        map[Shift]= Level2;
        map[Lock]= Level2;
        level_name[Level1]= "Base";
        level_name[Level2]= "Caps";
    };
    

    และในตัวอย่างอื่น ๆ มันจะได้รับเนื้อหา

    type "FOUR_LEVEL" {
        modifiers= Shift+LevelThree;
        map[Shift]= Level2;
        map[LevelThree]= Level3;
        map[Shift+LevelThree]= Level4;
        level_name[Level1]= "Base";
        level_name[Level2]= "Shift";
        level_name[Level3]= "Alt Base";
        level_name[Level4]= "Shift Alt";
    };
    
  4. แก้ไขประเภทไฟล์ / cutpaste เพื่อทำสองสิ่ง: เพิ่มคำนำหน้าและ postamble ที่ทำให้เป็นส่วนคำสั่ง XKB ที่เหมาะสมและแก้ไขชื่อประเภทและคำจำกัดความประเภทเพื่อเพิ่มระดับที่ผลิตโดยโมดิฟายเออร์ที่สอดคล้องกับ Super คุณควรตรวจสอบว่าโมดิฟายเออร์ใดในระบบของคุณมันน่าจะเป็น Mod4 ที่ใช้ด้านล่าง การแก้ไขที่จำเป็นควรเห็นได้จากตัวอย่างสองประเภทสุดท้าย / ประเภทของยาสีฟัน ได้แก่ :

    default partial xkb_types "addsuper" {
        type "ALPHABETIC_SUPER" {
            modifiers= Shift+Lock+Mod4;
            map[Shift]= Level2;
            map[Lock]= Level2;
            map[Mod4]= Level3;
            map[Shift+Mod4]= Level3;
            map[Lock+Mod4]= Level3;
            level_name[Level1]= "Base";
            level_name[Level2]= "Caps";
            level_name[Level3]= "With Super";
        };
    };
    

    และ

    default partial xkb_types "addsuper" {
        type "FOUR_LEVEL_SUPER" {
            modifiers= Shift+LevelThree+Mod4;
            map[Shift]= Level2;
            map[LevelThree]= Level3;
            map[Shift+LevelThree]= Level4;
            map[Mod4]= Level5;
            map[Shift+Mod4] = Level5;
            map[LevelThree+Mod4] = Level5;
            map[Shift+LevelThree+Mod4] = Level5;
            level_name[Level1]= "Base";
            level_name[Level2]= "Shift";
            level_name[Level3]= "Alt Base";
            level_name[Level4]= "Shift Alt";
            level_name[Level5]= "With Super"';
       };
    };
    
  5. คัดลอกคำจำกัดความสัญลักษณ์กุญแจที่ถูกส่งออกโดย grep ในขั้นตอนที่สองไปยังสัญลักษณ์ไฟล์ / cutpaste ใหม่ที่สองและเพิ่มคำนำหน้าและ postamble ที่คล้ายกันและแก้ไขคำจำกัดความเพื่อใช้ประเภทใหม่และเพิ่มการดำเนินการกับคำจำกัดความ ผลิตโดยรุ่น Super ผลลัพธ์ของสิ่งนี้ในสองตัวอย่างของเราคือ:

    default partial xkb_symbols "superversions" {
        replace key <AB02> {
            type[Group1]= "ALPHABETIC_SUPER",
            symbols[Group1]= [               x,               X, NoSymbol ],
            actions[Group1]= [      NoAction(),      NoAction(), RedirectKey(key=<LatX>,mods=Control,clearmods=Super)]
        };
        replace key <AB03> {
            type[Group1]= "ALPHABETIC_SUPER",
            symbols[Group1]= [               c,               C, NoSymbol ],
            actions[Group1]= [      NoAction(),      NoAction(), RedirectKey(key=<LatC>,mods=Control,clearmods=Super)]
        };
        replace key <AB04> {
            type[Group1]= "ALPHABETIC_SUPER",
            symbols[Group1]= [               v,               V, NoSymbol ],
            actions[Group1]= [      NoAction(),      NoAction(), RedirectKey(key=<LatV>,mods=Control,clearmods=Super)]
        };
    };
    

    และ

    default partial xkb_symbols "superversions" {
        replace key <AB02> { 
            type[Group1]= "FOUR_LEVEL_SUPER",
            symbols[Group1]= [x,X,approxeq,dead_ogonek,NoSymbol],
            actions[Group1]= [NoAction(),NoAction(),NoAction(),NoAction(),RedirectKey(key=<LatX>,mods=Control,clearmods=Super)]
        };
        replace key <AB03> { 
            type[Group1]= "FOUR_LEVEL_SUPER",
            symbols[Group1]= [c,C,ccedilla,Ccedilla,NoSymbol],
            actions[Group1]= [NoAction(),NoAction(),NoAction(),NoAction(),RedirectKey(key=<LatC>,mods=Control,clearmods=Super)]
        };
        replace key <AB04> { 
            type[Group1]= "FOUR_LEVEL_SUPER",
            symbols[Group1]= [v,V,squareroot,U25CA,NoSymbol],
            actions[Group1]= [NoAction(),NoAction(),NoAction(),NoAction(),RedirectKey(key=<LatV>,mods=Control,clearmods=Super)]
        };
    };
    

    โปรดทราบว่าในตัวอย่างที่สองฉันบีบพื้นที่ว่างบางส่วน (ไม่สำคัญ) ออกไปเช่นกันเพื่อรักษาความยาวบรรทัดภายใต้การควบคุมเล็กน้อย

  6. ค้นหาชื่อของชุดกฎที่ XKB ใช้อยู่ในปัจจุบัน setxkbmap -queryนั่นเป็นเรื่องง่ายก็แสดงในผลมาจากการ ในกรณีของฉันมันคือ "evdev"

  7. คัดลอกเวอร์ชันระบบของ rules / evdev (หรือชื่อชุดกฎของคุณ) ไปที่ $ XKBLOCAL $ / rules / evdev และเพิ่มกฎที่ชี้ไปที่ตัวเลือกที่เราสร้างขึ้น คุณมีสองตัวเลือกที่นี่: คุณสามารถคัดลอก evdev ทั้งหมดหรือเพียงบางส่วนที่กล่าวถึงรูปแบบแป้นพิมพ์เค้าโครงตัวแปรและตัวเลือกที่คุณใช้จริง แน่นอนถ้าคุณกำลังแก้ไขไฟล์ระบบอยู่คุณไม่จำเป็นต้องทำการคัดลอกใด ๆ เพียงแค่ทำการแก้ไข

    ในกรณีนี้สิ่งที่เพิ่มเข้ามาจะเหมือนกันโดยไม่คำนึงถึงการตั้งค่าแป้นพิมพ์เริ่มต้นดังนั้นจึงมีเพียงตัวอย่างเดียว คุณค้นหาส่วนของไฟล์กฎที่ขึ้นต้นด้วย! option = symbolsและเพิ่มบรรทัดcutpaste:super = +cutpasteในส่วนนั้นและคุณยังพบส่วนของไฟล์กฎที่เริ่มต้นด้วย! option = typesและบรรทัดcutpaste:super = +cutpasteไปยังส่วนนั้นด้วย

  8. คัดลอกเวอร์ชันระบบของ evdev.lst และเพิ่มบรรทัดสำหรับตัวเลือกใหม่ของคุณ โปรดทราบว่าชื่อของไฟล์นี้จะสอดคล้องกับชื่อของไฟล์กฎด้วย. lst ต่อท้าย เช่นเดียวกับในขั้นตอนก่อนหน้าคุณสามารถคัดลอกไฟล์ทั้งหมดหรือเพียงแค่ส่วนที่อ้างอิงโดยรูปแบบเค้าโครงตัวแปรและตัวเลือกที่คุณใช้ คุณเพียงแค่ต้องค้นหาส่วนของไฟล์นี้ที่ขึ้นต้นด้วย! optionและเพิ่มบรรทัดดังนี้: cutpaste:super Add super equivalents of cut and paste operationsในส่วนนั้น

  9. ตกลงตอนนี้ไฟล์การกำหนดค่าทั้งหมดเข้าที่แล้ว setxkbmap -option cutpaste:superหากคุณปรับเปลี่ยนระบบไฟล์ตอนนี้คุณสามารถเรียกใช้ตัวเลือกใหม่ของคุณด้วย ในทางกลับกันถ้าคุณไม่ทำคุณต้องแจ้งให้ setxkbmap ทราบว่าไดเรกทอรี $ XKBLOCAL $ ของคุณอยู่ที่ไหน สิ่งที่แย่กว่านั้นคือเซิร์ฟเวอร์ไม่ทราบว่าไดเรกทอรีนั้นอยู่ที่ไหนและ setxkbmap ไม่ได้ (หรืออาจไม่สามารถทำได้เนื่องจากเซิร์ฟเวอร์อาจใช้งานเครื่องอื่นในท้ายที่สุด) ดังนั้นคุณต้องไพพ์เอาท์พุทของ setxkbmap ไปยัง xkbcomp และยังบอกคำสั่งนั้นว่าไดเรกทอรี $ XKBLOCAL ของคุณอยู่ที่ไหน ดังนั้นบรรทัดคำสั่งsetxkbmap -I$XKBLOCAL$ -option cutpaste:super -print | xkbcomp -I$XKBLOCAL - $DISPLAYทั้งหมด

หวังว่านี่จะเป็นความช่วยเหลือ / ความสนใจต่อใครบางคนเนื่องจากเอกสาร / อ้างอิง XKB ที่ชัดเจนที่ดีนั้นหายาก หนึ่งในการอ้างอิงที่เป็นประโยชน์มากเป็นhttp://madduck.net/docs/extending-xkb/


คำตอบที่ยอดเยี่ยม สิ่งนี้ใช้ได้สำหรับฉันใน 17.10
blockloop

สิ่งนี้ไม่ได้ผลสำหรับฉันบน Ubuntu 18.04 ผลลัพธ์ก็คือว่าปุ่ม 'c', 'x' และ 'v' ไม่ทำงานอีกต่อไป setxkbmap -optionผมสามารถที่จะได้รับพวกเขาทำงานอีกครั้งกับ การตั้งค่าในเครื่องของฉันใกล้เคียงกับตัวอย่าง FOUR_LEVEL ยกเว้นสัญลักษณ์ Group2, Group3 บางตัวที่ฉันทิ้งไว้จากไฟล์สัญลักษณ์บางส่วนเพื่อให้ไฟล์ของฉันดูเหมือนกับตัวอย่าง
JinnKo

2

นี่คือสิ่งที่ฉันทำ มันไม่ได้เป็นทางออกที่ดีที่สุด แต่ฉันพยายามที่จะบรรลุทางออกที่ดีที่สุดและไม่สามารถไปถึงที่นั่นได้หลังจากพยายามมาก ดังนั้นฉันจึงตัดสินสิ่งที่เรียบง่ายและใช้งานได้มากกว่า 90% ของสิ่งที่ฉันต้องการ ฉันสามารถติดตั้งบนคอมพิวเตอร์เครื่องใดก็ได้ที่ฉันไป (หรือติดตั้ง Linux ใหม่) ในเวลาไม่กี่นาที มันง่ายมาก

ในแอปพลิเคชั่นเทอร์มินัล X ตั้งการตั้งค่าทางลัด ฉันทำสิ่งนี้ทั้งใน Gnome และ KDE ตัวอย่างเช่นใน Konsole ไปที่เมนู> การตั้งค่า> กำหนดค่าทางลัด มีเมนูที่คล้ายกันใน terminal Gnome X เพียงเลือกทางลัด (เช่น "คัดลอก") และป้อนลำดับคีย์ที่ต้องการ

ในกรณีที่เทอร์มินัลการคัดลอกและวางทางลัดขัดแย้งกับคำสั่งเทอร์มินัลก็มีวิธีแก้ไขที่ง่ายเช่นกัน ตัวอย่างเช่นถ้ามีคนต้องการใช้ CTRL-C เพื่อทำสำเนา (เทอร์มินัล X เป็นไปตามมาตรฐาน CUA)

ในกรณีนี้คุณสามารถเปลี่ยนการผูกปุ่ม stty ได้อย่างง่ายดาย (ใน. bashrc) ดำเนินการต่อ CTRL-C เพื่อคัดลอกตัวอย่างสมมติว่าคุณต้องการให้อินเตอร์รัปต์คีย์เป็น CTRL-b (สำหรับ "break") สิ่งนี้ทำให้สำเร็จ:

echo "stty intr \^b" >> ~/.bashrc 

แหล่งที่มา. bashrc

โซลูชันทั้งหมดนั้นง่ายเหมือนการใช้การตั้งค่าเทอร์มินัล X เพื่อเปลี่ยนทางลัดจากนั้นเลือกที่จะแก้ไขข้อขัดแย้งกับ stty ด้วยคำสั่ง echo แบบบรรทัดเดียว ตายง่ายและครอบคลุมเกือบทุกอย่างที่ฉันต้องการ


0

คีย์ Windows อาจเป็นกุญแจตัวปรับ เรียกใช้และลองอีกครั้ง:

xmodmap -e 'remove Mod4 = Super_L'

ขอบคุณ แต่ไม่ได้ทำเคล็ดลับ ฉันรู้ว่าการแมปนั้นใช้งานได้เพราะ xev รายงานเหตุการณ์ XF86
เดี่ยว

โพสต์แรกของฉัน (ดำเนินการxmodmap -e 'remove Mod1 = Meta_L'และลองใช้คำสั่งของคุณหลังจาก) ทำงานได้ดีสำหรับฉัน
ussr

1
@ โซโลและเกี่ยวกับการทำงานหรือไม่พิจารณาสภาพแวดล้อมของเดสก์ท็อปหรือแอปพลิเคชันไม่สนับสนุน หากต้องการทราบว่าใช้งานได้จริงหรือไม่ให้ใช้กับ Firefox เช่น มันรองรับ (ฟัง) การเชื่อมโยงคีย์ X
ussr

0

ฉันได้นำบางสิ่งที่เกลนวิทนีย์พูดและจัดการเพื่อใช้ความรู้นั้นเพื่อแมปคำที่แย่กว่านั้นหรือพฤติกรรมการจัดการข้อความจาก macOS ในรูปแบบที่กำหนดเอง

ฉันได้แก้ไขปัญหาการคัดลอกและวาง Ctrl vs Super แล้วโดยไม่เกี่ยวข้องกับโซลูชันเฉพาะนั้น แต่อย่างที่ฉันบอกว่ามันมีประโยชน์มากสำหรับสิ่งอื่น ๆ ฉันยังหลีกเลี่ยงสิ่งต่าง ๆ เช่น xmodmap ในขณะที่ฉันตั้งเป้าหมายที่จะสนับสนุน Wayland อย่างเต็มที่ในบางจุด คินโตใช้ xkb ดั้งเดิมและเคารพ macOS ที่คาดหวังเช่นพฤติกรรมเทอร์มินัล

https://github.com/rbreaves/kinto

https://medium.com/@benreaves/kinto-a-mac-inspired-keyboard-mapping-for-linux-58f731817c0

นี่คือส่วนสำคัญเช่นกันหากคุณต้องการดูว่าอะไรคือหัวใจของมันทั้งหมดมันจะไม่สลับคีย์แมปของคุณเมื่อต้องการ ส่วนสำคัญยังไม่มีไฟล์ xkb keymap ที่กำหนดเองที่ตั้งค่าเคอร์เซอร์ลักษณะ macOS / การใช้คำศัพท์ที่ใช้ Cmd และปุ่มลูกศร

https://gist.github.com/rbreaves/f4cf8a991eaeea893999964f5e83eebb

เนื้อหาสาระสำคัญ

# permanent apple keyboard keyswap
echo "options hid_apple swap_opt_cmd=1" | sudo tee -a /etc/modprobe.d/hid_apple.conf
update-initramfs -u -k all

# Temporary & instant apple keyboard keyswap
echo '1' | sudo tee -a /sys/module/hid_apple/parameters/swap_opt_cmd

# Windows and Mac keyboards - GUI (Physical Alt is Ctrl, Physical Super is Alt, Physical Ctrl is Super)
setxkbmap -option;setxkbmap -option altwin:ctrl_alt_win

# Windows and Mac keyboards - Terminal Apps (Physical Alt is Super, Physical Super is Alt, Physical Ctrl is Ctrl)
setxkbmap -option;setxkbmap -option altwin:swap_alt_win

# If the hid_apple driver is not loaded for Apple keyboards, which can be found out
# by the lsmod command then the above setxkbmap commands will not work
# Use the following commands for Apple style keyboards without an hid_apple driver
#
# Note: this could also apply to hid_apple driver as well 
# if this option is set to 0 inside swap_opt_cmd
#
lsmod | grep hid_apple

# Apple keyboard without hid_apple - GUI
setxkbmap -option;setxkbmap -option ctrl:swap_lwin_lctl,ctrl:swap_rwin_rctl

# Apple keyboard without hid_apple - Terminal
setxkbmap -option;setxkbmap -option altwin:alt_super_win

#
# If you want a systemd service and bash script to help toggle between
# GUI and Terminal applications then look at project Kinto.
# https://github.com/rbreaves/kinto
#
# Note: The above may not work for Chromebooks running Linux, please look
# at project Kinto for that.
#
# If anyone would like to contribute to the project then please do!
#
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.