2014-11-13 1 views
-1

안녕하세요, xfce4-terminal에서 약간의 키 매핑을 변경하고 싶습니다. 또는 xfce4 X 환경에서 실행중인 모든 터미널을 변경하고 싶습니다.xfce4의 터미널에서 사용자 정의 키 바인딩 - 이것이 실제로 불가능할 수도 있습니까?

특히, 나는 ctrl-backspace와 meta-backspace가 마지막 단어를 삭제하도록하고, ctrl-delete와 meta-delete는 다음 단어를 삭제하려고합니다.

진도 지금까지 : 나는 bash를 사용하고 있으며 bash는 readline 라이브러리와 bash 내장 함수 "bind"를 사용하여 키 시퀀스를 readline 함수에 매핑합니다. 내가 필요로하는 기능은 "shell-kill-word"와 "shell-backward-kill-word"로 밝혀졌습니다. 원칙적으로, 나는 이런 식으로 뭔가 할 수 있어야한다 : 그 과정에서 더 높은 상류

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

그러나, 들어 xfce4-터미널 에뮬레이터, 또는 구성 요소를 (이것은 윈도우 매니저, xfwm4의 Xorg에서 프로그램 자체가 될 수 ?) 협조하지 않습니다.

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

을하지만, 백 스페이스 및 삭제 키 나는 운이있어 : 일반적으로, 메타 키는 예를 들어이 작동, 이스케이프 문자로 변환됩니다. 필자는 키보드의 백 스페이스 키와 삭제 키와 컨트롤 키 조합으로 생성 된 두 개의 터미널 에뮬레이터 인 xfce4-terminal과 xterm에서 키 코드를 테스트했습니다. 여기서 그들은, 이맥스의 채널 CL 명령에 의해보고되어 있습니다 : 그것은 동일한 키 코드를 전송하기 때문에 특히

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 

를 들어 xfce4-터미널에서 쉘 - 되돌아 가기 - 죽일 단어에 \ C-백 스페이스를 결합하는 것은 불가능합니다 일반 백 스페이스로 키 코드를 전혀 보내지 않기 때문에 shell-kill-word에 \ M-delete를 묶는 것은 불가능합니다.

불행히도 저는 X 윈도우 시스템에 대한 전문가가 아닙니다. Xorg 생태계에 대한 지식이있는 사람이 올바른 방향으로 나를 안내 할 수 있습니까? 아마도 더 나은 대안 터미널 에뮬레이터가 있을까요? xfce4 창 관리자와 Xorg가있는 현재 데비안 배포판을 실행 중입니다.

저는 최신 Linux 소프트웨어와 전형적인 최신 컴퓨터 설정에서는이 동작을 얻지 못할 것이라고 생각합니다. 정말로 그럴까요?

정보의

마지막 조각 :는 X 윈도우에서 이맥스를 실행, 그것은 정확하게 키 코드 중 하나를 제외하고 모두 가져옵니다, 나는 키 바인딩 악몽 있었기 때문에, 들어 xfce4-터미널 도랑했다

backspace: <backspace> 
delete:  <delete> 
\C-backspace: <C-backspace> 
\C-delete: <C-delete> 
\M-backspace: <M-backspace> 
\M-delete: nothing 
+0

세세한 부분까지 들어가기는 어렵지 만 단말기는 매우 오래되어 변경하기가 어렵다는 것을 기억하십시오. xterm에는 전통적인 시스템에서 이스케이프 코드로 표현할 수없는 많은 수의 키 스트로크가 새롭게 지원되지 않습니다. 이것을 더 복잡하게 만드는 것은 xterm의 메타 탈출 설정과 8 비트 청결 설정입니다. –

+0

@EtanReisner님께 감사드립니다. 나는 더 많은 것을 논평 할 수있는 전문가가 아니기 때문에 (그리고 나는 해결책을 찾지 못했다). 운영 체제 용 입력 장치를 해당 운영 체제에 매핑 할 수없는 경우 뭔가 잘못되었다고 생각됩니다. – Colin

+0

가장 널리 사용되는 Linux 윈도우 시스템/하드웨어 콤보 중 하나에서 일반적인 문제를 신중하게 찾아내는 데 시간을 허비하는 사람과 SO 솔루션을 찾으려면 노력을 기울여야합니다. 그것은 나를 우울하게 만든다. – Colin

답변

0

음과 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 

- 여기에 내가 xterm을 <에 대한 키 바인딩을 위해 한 일이다.

관련 문제