วิธีการทำไฮเปอร์และซุปเปอร์คีย์ไม่ทำอย่างเดียวกัน?


8

ฉันใช้ xkb เพื่อทำการแมปปุ่ม windows ขวา (RWIN) ไปยัง Hyper_R เพราะฉันต้องการใช้กับ AutoKey สำหรับทางลัดพิเศษบางอย่าง ฉันทำได้โดยการแก้ไข

/usr/share/X11/xkb/symbols/pc

การปรับเปลี่ยนบรรทัด RWIN:

  key <RWIN> {  [ Hyper_R   ]   };

( นี่คือคำตอบที่แนะนำฉัน )

จากสิ่งที่ฉันสามารถบอกได้ว่ามันใช้งานได้และปุ่ม Windows ที่ถูกต้องในขณะนี้ยิง Hyper_R อย่างไรก็ตามดูเหมือนว่าใน Ubuntu (Xubuntu เป็นที่แน่นอน) Hyper และ Super ก็กำลังทำสิ่งเดียวกันอยู่ ดังนั้น Super + e จึงเปิดตัวเครื่องมือแก้ไขและ Hyper + e ก็เช่นกัน

ฉันไม่แน่ใจว่าทำไมนี่คือสาเหตุที่ฉันสามารถเปลี่ยนพฤติกรรมนี้ ฉันต้องการให้ไฮเปอร์และซูเปอร์เป็นตัวดัดแปลงต่าง ๆ


มีสิ่งที่มันเป็นที่นี่แต่ผมไม่คิดว่าการเจรจาในขณะนี้มีอยู่ใน 13.10 ...
วิลฟ์

แต่สิ่งนี้จะต้องมีการกำหนดค่าที่ไหนสักแห่งใช่ไหม?
Alexander Rechsteiner

คุณอาจพบพวกเขาในdconf-editor
วิลฟ์

1
ขอบคุณ แต่ไม่มีโชค ประณามสิ่งที่แป้นพิมพ์ใหม่ทั้งหมดบน Linux ทำให้ฉันเป็นเบาหวาน
Alexander Rechsteiner

+1: ความสามัคคี (ในส่วนของโรคเบาหวาน) ฉันไม่สามารถค้นหาคำแนะนำที่ละเอียดและครอบคลุมเกี่ยวกับวิธีการจัดการคีย์บอร์ดใน Ubuntu มีการโต้ตอบกันหลายครั้งระหว่าง gnome-control-center, gnome-tweak-tool, xkbd, xmodmap ซึ่งค่อนข้างซับซ้อนและแย่ที่สุดไม่มีเอกสาร หากคุณพบลิงค์โปรดแบ่งปัน! (ถึงแม้ว่าผมจะสงสัยว่าเกือบจะไม่มีใครรู้ว่ามันจริงเพียงแค่เห็นที่ unfixability ของ. bugs.launchpad.net/ubuntu/+source/gnome-settings-daemon/+bug/... )
Rmano

คำตอบ:


11

ด้วยเหตุผลบางอย่างที่ Ubuntu กำหนดทั้ง Super และ Hyper ให้กับ Mod4 คุณสามารถดูได้ใน / usr / share / X11 / xkb / symbols / pc:

 key <SUPR> {   [ NoSymbol, Super_L ]   };
 modifier_map Mod4   { <SUPR> };

 key <HYPR> {   [ NoSymbol, Hyper_L ]   };
 modifier_map Mod4   { <HYPR> };

ฉันสามารถเปลี่ยนแปลงสิ่งนี้เพื่อวาง super และ hyper ในตัวดัดแปลงแยกกันโดยไม่จำเป็นต้องเป็น root หรือแก้ไขไฟล์ระบบใด ๆ ฉันไม่แน่ใจว่านี่เป็นวิธีที่ดีที่สุดเพราะฉันไม่ใช่ผู้เชี่ยวชาญ xkb หรือไม่ แต่เป็นวิธีที่เชื่อถือได้สำหรับฉัน

ก่อนอื่นให้สร้างไฟล์สัญลักษณ์โลคัล ฉันมีเหมืองเป็น $ {HOME} /. config / xkb / symbols / local สิ่งนี้จะกำหนด Super เป็น Mod3 และ Hyper ให้กับ Mod4

default  partial modifier_keys
xkb_symbols "superhyper" {

    modifier_map Mod3 { Super_L, Super_R };

    key <SUPR> {    [ NoSymbol, Super_L ]   };
    modifier_map Mod3   { <SUPR> };

    key <HYPR> {    [ NoSymbol, Hyper_L ]   };
    modifier_map Mod4   { <HYPR> };
};

จากนั้นทำการคอมไพล์แผนที่ที่มีอยู่อีกครั้งเพื่อเพิ่ม "local":

setxkbmap -print | sed -e '/xkb_symbols/s/"[[:space:]]/+local&/' | xkbcomp -I${HOME}/.config/xkb - ${DISPLAY}

ใส่สิ่งนี้ในสคริปต์ที่จะทำงานเมื่อคุณเข้าสู่ระบบคุณสามารถเรียกใช้ในฐานะผู้ใช้ธรรมดา


เป็นไปได้หรือไม่ที่จะแก้ไขไฟล์นั้นเพื่อเปลี่ยน HYPR เป็น Mod3
Alex Moore-Niemi

3
คุณสามารถทำได้ ข้อดีของการไม่แก้ไขก็คือการอัปเดตระบบจะไม่เขียนทับการเปลี่ยนแปลงของคุณ
ergos

สำหรับตัวฉันเองฉันใช้เวลาสั้น ๆ กับraw.githubusercontent.com/jabbalaci/dotfiles/master/.Xmodmapแม้ว่ามันจะหยุดการทำงานอย่างลึกลับ ...
Alex Moore-Niemi

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

1
ฉันใช้มันเช่นกัน มีการตั้งค่ากระป๋องอยู่แล้วดังนั้นฉันจึงใช้: setxkbmap - ตัวเลือก 'ตัวพิมพ์ใหญ่: ไฮเปอร์'
ergos

3

ด้วยxmodmapคุณสามารถเปลี่ยนพฤติกรรมนี้ด้วย 2 คำสั่ง:

## Hyper_L is mod4 by default, we will "move" it to Mod3
xmodmap -e "remove mod4 = Hyper_L"
xmodmap -e "add mod3 = Hyper_L"
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.