Alterar mapeamentos de teclas para o terminal xfce4

1

Oi eu gostaria de mudar um pouco os mapeamentos de teclas no xfce4-terminal, talvez similar a adicionar Xterm.VT100.translations a .Xresources.

Em particular, eu quero fazer ctrl-backspace deletar a última palavra, e ctrl-delete deletar a próxima palavra.

Bônus: eu gostaria de fazer alt agir como ctrl (funcionalidade duplicada) para backspace, delete, seta para a esquerda, seta para a direita.

Como fazer todas ou algumas dessas coisas no xfce4-terminal?

EDITAR: Progresso até agora: Estou usando o bash, e o bash usa a biblioteca readline e uma função integrada bash, "bind", para mapear sequências de teclas para funções readline. As funções que preciso são "shell-kill-word" e "shell-backward-kill-word". Em princípio, eu deveria ser capaz de fazer algo assim:

"\C-Rubout":shell-backward-kill-word
"\C-Delete":shell-kill-word
"\M-Rubout":shell-backward-kill-word
"\M-Delete":shell-kill-word

No entanto, o emulador xfce4-terminal, ou algum componente mais alto no processo (poderia ser o gerenciador de janelas, xfwm4, o próprio programa Xorg?) não está cooperando. Em geral, a meta key é traduzida para um caractere de escape, por exemplo, isso funciona:

"\ey":shell-kill-word  <-- Meta + y kills next word

mas com o backspace e delete keys estou sem sorte. Eu testei os códigos de teclas de dois emuladores de terminal, xfce4-terminal e xterm, gerados por backspace e delete e combinações de teclas de controle no meu teclado. Aqui estão eles, conforme relatado pelo comando C-h C-l do emacs:

xterm:
  backspace:    DEL
  delete:       \e[3~
  \C-backspace: \C-h
  \C-delete:    \e[3;5~
  \M-backspace: y-umlaut (y with two dots over it)
  \M-delete:    nothing

xfce4-terminal:
  backspace:    DEL
  delete:       \e[3~
  \C-backspace: DEL
  \C-delete:    \e[3;5~
  \M-backspace: \e DEL
  \M-delete:    nothing

Em particular, em xfce4-terminal é impossível ligar \ C-backspace a shell-backword-kill-word porque ele envia exatamente o mesmo keycode que um backspace regular. E é impossível ligar o \ M-delete ao shell-kill-word porque ele não envia um código de chave.

Estou frustrado porque uma (grande) razão para mudar para o Linux e lidar com todas as questões de compatibilidade de hardware / software é que o Linux é muito personalizável. Eu gosto de ter minhas janelas se concentrar quando eu passar o mouse sobre elas, por exemplo, em vez de clicar nelas. Lidar com problemas como este nas distros modernas do Linux parece-me ser uma tarefa de alta prioridade. Infelizmente, não tenho tempo para fazer toda a pesquisa de fundo no X, e preciso fazer o próximo passo para resolver esse problema. Alguém com mais conhecimento do ecossistema Xorg pode me apontar na direção certa? Talvez haja um emulador de terminal alternativo que faça isso melhor?

Informação final: executando o emacs em uma janela X, ele recebe todos os códigos de acesso, menos um:

backspace:    <backspace>
delete:       <delete>
\C-backspace: <C-backspace>
\C-delete:    <C-delete>
\M-backspace: <M-backspace>
\M-delete:    nothing
    
por Colin 21.10.2014 / 21:01

2 respostas

1

Ok, aqui está o que eu tenho no meu .zshrc para ctrl + < - , ctrl + - > e alt + < - , alt + - >

## use Ctrl <- and Ctrl -> for jumping to word-beginnings on the CL
bindkey "^[[1;5C" forward-word
bindkey "^[[1;5D" backward-word                       
## the same for alt-left-arrow and alt-right-arrow            
bindkey '^[[1;3C' forward-word                          
bindkey '^[[1;3D' backward-word

No meu sistema estes trabalhos para crtl + del e alt + del mas eu não encontrei as teclas para ctrl + backspace e alt + backspace .

bindkey '^[[3;5~' kill-word
bindkey '^[[3;3~' kill-word

Você insere esses caracteres ímpares que representam cada combinação de teclas pressionando Ctrl + V seguido pela combinação de teclas desejada. Por exemplo, pressionando Ctrl + V seguido por Ctrl + < - produz ^[[1;5D

    
por 10.11.2014 / 02:22
1

Bem, eu tive que abandonar o xfce4-terminal, porque os atalhos de teclado eram um pesadelo e voltava ao xterm. Eu realmente prefiro ter várias janelas para abas de qualquer maneira, acontece. Aqui está o que eu fiz para keybindings para o xterm < - > bash

# ctrl-backspace
"\C-h":shell-backward-kill-word

# meta-backspace
"ÿ":shell-backward-kill-word

# ctrl-delete
"\e[3;5~":shell-kill-word

# meta-delete
#  not detected

# ctrl-right-arrow
"\e[1;5C":shell-forward-word

# ctrl-left-arrow
"\e[1;5D":shell-backward-word

# meta-right-arrow
"\e[1;3C":forward-word

# meta-left-arrow
"\e[1;3D":shell-backward-word

O único que estou perdendo é a meta-exclusão ... o que você pode fazer?

    
por 04.12.2014 / 03:04