2012-02-28 46 views
9

Khi nhập trong Emacs, tôi sử dụng nút bố cục bàn phím bên trong.Đặt Emacs bỏ qua bố cục bàn phím hệ thống

Đôi khi tôi chuyển bố cục bàn phím hệ thống, khi tôi làm việc với các ứng dụng khác.

Nếu cả hai bố cục nội bộ và hệ thống của Emacs không phải là tiếng Anh, chúng can thiệp và không thể hoạt động. Ví dụ: tôi có hai cách để nhập một số chữ cái nhưng không có cách nào để nhập ký tự dấu phẩy.

Tôi muốn làm cho Emacs bỏ qua bố cục bàn phím hệ thống. Có thể không?

EDIT:
OS của tôi là Linux Mint 10 (64bit)
Tôi sử dụng Emacs 24

+0

Phương thức nhập Emacs của bạn là gì và bố cục bàn phím hệ thống của bạn là gì? Xin vui lòng cho biết tên chính xác. –

Trả lời

4

Bạn có thể cho những gì bố trí bàn phím bạn sử dụng trong hệ điều hành của bạn và những gì phương thức nhập bạn sử dụng trong Emacs? Hiện tại không có đủ thông tin trong bài đăng của bạn. Vấn đề của tôi là, ví dụ, tôi đã sử dụng Colemak và máy đánh chữ Nga làm bố trí hệ điều hành và máy đánh chữ Nga làm phương thức nhập liệu Emacs thứ cấp. Kết hợp Colemak (OS) -Russian (Emacs) làm rối loạn đầu vào của tôi, vì phương thức nhập của Emacs là bản đồ của ký tự tiếng Anh, nhận được từ hệ điều hành, một số ký tự tiếng Nga, và tất cả các phương thức nhập trong Emacs đều dựa trên ánh xạ từ QWERTY. Ví dụ: "йцукен" đã được in là "йцазпо". Tôi giải quyết nó bằng cách chạy đoạn mã sau:

(require 'quail) 

(quail-define-package 
"colemak-russian" "Russian" "ru" nil 
"Russian-typewriter keyboard layout assuming that your default 
keyboard layout is Colemak" 
nil t t t t nil nil nil nil nil t) 

(quail-define-rules 
("1" ?№) ("2" ?-) ("3" ?/) ("4" ?\") ("5" ?:) ("6" ?,) ("7" ?.) ("8" ?_) ("9" ??) 
("0" ?%) ("-" ?!) ("=" ?\;) ("q" ?й) ("w" ?ц) ("f" ?у) ("p" ?к) ("g" ?е) ("j" ?н)("l" ?г) 
("u" ?ш) ("y" ?щ) (";" ?з) ("[" ?х) ("]" ?ъ) ("\\" ?\)) ("a" ?ф) ("r" ?ы) ("s" ?в) 
("t" ?а) ("d" ?п) ("h" ?р) ("n" ?о) ("e" ?л) ("i" ?д) ("o" ?ж) ("'" ?э) ("z" ?я) ("x" ?ч) 
("c" ?с) ("v" ?м) ("b" ?и) ("k" ?т) ("m" ?ь) ("," ?б) ("." ?ю) ("/" ?ё) ("~" ?+) ("!" ?1) 
("@" ?2) ("#" ?3) ("$" ?4) ("%" ?5) ("^" ?6) ("&" ?7) ("*" ?8) ("\(" ?9) ("\)" ?0) ("_" ?=) 
("+" ?\\) ("Q" ?Й) ("W" ?Ц) ("F" ?У) ("P" ?К) ("G" ?Е) ("J" ?Н) ("L" ?Г) ("U" ?Ш) ("Y" ?Щ) 
(":" ?З) ("{" ?Х) ("}" ?Ъ) ("|"?\() ("A" ?Ф) ("R" ?Ы) ("S" ?В) ("T" ?А) ("D" ?П) ("H" ?Р) 
("N" ?О) ("E" ?Л) ("I" ?Д) ("O" ?Ж) ("\"" ?Э) ("Z" ?Я) ("V" ?Ч) ("X" ?С) ("C" ?М) ("B" ?И) 
("K" ?Т) ("M"?Ь) ("<" ?Б) (">" ?Ю) ("?" ?Ё)) 

và sau đó sử dụng colemak-russian thay vì russian-typewriter. Bạn có thể thay đổi các cặp liên quan tương ứng với bố cục của bạn.

EDIT: Tất nhiên, đây không phải là giải pháp chính xác nhất. Như đã ghi chú Maksim, các ký tự chung cho cả hai ngôn ngữ được dịch ngay cả khi không nên. Ví dụ: tôi đặt bố cục hệ thống thành phương thức nhập Colemak và Emacs thành "colemak-russian" - sau đó tôi không thể sử dụng dấu phẩy, từ đó trở thành "б".

Để làm cho Emac bỏ qua bố cục hệ thống, bạn có thể tích hợp nó với phần mềm của bên thứ ba như xxkb, SCIM hoặc IBus. Khi bạn nói tiếng Nga, bạn có thể thử điều này tutorial.

Cá nhân tôi sử dụng hacky workaround để dịch các ký tự tiếng Nga bên trong các combo chính và bỏ qua các phương thức nhập Emacs hoàn toàn.

+0

Tôi không biết khi nào tôi có thể kiểm tra nó, nhưng tôi nghĩ điều đó là ổn. –

+0

Có vẻ như không thể bỏ qua bố cục hệ thống vì Emacs không nhận được đầu vào trực tiếp từ bàn phím. Mã của bạn sẽ làm cho nó diễn giải ký tự Cyrillic đúng cách, nhưng nó sẽ hoạt động nói cho "," và "." các ký tự hiện diện trong bố cục La tinh? –

Các vấn đề liên quan