ปิด Caps lock เมื่อกด Escape


10

มีวิธีการปิดการใช้งานCapsLockเมื่อใดก็ตามที่Escมีการกด ใช่ฉันใช้ VIM! จริง ๆ แล้วฉันมีรูปแบบแป้นพิมพ์ all-caps ที่เป็นทางเลือกCtrl-6แต่ฉันคิดว่ามันยุ่งยากและอยากให้ระบบปิดการใช้งาน CapsLock ทุกครั้งที่Escกด นอกจากนี้ฉันมักจะ SSH ไปยังเซิร์ฟเวอร์อื่น ๆ สองสามชั่วโมงดังนั้นฉันจึงอยู่ในสต็อก VIM ที่นั่น

โปรดทราบว่าฉันได้สลับไปมาแล้วCapsLockและEscปุ่ม แต่เมื่อEscกดแป้น (ซึ่งเกิดขึ้นที่จะระบุCapsLockบนแป้นพิมพ์และอยู่ถัดไปA) ผมต้องการที่จะดำเนินการทั้งในและEscapeDisable-CapsLock-If-It-Is-Enabled

นี่คือใน Kubuntu 12.10 ขอบคุณ


คุณจำเป็นต้องเพิ่มฟังก์ชันการทำงานนั้นสำหรับvimหรือเดสก์ท็อปที่สมบูรณ์เท่านั้น
mtk

ฉันต้องการให้เป็นคุณสมบัติเดสก์ท็อป
dotancohen

คำตอบ:


5

ใน X11 (บนคอนโซลฉันไม่รู้) คุณสามารถทำได้โดยกำหนดพฤติกรรมของปุ่ม Escape ใหม่ ฉันดูคำจำกัดความ "shift (break_caps)" เพื่อดูว่ามันทำงานอย่างไรและปรับให้เหมาะสม

ดูคำตอบนี้บน xkbสำหรับรายละเอียดเพิ่มเติมเกี่ยวกับวิธี / ตำแหน่งที่จะวางไฟล์ที่ถูกแก้ไขในเครื่องและโหลด

และสำหรับการทำสิ่งที่คุณต้องการคุณต้องใช้ไฟล์สัญลักษณ์ท้องถิ่น (เช่น:) ~/.xkb/symbols/mysymbolsส่วนดังนี้:

partial modifier_keys
xkb_symbols "esc_breaks_caps" {
    key <ESC> {
        type = "ALPHABETIC",
        actions [Group1] = [
            SetMods(modifiers=none),
            SetMods(modifiers=Lock,clearLocks)
        ]
    };
};

และในไฟล์รูปแบบแป้นท้องถิ่น (เช่น~/.xkb/keymap/mykbdคุณสามารถสร้างมันขึ้นมาด้วยsetxkbmap -print > ~/.xkb/keymap/mykbd) เปลี่ยนสายที่จะเพิ่มxkb_symbols+mysymbols(esc_breaks_caps)

ตอนนี้คุณสามารถโหลดได้ด้วย: xkbcomp -I$HOME/.xkb ~/.xkb/keymap/mykbd $DISPLAY และการกดEscจะลบสถานะ CapsLock (อันที่จริงแล้วเอฟเฟกต์ที่เกิดขึ้นจากการวางจำหน่ายของ Esc ฉันคิดว่ามีเพียงคีย์ตัวดัดแปลงเท่านั้นที่มีผลในทันที

โอ้ถ้าคุณต้องการสลับปุ่ม Escape และ CapsLock ด้วยเช่นกัน จากนั้นใช้สิ่งนี้แทน (และคุณใส่ "+ mysymbols (esc_swap_and_breaks_caps)" ในไฟล์ mykbd ของคุณ):

partial modifier_keys
xkb_symbols "esc_swap_and_breaks_caps" {
    replace key <CAPS> {
        type = "ALPHABETIC",
        symbols = [ Escape, Escape ],
        actions [Group1] = [
            SetMods(modifiers=none),
            SetMods(modifiers=Lock,clearLocks)
        ]
    };
    replace key <ESC> { [ CapsLock, CapsLock ] };
};

บันทึกคีย์ทางกายภาพ<CAPS>และ<ESC>; <CAPS>(แป้นสลักCapsLockบนแป้นพิมพ์ของคุณ) ส่ง Escape และ<ESC>(สลักกุญแจEsc) ส่ง CapsLock ซึ่ง<CAPS>(ส่ง Escape) ยังไม่ได้ตั้งค่าสถานะ capslock


1

เพิ่มบรรทัดเหล่านี้ไปที่~/.Xmodmap:

clear lock
keycode 0x42 = Escape

จากนั้นพิมพ์คำสั่ง:

xmodmap ~/.Xmodmap

Caps Lockตอนนี้กุญแจของคุณถูกแมปไปยังEscกุญแจแล้ว

URL อ้างอิง


ลองอ่านบทความดีๆเกี่ยวกับ Mapping CapsLock to Escape ใน Ubuntuซึ่งดูเหมือนว่าจะเป็นผู้ใช้ unix.se :)


ขอบคุณ. ฉันบังเอิญเปลี่ยน CapsLock และ Esc แล้ว อย่างไรก็ตามเมื่อกดปุ่ม Esc (ซึ่งจะมีข้อความว่า CapsLock บนแป้นพิมพ์และถัดจาก A) ฉันต้องใช้ทั้ง Escape และ Disable-CapsLock-If-It-Is-Enabled ฉันจะแก้ไขคำถามเพื่อชี้แจง ขอบคุณ
dotancohen

ฉันคิดว่าคุณต้องการรอบทางอื่น ค่อนข้างสับสนที่นี่ เกิดอะไรขึ้นกับการกดEscและCapslocksหลังการเปลี่ยนแปลงเหล่านี้?
mtk

ขณะนี้: เมื่อกดESCคีย์CapsLockสลับฟังก์ชั่นและเมื่อกดCapsLockคีย์ESCคำสั่งจะถูกส่งไป (เช่นESCที่สำคัญคือ remapped ไปCapsLockและCapsLockที่สำคัญคือการ remapped ESC) เป้าหมายของฉันกับคำถามนี้คือการมีการกดCapsLockคีย์ดำเนินการทั้งESCฟังก์ชั่น (ซึ่งขณะนี้ไม่) และปิดCapsLockฟังก์ชั่นถ้าและเพียงถ้าCapsLockฟังก์ชั่นถูกเปิดใช้งาน (เช่นไม่สลับCapsLockฟังก์ชั่นปิดการใช้งาน แต่ถ้าCapsLockมีการเปิดใช้งาน)
dotancohen

1

ฉันไม่แน่ใจว่าสิ่งนี้จะตอบคำถามของคุณหรือไม่ แต่เพื่อแมปEscฟังก์ชันกับCapsLockรหัสคุณสามารถใช้สิ่งนี้:

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