2016-07-22 7 views
3

그놈 셸에서 키 입력을 잡아하는 방법 - 거기에 모든 블로그 게시물 등을 - 나도의 부족으로 어려움을 겪고 있어요 최신 문서 ...는 내가 처음으로 쉘 확장 및 쓰기 위해 노력하고있어

온라인 코드를보고 오래된 메일 링리스트 메시지 - - 즉 내가 키보드의 모든 키 입력을 잡으려고 노력하고 있어요는 최근까지 일을 올바른 방법이었다 보인다 :

const Shell = imports.gi.Shell; 
global.set_stage_input_mode(Shell.StageInputMode.FULLSCREEN); 
global.stage.connect('key-press-event', myCallbackHere); 

을 그러나이 보이지 않는다 일하다. set_stage_input_mode 함수와 StageInputMode 속성은 적어도 내 Fedora 24에서 GTK 3.20.6을 실행하는 것처럼 보입니다.

내 확장 프로그램이 사용자가 수행 한 모든 키 입력을 잡는 올바른 방법은 무엇입니까?

답변

4

나는이 순간에 올바른 방법이 있다고 생각하지 않습니다. X 특정 또는 Wayland 특정 또는 심지어이 정보를 제공하기 위해 Gnome 셸을 패치 할 수있는 뭔가를 함께 해킹 할 수 있습니다.

Wayland의 경우 https://github.com/MaartenBaert/wayland-keylogger에서 시작할 수 있으며 X의 경우 autokey (https://github.com/autokey/autokey/blob/master/src/lib/interface.py)의 키 검색을 재사용 할 수 있습니다.

IRC에서 autokey를 대체하기를 원한다고 썼다면 나는 이것이 당신이 바라는 답변이 아닌 것 같아요. 외부 프로그램에서 입력을 얻으려면 GLib.spawn_async_with_pipes (https://people.gnome.org/~gcampagna/docs/GLib-2.0/GLib.spawn_async_with_pipes.html)을 사용할 수 있습니다.

얼마 전 셸 확장 코드 xinput test을 작성하고 대략 무슨 일이 일어 났는지 기록했습니다 (영숫자 키 대 왼쪽 Ctrl 키와 리턴 키를 생각해보십시오). 해당 코드는 https://gist.github.com/daniellandau/7679741bf8bbc5c345591593ca05e9f6에서 확인할 수 있습니다. 그것은 어떤 종류의 매크로 확장을 수행하기에 충분히 강력하지 않으므로 Autokey에서 탐지 코드를 재사용 할 것을 권장합니다.

일반적으로 https://people.gnome.org/~gcampagna/docs의 문서는 Gnome 쉘 확장에서 사용할 수있는 라이브러리에 대한 API 참조를 찾을 수있는 곳입니다. 나는 당신이 당신의 프로젝트를 앞당기기를 바랍니다. 확장 프로그램 작성을 시작하면 실망 스럽지만 결국에는 매우 재미 있습니다.

+0

안녕하세요! 감사합니다. 개인 프로젝트를위한 여가 시간을 갖자 마자 링크를 점검 할 것입니다. 지금은 이것을 작성해 주셔서 감사합니다. 나는 이것으로 돌아가서 질문을 승인/후속 조치 할 것이다. :) – mac

관련 문제