วิธีการให้ 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.