วิธีการให้ ESC ยกเลิก CAPS หากเปิดใช้งาน CAPS อยู่


3

มีวิธีการกำหนดค่าแป้นพิมพ์เพื่อให้กดESCจะยกเลิกคุณสมบัติ Capslock ถ้าเปิดใช้งาน Capslock? ฉันใช้ Kubuntu Linux โดยเฉพาะกับสวิตช์ ESC และปุ่ม Caps (ผู้ใช้ VIM) แต่การเขียนโค้ดคำสั่ง SQL ของฉันกำหนดให้ใช้ CAPS สำหรับคีย์เวิร์ด SQL ฉันต้องการโซลูชัน Linux / X ทั่วไป แต่โซลูชันเฉพาะ KDE นั้นใช้ได้เช่นกัน

ขอบคุณ!

คำตอบ:


3

โซลูชันเฉพาะของ X-Windows คือการใช้ xbindkeys

  1. ติดตั้งxbindkeysจากที่เก็บของ distro ของคุณ
  2. สร้างไฟล์ปรับแต่ง.xbindkeysrcในโฮมไดเร็กตอรี่ของคุณ
  3. เรียกใช้xbindkeys -kจากสถานี นี่ควรเปิดหน้าต่าง GUI เมื่อหน้าต่างนั้นโฟกัสกดปุ่มที่คุณต้องการผูก
  4. คัดลอกโค้ดที่เกี่ยวข้องกับคีย์นั้นจากเทอร์มินัล
  5. วางลงในของคุณ .xbindkeysrc
  6. แทนที่ "command schema" ด้วยคำสั่งให้เรียกใช้เมื่อคุณกดปุ่มนั้น

ในกรณีของคุณคุณจะต้องสร้างสคริปต์เพื่อปิดตัวล็อคและสร้างเหตุการณ์คีย์หลบหนีจริง (อาจใช้crikeyเพื่อส่งXTestสัญญาณ)

คุณสามารถตรวจสอบว่าแคปล็อคกำลังใช้งานอยู่หรือไม่ xset q | grep "LED mask"


ขอบคุณ trideceth นั่นคือคำตอบที่ดี ฉันไม่เห็นจาก googling ชั่วคราวว่ามีการifควบคุมการไหลอยู่xbindkeysหรือรหัส "ปิดการใช้งาน Capslock" ที่จะไม่มีผลหากไม่มีการตั้งค่า Capslock ฉันจะตรวจสอบและอัปเดตต่อไปหากพบสิ่งใดสิ่งหนึ่ง
— dotancohen

@dotancohen คุณจะต้องมอบหมายให้สคริปต์ทุบตีจะทำอย่างนั้น
— JSJ

ขอบคุณฉันเห็นการแก้ไขของคุณที่กล่าวถึงวิธีการทำเช่นนั้น ตอนนี้ฉันเล่นซอแล้วขอบคุณ!
— dotancohen

1

แล้ววิธีแก้ปัญหาเฉพาะ Vim แบบใบ้สายตาสั้นและโหดเหี้ยมล่ะ?

:s/\vfalse|null|true|access|add|as|asc|begin|by|check|cluster|column|compress|connect|current|cursor|decimal|default|desc|else|elsif|end|exception|exclusive|file|for|from|function|group|having|identified|if|immediate|increment|index|initial|into|is|level|loop|maxextents|mode|modify|nocompress|nowait|of|offline|on|online|start|successful|synonym|table|then|to|trigger|uid|unique|user|validate|values|view|whenever|where|with|option|order|pctfree|privileges|procedure|public|resource|return|row|rowlabel|rownum|rows|session|share|size|smallint|type|using|not|and|or|in|any|some|all|between|exists|like|escape|union|intersect|minus|prior|distinct|sysdate|out|alter|analyze|audit|comment|commit|create|delete|drop|execute|explain|grant|insert|lock|noaudit|rename|revoke|rollback|savepoint|select|set|truncate|update|boolean|char|character|date|float|integer|long|mlslabel|number|raw|rowid|varchar|varchar2|varray/\U\0/g

นั่นอาจใช้ได้! มันไม่ได้หาอะไรที่โพสต์ฉันจะ google วิธีรับ regex ทำงานและฉันจะโพสต์กลับ ขอบคุณ Romain!
— dotancohen

ลืม\vที่จุดเริ่มต้นของรูปแบบการค้นหา มันได้ผลแล้ว แต่มันโหดร้ายและโง่มาก xbindkeysฟังดูดีกว่า
— romainl

ใช่มันโหดร้ายเกินไปและฉันต้องลดมันลงไปเล็กน้อย ตอนนี้ฉันพยายามที่จะจับคู่คำทั้งหมดเท่านั้น แต่ VIM regex นั้นแตกต่างจาก PCRE เล็กน้อย แต่ก็เป็นเครื่องมือที่ดีที่จะมีการร่วมกันคำหลัก SQL INSERT, INTO, TABLE, WHERE, SELECT, DELETE, FROM, LIMIT, ORDER, BY, ASC, DESC, SET, UPDATEหนึ่งซับเช่น ทันทีที่ฉันได้รับปัญหาทั้งคำนี้ก็แยกออกฉันกำลังทำแผนที่มันกับผู้นำ ขอบคุณ!
— dotancohen

:s/\v<where>|<select>|<delete>|<from>/\U\0/gรูปแบบต่อไปนี้เป็นที่สมบูรณ์แบบ: ขอบคุณ! เห็นได้ชัดว่าฉันจะเลือกโซลูชันของ trideceth ตามที่จะตอบคำถามและกว้างกว่านั้นคือขอบเขต แต่ฉันชอบเคล็ดลับนี้และฉันเห็นว่านี่กลายเป็นเครื่องมือทั่วไปในกล่องของฉัน ขอบคุณ Romain!
— dotancohen

เดอนาด้า การแสดงออกปกติอยู่ในหัวใจของกลุ่ม บางครั้งมันก็เป็นเรื่องยากที่จะคิดรูปแบบที่ถูกต้อง แต่เมื่อคุณมีมันแล้วมันง่ายมากที่จะสร้างแผนที่เพื่อนำมาใช้ใหม่ในภายหลัง ... I ♥ Vim
— romainl
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.