2012-05-04 30 views
13

Tôi muốn các phím và tổ hợp phím nhất định hoạt động như các phím hoặc tổ hợp phím khác trong Emacs. Ví dụ, tôi muốn F5 cư xử như một sự thay thế cho C-c cho mỗi sự kết hợp có thể liên quan đến nó, hoặc C-S như C-. Có thể làm điều đó mà không cần phải tự rebinding tất cả các tổ hợp phím như vậy?Làm cho phím hoạt động như một phím khác

Trả lời

8

Các khóa bạn đang đề cập đến được gọi là 'các phím tiền tố'. Một khóa tiền tố có sơ đồ bàn phím riêng của nó, do đó, để làm cho một phím khác hoạt động giống nhau, bạn cần gán nó cho cùng một sơ đồ bàn phím. Để kiểm soát-c, bạn sử dụng mode-specific-map: Kiểm soát

(global-set-key (kbd "<f5>") mode-specific-map) 

ngày của riêng mình không phải là một chính tiền tố, hoặc thực sự là một chìa khóa ở tất cả, vì nó không gửi một phím nhấn để Emacs [1] cho đến khi bạn nhấn phím khác. Tôi không chắc chắn làm thế nào để remap C-S- để C- trong Emacs. Bạn có thể làm toàn bộ hệ thống với xmodmap, nhưng đó có thể không phải là thứ bạn muốn.

[1] phím điều khiển (và thay đổi, alt) làm gửi một phím nhấn cho hệ điều hành, nhưng Emacs không 'nhìn thấy' này, trừ khi có một phím bấm đồng thời

+1

+1 nhưng ... * "Kiểm soát trên chính nó không phải là một phím tiền tố, hoặc thực sự là một chìa khóa ở tất cả, vì nó không gửi một phím" * ... Điều khiển chắc chắn không gửi một phím bấm của chính nó . Bạn có thể sử dụng, nói, * xev * trong Linux để thấy điều đó. Nó sẽ gửi cả hai nhấn phím khi bạn nhấn nó và một keyrelease khi bạn phát hành nó. Đầu ra A * xev * cho CTRL trên hệ thống của tôi cho: * Sự kiện KeyPress eventKeyPress ... trạng thái 0x14, mã phím 37 (keysym 0xffe3, Control_L) ... * v.v. Tôi tranh chấp rằng bạn đã viết điều khiển đó không phải là "thực sự là một then chốt ở tất cả ". Bàn phím CTRL và CAPS-LOCK của tôi được ánh xạ lại để hoạt động như CTRL thực hiện hành vi phạm tội;) – TacticalCoder

+1

@TacticalCoder: Điểm công bằng, theo như X là có liên quan. Nhưng tôi không nghĩ rằng các phím bấm đăng ký bởi X có thể nhìn thấy Emacs ngày của riêng mình. Không có cách nào để Emacs phát hiện hoặc trả lời một phím bổ trợ nếu nó không sửa đổi một khóa khác. Vì vậy, từ quan điểm của Emacs, CTRL ngày của riêng mình không phải là chìa khóa cho đến khi nó được kết hợp với một khóa khác. – Tyler

5

tôi thích

(define-key key-translation-map [f5] (kbd "\C-c")) 

Đây là good resource.

Để tóm tắt liên kết được đưa ra ở trên: Điểm bất lợi của khóa toàn cầu là khi bạn xác định tổ hợp phím để nhập ký hiệu, nó không hoạt động trong isearch.

khóa-dịch-bản đồ cũng có sự cố. Hãy tưởng tượng bạn đã xác định một biểu tượng | để thực hiện lệnh và C- | để nhập biểu tượng |, nhấn C- | sẽ thực hiện lệnh.

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