unir una tres tiempo telefono telefonicas samsung recibir pueden por personas otro mismo llamadas llamada hacer fijo enlazar cuantas conferencia como celular emacs

emacs - una - como unir llamadas telefonicas



¿Cómo puedo enlazar un comando a Ci sin cambiar TAB? (6)

En emacs, quiero enlazar un comando a Ci. Así que puse (global-set-key "/Ci" ''forward-word)

en mi archivo .emacs Esto funciona, excepto que ahora la tecla TAB también está vinculada a ''forward-word''.

¿Cómo puedo enlazar un comando a Ci sin cambiar TAB?


En resumen, esto debería resolver el problema para usted:

(setq local-function-key-map (delq ''(kp-tab . [9]) local-function-key-map)) (global-set-key (kbd "C-i") ''forward-word)

Versión más larga:

De la documentación de emacs lisp sobre teclas de función :

En ASCII, Ci y <TAB> son el mismo carácter. Si el terminal puede distinguirlos, Emacs transmite la distinción a los programas Lisp al representar el primero como el número entero 9 y el último como la pestaña de símbolos.

La mayoría de las veces, no es útil distinguir los dos. Por lo tanto, normalmente la función local-key-map (ver mapas de traducción) está configurada para asignar la pestaña a 9. Por lo tanto, un enlace de clave para el código de carácter 9 (el carácter Ci) también se aplica a la pestaña. Lo mismo ocurre con los otros símbolos de este grupo. La función read-char también convierte estos eventos en caracteres.

Entonces, una vez que haga lo siguiente, puede ver la diferencia en los enlaces de teclas:

(setq local-function-key-map (delq ''(kp-tab . [9]) local-function-key-map)) ;; this is C-i (global-set-key (kbd "C-i") (lambda () (interactive) (message "C-i"))) ;; this is <tab> key (global-set-key (kbd "<tab>") (lambda () (interactive) (message "<tab>")))

Tenga en cuenta que cada modo configura los distintos enlaces TAB de manera diferente, por lo que es posible que deba realizar la personalización por modo que le interesa.

Dependencia de la versión :

Lo anterior funciona para Emacs 23.1. Desde el archivo de NOTICIAS:

Las secuencias de teclas de función ahora se asignan utilizando `local-function-key-map '', una nueva variable. Esto se hereda de la variable global function-key-map, que ya no se usa directamente.

Lo que significa que, en las versiones 22 y anteriores, puede obtener el mismo efecto utilizando la function-key-map . Probé esto y encontré que funcionaba con Emacs 21.

(setq local-function-key-map (delq ''(kp-tab . [9]) function-key-map)) (global-set-key (kbd "C-i") ''forward-word)


Encontré esta solución, después de mucho dolor, perdida en los archivos de mensajes. Es simple, evita conflictos con otros modos y es el único que funcionó para mí:

;; Translate the problematic keys to the function key Hyper: (keyboard-translate ?/C-i ?/H-i) (keyboard-translate ?/C-m ?/H-m) ;; Rebind then accordantly: (global-set-key [?/H-m] ''delete-backward-char) (global-set-key [?/H-i] ''iswitchb-buffer)


Esta solución, que es una especie de combinación de las dos anteriores, funcionó para mí. En este caso particular, quise reasignar Ci a la línea anterior. Esta solución conserva la funcionalidad de TAB en el minibúfer. Tenga en cuenta que TAB debe ser refinado localmente para los modos que usa con un gancho:

; As mentioned in the other solution, C-i and TAB are the same character in ASCII. ; We have to differentiate between the two and reassign each in a roundabout way. ; differentiate tab from C-i (setq local-function-key-map (delq ''(kp-tab . [9]) function-key-map)) ;; Translate the problematic key to the function key Hyper: (keyboard-translate ?/C-i ?/H-i) ;; Rebind accordingly (global-set-key [?/H-i] ''previous-line) ; Finish by redefining tab for c-mode. (defun my-c-mode-common-hook () (local-set-key (kbd "<tab>") ''indent-for-tab-command) ) (add-hook ''c-mode-common-hook ''my-c-mode-common-hook)


Quizás esto pueda ayudar, como me ayudó a mí:

En lugar de:

; differentiate tab from Ci (setq local-function-key-map (delq ''(kp-tab . [9]) function-key-map))

Tratar:

(define-key local-function-key-map [tab] nil)


Recomiendo lo siguiente:

(define-key input-decode-map (kbd "C-i") (kbd "H-i")) (global-set-key (kbd "H-i") ''whatever-you-want)

Debería funcionar desde al menos Emacs 23.

Esto es similar a la técnica de conversión de teclado en la respuesta de Caio, pero funciona en un nivel ligeramente superior.

La desventaja de la conversión del teclado es que tendrá efecto incluso cuando Emacs no esté ejecutando la secuencia de teclas de lectura, y en particular Cq Ci ya no funcionará como una forma de insertar un carácter de tabulación literal.

La modificación de local-function-key-map no funciona bien, porque normalmente desea que la tecla <tab> continúe haciendo lo que haya definido el modo actual para TAB .


Se me ocurrió mi propia solución antes de ver esta pregunta:

(define-key input-decode-map [#x2000009] [#x6000069]) ; C-S-i (define-key input-decode-map [#x200000d] [#x600006d]) ; C-S-m (define-key input-decode-map "/C-i" [#x4000069]) (define-key input-decode-map "/C-m" [#x400006d]) (define-key input-decode-map "/C-[" [#x400005b])

La razón por la que funciona es que el código clave que genera la clave de letra es el código clave "real" [a la izquierda], mientras que el código clave en la pestaña, ingresa, escape genera son símbolos de teclas de función. Los símbolos de las teclas de función ya están asignados en el mapa de entrada-decodificación a los mismos símbolos que las letras generan naturalmente, y continuarán funcionando.

Los códigos clave que los asigné para usar el mismo mecanismo que los códigos clave para C-0, etc. [es decir, claves que no tienen códigos de control en ASCII]. Por lo tanto, se describen como, por ejemplo, Ci (ya que están excluidos de la carcasa especial que los describe como TAB / etc), y aún tienen modificadores de evento / evento-tipo-básico (control) /? I.

El inconveniente es que es un poco más difícil trabajar con ellos, tiene que usar los números, ya que no son generados por (kbd) y no puede llamar a una función o variable dentro de un vector literal. Si vincula Ci o Cm a una función de movimiento, funcionará con la selección de cambios (ya que a pesar de que son teclas "falsas", el modo aún sabe que CSm está cambiado y que su equivalente normal es Cm)

NOTA: Esto afectará a los terminales de texto, por lo que si usa terminales de texto necesitará detectar si la GUI se está ejecutando con (when window-system ...) - si usa el Demonio de Emacs con ventanas gráficas, puede querer poner esto en una ventana de configuración-gancho.