จะสลับรูปแบบแป้นพิมพ์สำหรับภาษาต่าง ๆ ได้อย่างไร


11

ถาม:ฉันจะสลับระหว่างวิธีป้อนข้อมูลสำหรับภาษาต่างๆเมื่อใช้รูปแบบแป้นพิมพ์ที่ไม่ได้มาตรฐานได้อย่างไร

ฉันต้องแก้ไขข้อความในสองภาษาที่แตกต่างกัน ฉันต้องการใช้การโยงคีย์ของฉันในสองภาษายกเว้นแน่นอนเมื่อแทรกข้อความลงในบัฟเฟอร์ ดูเหมือนว่าฉันควรจะสามารถtoggle-input-method( C-\) และเลือกภาษาอื่น

จนถึงตอนนี้เกือบจะดี

นี่คือการถู: ฉันใช้เค้าโครงภาษาอังกฤษ Dvorak ซึ่งฉันตั้งไว้ที่ระดับระบบปฏิบัติการ (เช่นด้วยsetxkbmap) เมื่อฉันtoggle-input-methodข้อความที่ฉันแทรกจะถูกต้องถ้าฉันมีรูปแบบ QWERTY (มาตรฐานในสหรัฐอเมริกา) แต่ออกมาซึ่งพูดพล่อยๆเพราะฉันอยู่ใน Dvorak (FWIW เมื่อฉันเปลี่ยนเลย์เอาต์ของฉันเป็น Standard US มันใช้งานได้ดี)

ดังนั้น: ฉันจะแจ้งให้ Emacs ทราบได้อย่างไรว่าฉันใช้ Dvorakเพื่อให้toggle-input-methodเพื่อน ๆ แปลการกดแป้นของฉันเป็นอักขระที่ถูกต้องในภาษาอื่น ๆ ?


สวีดิช - โพสต์และวิธีการป้อนข้อมูลแบบผสมผสานอื่น ๆ ทำงานได้ดีสำหรับฉันคุณใช้วิธีใดในการแก้ไขปัญหา?
shapr

@shapr: ฉันสลับระหว่างภาษาอังกฤษและภาษาอาหรับ ปัญหาดูเหมือนว่าฉันกำลังใช้เลย์เอาต์ Dvorak ที่ระดับ OS เนื่องจากการสลับทำงานได้ดีเมื่อฉันใช้เลย์เอาต์ US มาตรฐานที่ระดับ OS
ด่าน

คำตอบ:


7

quail-keyboard-layout-typeมีวิธีการที่จะเปลี่ยนนิยามรูปแบบทางกายภาพสำหรับวิธีการป้อนข้อมูลโดยการตั้งค่าเป็น แต่ดูเหมือนว่า Dvorak ไม่ใช่หนึ่งในผู้สมัครที่เป็นไปได้quail-keyboard-layout-alistใน Emacs ของฉัน 24.4

คุณสามารถกำหนดรูปแบบแป้นพิมพ์กายภาพใหม่โดยดูที่คำนิยามquail-keyboard-layout-alistในquail.elหรือสร้างวิธีการป้อนข้อมูลใหม่โดยการกำหนดแป้นภาษาอาหรับที่สอดคล้องกันสำหรับเค้าโครง Dvorak

ฉันไม่เคยมีประสบการณ์ในตอนแรก แต่ฉันสามารถเป็นพยานได้ว่าวิธีที่สองนั้นง่ายกว่าที่คุณคิด (ฉันต้องสร้างวิธีป้อนข้อมูลภาษาตุรกีออตโตมันที่ด้านบนของ Farsi) คัดลอกarabic.el(ซึ่งอยู่ในระบบ Debian ของฉันที่/usr/share/emacs/24.4/lisp/leim/quail/arabic.el.gz) ไปที่บ้านของคุณsite-lispและเปลี่ยนคีย์ตามการตั้งค่าของคุณ นอกจากนี้อย่าลืมเปลี่ยนชื่อวิธีการป้อนข้อมูลเป็นต้นคุณเพิ่งสร้างวิธีการป้อนข้อมูล Dvorak-Arabic ใหม่

ฉันสามารถอัปเดตคำตอบพร้อมรายละเอียดเพิ่มเติมได้หากมีอะไรที่ซับซ้อน


ขอบคุณ! นั่นทำให้ฉันอยู่ในเส้นทางที่ถูกต้อง ฉันจะโพสต์คำตอบเพิ่มเติมที่อธิบายว่าฉันไปถึงที่นั่นใน...-alistรุ่นได้อย่างไร
แดน

ไม่เป็นไร คุณอาจคิดว่าจะส่งการอัปเดตของคุณไปquail-. *-alistยังการพัฒนาของ Emacs ฉันแน่ใจว่ามีผู้ใช้ Dvorak คนอื่น ๆ ที่จะได้รับประโยชน์จากมัน
Emre Sahin

7

@ EmSSahin วางฉันบนเส้นทางที่ถูกต้องในการตอบคำถามนี้ดังนั้นฉันจึงจัดวางรายละเอียดเล็กน้อยในกรณีที่คนอื่นจะต้องจัดการกับปัญหาเช่นนี้ด้วยตัวเอง

เป็นจุดเอ็มออกเราต้องเพิ่มรูปแบบ Dvorak quail-keyboard-layout-alistไป ปรากฎว่าquailห้องสมุดไม่มีเอกสารที่ดีในคู่มือซึ่งมีฟังก์ชั่นที่เกี่ยวข้องสองรายการที่กล่าวถึงในการส่งผ่านหนึ่งโหนด

อย่างไรก็ตามหลังจากปรึกษาหัวข้อช่วยเหลือนี้และโดยเฉพาะอย่างยิ่งหน้า EmacsWiki ในภาษารัสเซียกับ Dvorak (ซึ่งเป็นเปลคำตอบนี้) ฉันคิดว่าฉันเข้าใจแล้ว

docstring สำหรับตัวแปรอธิบายสิ่งที่เราต้องการที่จะใส่ในquail-keyboard-layout quail-keyboard-layout-alistมันเป็นสายยาวที่สอดคล้องกับ 6 แถวจาก 15 ปุ่มแต่ละอัน แต่ละแถวสอดคล้องกับค่า unshifted และ shifted ของแต่ละคีย์รวมเป็น 30 อักขระต่อแถว ฉันไม่ค่อยแน่ใจเกี่ยวกับประเด็นต่อไปนี้ แต่ปรากฏว่าสำหรับสิ่งที่ฉันจะเรียกว่า "กึ่งมาตรฐาน" แป้นพิมพ์ที่มีปุ่ม 4 แถวแถวแรกและแถวที่หกควรเป็น 30 ช่องว่าง

เปิดเผยใหญ่:

(require 'quail)

(add-to-list 'quail-keyboard-layout-alist
             `("dvorak" . ,(concat "                              "
                                   "  1!2@3#4$5%6^7&8*9(0)[{]}`~  "
                                   "  '\",<.>pPyYfFgGcCrRlL/?=+    "
                                   "  aAoOeEuUiIdDhHtTnNsS-_\\|    "
                                   "  ;:qQjJkKxXbBmMwWvVzZ        "
                                   "                              ")))

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