문제

F1 키를 사용하는 콘솔 응용 프로그램을 작성하고 있습니다 (도움말). 불행히도, Konsole (KDE) 은이 키를 사용하지 않지만 Gnome 터미널이 사용하므로 F1 키는 내 응용 프로그램에 액세스 할 수 없습니다. F1 키가 이미 GUI 측 (Gnome Terminal)에 맵핑되어 있는지 여부를 감지하는 방법은 없다고 생각하지만, 이에 대한 답은이 질문을 제거 할 것입니다. :)

Ergo, 다음으로 가장 좋은 방법은 Gnome 터미널 내에서 실행 중인지 여부를 감지하는 것입니다. 그렇게 할 방법이 있습니까? 나는 주로 루비 내에서 이것을 수집하는 데 관심이 있지만, 쉘 또는 환경 변수 또는 가상 파일 시스템 ( /proc, /dev 등)을 통해 수행 할 수 있다면 충분할 것입니다.

나는 신뢰할 수있는 방법을 기대하고 있지만, 그놈 터미널이 랩핑 터미널이라고 합리적으로 가정 할 수있는 단서에 대한 환경 변수를 철회하는 것과 같은 "최상의 추측"접근법을 해결할 수 있습니다.

추가 정보 : 다른 키도 그놈 터미널에 의해 "도난"됩니다. 나는 그놈 사용자를위한 대체 키에 대한 일종의 유익한 메시지를 표시하려고합니다.

도움이 되었습니까?

해결책

GoogleAge는 Gnome 터미널 설정에 의존 할 수 있음을 밝혀 냈습니다.

다른 팁

ZSH를 위해 :

[[ "$COLORTERM" == "gnome-terminal" ]] || [[ ${$(ps -p $(ps -p $$ -o ppid=) -o cmd=):t} == gnome-terminal* ]]

그놈-말단은 설정에 사용되었습니다 $COLORTERM, 그러나 이것은 삭제되었습니다 (3.12.0-67-G1D5C1B6).

일반적으로 Termcap info는 terminfo를 사용합니다. 이것은 어떤 종류의 터미널과 함께 일하고 키가 무엇인지 알려줍니다.

그것은 사용자의 선택이며, 그놈 터미널은 아마도 Konsole과 마찬가지로 아마도 X- 말기로보고하기 때문에 사용자가 F1 키 프레스를 만들 수있는 방법이있을 수 있습니다. 따라서, 나는이 둘의 터미널 기능이 동등한 것으로보고 될 것이라고 생각한다.

이 조사 기능 키 이스케이프 코드 가능하다면 Gnome 터미널이 F1 프레스를 생성하기 위해 어떻게 만들 수 있는지 설명하지 않고 흥미로울 수 있습니다. MAC OS X 터미널을 생각하면 오랫동안 사용했지만 Scroll Bar의 PageUp과 PageDown을 잡았으며 명령 페이지와 명령 페이지가 터미널로 전달했습니다.

다소 조잡한 방법, 쉘에 이것을 위임하고 싶다면 C 또는 C ++에서는 다음과 같은 경우 /Proc를 통해 wade해야합니다.

ps x | grep `ps o ppid,fname | grep bash | grep -v grep | head -1 | awk '{print $1}'` | grep 'gnome-terminal' | wc -l

예를 들어 System ()을 통해 자신의 프로그램에서 실행되는 경우 'Bash'가 아닌 프로그램 이름을 'Grep'으로 만들 수 있습니다.

나는 확실히 "해적처럼 해킹"입니다.);)

fwiw, 이것은 그놈 말단의 설정입니다. 사용자는 그놈 -말단 메뉴에서 편집 -> 키보드 단축키로 이동하여 F1 키 바인딩을 변경하거나 삭제할 수 있습니다.

선택한 터미널 에뮬레이터의 $ 용어를 확인한 다음 현재 디렉토리에서 새 터미널을 산란하기위한 별칭을 추가합니다.

if [[ $TERM == 'xterm' ]] ; then
  alias nw='gnome-terminal --working-directory=$PWD'
fi
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top