Vấn đề về <chết-cấp> không xác định được xuất hiện


11

Tôi bắt đầu sử dụng Emacs và tôi đã viết một văn bản bằng tiếng Hy Lạp. Vấn đề là sự căng thẳng được sử dụng trên một số chữ cái (ό, ύ, ί,) không hoạt động!

Nó thường được chèn bằng cách nhấn phím ;(ý tôi là bằng cách nhấn phím bên cạnh L) và sau đó chữ cái sẽ được chèn vào. Đó là tiêu chuẩn cho một bàn phím Hy Lạp. Khi tôi nhấn ;nó sẽ nói:

<dead-acute> is undefined. 

C-h c ; nói điều tương tự

Tôi có thể làm gì để có thể sử dụng khóa này?

Nó hoạt động trong các ứng dụng khác, chẳng hạn như trình duyệt. Tôi sử dụng Ubuntu 14.04 và tôi đã cài đặt emacsgói của nó (Emacs 24.3.1).


Tôi đã gặp phải vấn đề này trước đây, nhưng tôi không thể nhớ nguyên nhân là gì. Đảm bảo hệ điều hành của bạn không sử dụng bố cục bàn phím khác cho Emacs. Một số HĐH có thể có bố cục bàn phím dành riêng cho ứng dụng, do đó, mặc dù phím đó hoạt động ở mọi nơi khác, vấn đề có thể nằm ở hệ thống. Nếu không phải vậy, tôi chắc chắn ai đó sẽ có câu trả lời của bạn ở đây. :-)
Malabarba

(Không chắc điều này có giúp ích gì không.) Tôi gặp vấn đề này tùy thuộc vào chế độ nhập bàn phím hệ điều hành của tôi. Đầu vào bàn phím mặc định của tôi sử dụng 'phím chết' để tôi có thể thêm â € çéñtß; nhưng đôi khi tôi muốn nhập tiếng Hy Lạp (cổ đại) vào Emacs bằng cách sử dụng greek-ibycus4và hai hệ thống xung đột. Tôi giải quyết vấn đề này bằng cách thay đổi đầu vào chung của mình thành bố cục phím không chết (sử dụng, ví dụ setxkbmap -layout us:); sau đó tôi chuyển chế độ trong Emacs; sau đó tôi quay lại ucsphương thức nhập liệu cho Emacs và chạy setxkbmap -layout us -variant intlđể lấy lại các khóa chết của mình. ... Không lý tưởng !! Nhưng tôi cũng không cần tiếng Hy Lạp thường xuyên.
jon

Cảm ơn bạn đã bình luận nhưng vấn đề là căng thẳng là cơ bản trong tiếng Hy Lạp. Hầu như mọi từ đều cần một sự căng thẳng và rõ ràng nó đang hoạt động ở mọi nơi khác vì vậy tôi không biết phải làm gì.
Adam

@Adam - Tôi cũng nên hỏi: bố cục bàn phím mặc định của bạn cho Ubuntu là gì? Rõ ràng bây giờ bạn không viết tiếng Hy Lạp, vì vậy có thể có sự không phù hợp giữa bố cục bàn phím do hệ điều hành xác định và phương thức nhập của bạn trong Emacs. Để tôi có thể viết giọng Hy Lạp và hơi thở trong Emacs , trước tiên tôi cần chuyển "bàn phím Ubuntu" của mình sang bố cục QWERTY chung chung hơn. Có lẽ bạn có một cuộc đụng độ tương tự của các loại. Từ một thiết bị đầu cuối, setxkbmap -querysẽ in bàn phím hệ điều hành; hoặc bạn có thể nhìn vào unity-control-paneltôi nghĩ.
jon

@jon Nó nói quy tắc: evdev, mô hình pc105, bố trí chúng tôi và khi viết tiếng Hy Lạp nói bố cục: gr, chúng tôi.
Adam

Câu trả lời:


6

Hãy thử thêm (require 'iso-transl)vào .emacstập tin của bạn .


1
Đó là điều đầu tiên tôi đã thử và nó không hoạt động.
Adam

Ồ, xin lỗi về điều đó ... Tôi đã có một vấn đề tương tự như của bạn và thêm dòng đó đã khắc phục cho tôi.
Arthur Azevedo De Amorim

Có tôi biết đây là một giải pháp phổ biến!
Adam

5

Sau khi tìm kiếm và thử nghiệm rộng rãi, tôi đã tìm ra cách để thành công khi sử dụng sự căng thẳng. Ngoài ra, cần lưu ý rằng đó không phải là cách tốt nhất (về mặt kỹ thuật nó không giải quyết được vấn đề nhưng bạn có được những gì bạn muốn). Tôi đã sử dụng lệnh liên kết khóa sau đây cho mỗi chữ cái sử dụng trọng âm:

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

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

Vân vân...

Đủ để nói rằng nếu bất cứ ai tìm thấy một cách tốt hơn được hoan nghênh để chia sẻ nó với chúng tôi vì đây rõ ràng chỉ là một sự thỏa hiệp.


1

Ghi đè chuyển đổi ngôn ngữ của hệ điều hành và sử dụng MULE.

Trong Emacs, nhấn C-\. Nó yêu cầu một phương thức nhập liệu.

Nhập greekvà sau đó chuyển đổi ngôn ngữ với C-\.


0

Nếu hệ điều hành hoặc giao diện của Emacs với nó bằng cách nào đó chuyển các khóa chết như vậy thay vì xử lý chúng, bạn có thể dịch các tổ hợp phím chết trong chính Emacs. Sử dụng input-decode-mapcho điều đó: theo cách này, chuỗi khóa thực sự được dịch thành một lần nhấn phím duy nhất và vòng lặp lệnh nhìn thấy a self-insert-command. Điều này tốt hơn là liên kết khóa với một macro trong bản đồ toàn cầu vì điều này phá vỡ các cơ chế dựa vào việc nhập văn bản là tự chèn, chẳng hạn như hoàn tác các nhóm.

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

Bạn có thể viết một vòng lặp như thế này:

(mapc (lambda (string)
        (define-key input-decode-map (vector dead-acute (aref string 0)) (aref string 1)))
      '("οό" "υύ" "ιί"))
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.