ปัญหา“ <dead-acute> ไม่ได้กำหนด” ปรากฏขึ้นเมื่อพิมพ์กรีกความเครียด (')


11

ฉันเริ่มใช้ Emacs และฉันเขียนข้อความเป็นภาษากรีก ปัญหาคือความเครียดที่ใช้กับตัวอักษรบางตัว (ό, ύ, ί, ύ) ใช้งานไม่ได้!

มันมักจะแทรกโดยการกดปุ่ม;(ฉันหมายถึงโดยการกดปุ่มติดกับ L) แล้วตัวอักษรตามที่จะถูกแทรก นั่นเป็นมาตรฐานสำหรับแป้นพิมพ์ภาษากรีก เมื่อฉันกด;มันพูดว่า:

<dead-acute> is undefined. 

C-h c ; พูดในสิ่งเดียวกัน

ฉันจะทำอย่างไรเพื่อให้สามารถใช้คีย์นี้

มันทำงานได้ในแอพพลิเคชั่นอื่นเช่นเบราว์เซอร์ ฉันใช้ Ubuntu 14.04 และฉันติดตั้งemacsแพ็คเกจ (Emacs 24.3.1)


ฉันเคยพบปัญหานี้มาก่อน แต่ไม่สามารถจำสาเหตุได้ ตรวจสอบให้แน่ใจว่าระบบปฏิบัติการของคุณไม่ได้ใช้รูปแบบแป้นพิมพ์ที่แตกต่างกันสำหรับ Emacs ระบบปฏิบัติการบางระบบสามารถมีรูปแบบแป้นพิมพ์เฉพาะแอปพลิเคชันได้แม้ว่าคีย์นั้นจะทำงานได้ทุกที่ แต่ปัญหาอาจเกิดขึ้นในระบบ หากไม่เป็นเช่นนั้นฉันมั่นใจว่าจะมีคนตอบคำถามของคุณที่นี่ :-)
Malabarba

(ไม่แน่ใจว่าสิ่งนี้จะช่วยได้หรือไม่) ฉันมีปัญหานี้ขึ้นอยู่กับโหมดอินพุตแป้นพิมพ์ OS ของฉัน อินพุตแป้นพิมพ์เริ่มต้นของฉันใช้ 'เดดคีย์' ดังนั้นฉันจึงสามารถเพิ่มâ©çéñtß; แต่บางครั้งฉันต้องการป้อนข้อมูลกรีกโบราณใน Emacs โดยใช้greek-ibycus4และทั้งสองระบบขัดแย้งกัน ฉันแก้ไขปัญหานี้โดยเปลี่ยนอินพุตทั่วไปเป็นเลย์เอาต์ของคีย์ที่ไม่ตาย (ใช้เช่นsetxkbmap -layout us); จากนั้นฉันสลับโหมดใน Emacs; จากนั้นฉันเปลี่ยนกลับไปเป็นucsวิธีป้อนข้อมูลสำหรับ Emacs และเรียกใช้setxkbmap -layout us -variant intlเพื่อเรียกคืนกุญแจที่ตายแล้ว ... ไม่เหมาะ !! แต่ฉันก็ไม่ต้องการกรีกบ่อยเหมือนกัน
จอน

ขอบคุณสำหรับความคิดเห็นของคุณ แต่ปัญหาคือความเครียดเป็นพื้นฐานในภาษากรีก เกือบทุกคำต้องการความเครียดและเห็นได้ชัดว่ามันทำงานได้ทุกที่ดังนั้นฉันไม่รู้จะทำอย่างไร
อดัม

@Adam - ฉันควรถามด้วย: เค้าโครงแป้นพิมพ์เริ่มต้นของคุณสำหรับ Ubuntu คืออะไร เห็นได้ชัดว่าคุณไม่ได้เขียนภาษากรีกในขณะนี้ดังนั้นอาจมีความไม่ตรงกันระหว่างรูปแบบแป้นพิมพ์ที่ระบบปฏิบัติการกำหนดและวิธีป้อนข้อมูลของคุณใน Emacs เพื่อให้ฉันสามารถเขียนสำเนียงและลมหายใจของกรีกใน Emacsได้ฉันต้องเปลี่ยน "คีย์บอร์ด Ubuntu" เป็นรูปแบบ QWERTY ทั่วไปก่อน บางทีคุณอาจมีการปะทะที่คล้ายกัน จากเครื่องเทอร์มินัลsetxkbmap -queryจะพิมพ์แป้นพิมพ์ OS หรือคุณสามารถดูในunity-control-panelฉันคิดว่า
จอน

@ จอนมันบอกว่ากฎ: evdev รุ่น pc105 รูปแบบเราและเมื่อเขียนกรีกพูดว่าเค้าโครง: gr เรา
อดัม

คำตอบ:


6

ลองเพิ่มไฟล์(require 'iso-transl)ของคุณ.emacs


1
นั่นเป็นสิ่งแรกที่ฉันลองและมันไม่ทำงาน
อดัม

โอ้ขอโทษด้วยที่ ... ฉันมีปัญหาคล้ายกับของคุณและการเพิ่มบรรทัดนั้นก็ได้แก้ไขให้ฉันด้วย
Arthur Azevedo De Amorim

ใช่ฉันรู้ว่านี่เป็นวิธีแก้ปัญหาทั่วไป!
อดัม

5

หลังจากการค้นหาและทดลองอย่างละเอียดฉันพบวิธีที่จะประสบความสำเร็จในการใช้ความเครียด นอกจากนี้ยังต้องสังเกตว่าไม่ใช่วิธีที่ดีที่สุด (ในทางเทคนิคแล้วมันไม่ได้แก้ปัญหา แต่คุณได้สิ่งที่คุณต้องการ) ฉันใช้คำสั่งการโยงคีย์ต่อไปนี้สำหรับตัวอักษรทุกตัวที่ใช้ความเครียด:

(global-set-key (kbd "<dead-acute> α") "ά")

(global-set-key (kbd "<dead-acute> ε") "έ")

ฯลฯ ...

พอเพียงที่จะบอกว่าถ้าใครพบวิธีที่ดีกว่ายินดีที่จะแบ่งปันกับเราเพราะนี่เป็นเพียงการประนีประนอม


1

แทนที่การสลับภาษาของระบบปฏิบัติการและใช้ MULE

ใน Emacs C-\กด มันขอวิธีการอินพุต

พิมพ์แล้วสลับภาษาที่มีgreekC-\


0

หากระบบปฏิบัติการของคุณหรืออินเทอร์เฟซของ Emacs ส่งผ่านคีย์เดดเช่นแทนที่จะประมวลผลคุณสามารถแปลชุดคีย์เดดใน Emacs เองได้ ใช้สำหรับว่าวิธีนี้ลำดับที่สำคัญคือการแปลจริงในการกดปุ่มเดียวและห่วงคำสั่งเห็นinput-decode-map self-insert-commandสิ่งนี้จะดีกว่าที่จะผูกกุญแจกับมาโครในแผนที่โลกเพราะสิ่งนี้จะทำลายกลไกที่พึ่งพาการป้อนข้อความที่ถูกใส่เข้าไปในตัวเองเช่นเลิกทำกลุ่ม

(define-key input-decode-map [dead-acute ?ο] ?ό)

คุณสามารถเขียนลูปดังนี้:

(mapc (lambda (string)
        (define-key input-decode-map (vector dead-acute (aref string 0)) (aref string 1)))
      '("οό" "υύ" "ιί"))
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.