2012-02-28 12 views
9

Al escribir en Emacs utilizo el interruptor de diseño de teclado interno.Hacer que Emacs ignore el diseño del teclado del sistema

A veces cambio de diseño del teclado del sistema cuando trabajo con otras aplicaciones.

Si los diseños interno y de sistema de ambos Emacs no son en inglés, interfieren y es imposible trabajar. Por ejemplo, tengo dos formas de escribir una letra pero no puedo escribir el carácter de coma.

Quiero hacer que Emacs ignore el diseño del teclado del sistema. ¿Es posible?

EDIT:
Mi sistema operativo es Linux Mint 10 (64 bits)
utilizo Emacs 24

+0

¿Cuál es su método de entrada de Emacs y cuál es el diseño del teclado de su sistema? Por favor, diga los nombres exactos. –

Respuesta

4

Se puede decir lo que las disposiciones de teclado que utiliza en su sistema operativo y qué métodos de entrada se utiliza en Emacs? Actualmente no hay suficiente información en tu publicación. Mi problema fue, por ejemplo, que utilicé Colemak y la máquina de escribir rusa como diseños de sistema operativo y la máquina de escribir rusa como método de entrada secundario de Emacs. La combinación Colemak (OS) -Russian (Emacs) estropeó mi entrada, porque el método de entrada de Emacs es el mapeo del carácter inglés, recibido del sistema operativo, a algún personaje ruso, y todos los métodos de entrada en Emacs se basan en la asignación de QWERTY. Por ejemplo, lo que debería haber sido "йцукен" se imprimió como "йцазпо". Lo resuelto mediante la ejecución del siguiente código:

(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"?Ь) ("<" ?Б) (">" ?Ю) ("?" ?Ё)) 

y luego se usa en lugar de colemak-russianrussian-typewriter. Puede cambiar los pares asociados con los diseños correspondientes.

EDITAR: Por supuesto, esta no es la solución más correcta. Como se observó en Maksim, los caracteres comunes a ambos idiomas se traducen aunque no se los debe usar. Por ejemplo, configuro el diseño del sistema para el método de entrada Colemak y Emacs para "colemak-ruso" - entonces no puedo usar comas, que se convierten en "б".

Para hacer que Emacs ignore el diseño del sistema, puede integrarlo con un software de terceros como xxkb, SCIM o IBus. Mientras hablas ruso, puedes probar este tutorial.

Yo personalmente uso un hacky workaround para traducir los caracteres rusos dentro de las combinaciones de teclas e ignorar por completo los métodos de entrada de Emacs.

+0

No sé cuándo podré probarlo, pero creo que está bien. –

+0

Parece que es imposible ignorar el diseño del sistema ya que Emacs no recibe entrada directamente del teclado. Su código lo hará interpretar el carácter cirílico correctamente, pero ¿funcionará? Digamos "," y "." personajes que también se presentan en diseños latinos? –

Cuestiones relacionadas