2014-11-11 2 views
3

현재 X 서버가 실행 중이지만 창 관리자가없는 Linux armv7 임베디드 시스템에서 SDL2를 사용하는 UnrealEngine4 데모 앱을 빌드하고 실행하려고합니다.SDL2 입력 포커스

내가보기에는 마우스가 정상적으로 작동하지만 앱이 키보드 이벤트에 반응하지 않는다는 것입니다.

더 자세히 살펴보면 SDL_Event.key.windowID가 앱의 SDL_Window ID와 일치하지 않으면 UE4가 키보드 이벤트를 무시한다는 점이 밝혀졌습니다. SDL_GetKeyboardFocus()를 호출하여이를 확인했으며 키보드 포커스가 0 인 반면 앱의 창 ID는 5이지만

키보드 포커스가 특정으로 설정되어있는 것처럼 보입니다. X 서버에서 focusIn 이벤트를받은 후 SDL 창을 엽니 다. (SDL_x11 이벤트 .c의 X11_DispatchEvent() 참조).

FocusIn/FocusOut not generated

SDL_x11windows에 X11_RaiseWindow()를 해킹 후 : 그러나이 focusIn 이벤트는 X 서버에 의해 생성되지 않습니다 윈도우 매니저없이 X11을 실행하는 경우처럼 이미 답이 여기로

같습니다 .c 추가 :

X11_XSetInputFocus (display, data-> xwindow, RevertToParent, CurrentTime); SDL_SetKeyboardFocus (data-> window);

은 최종적으로 키보드 이벤트를 처리 할 수있었습니다.

위의 평가 소리가 맞습니까? 그렇다면 깨끗한 해결책이 있습니까? 나는 아직도 파고 있지만 어떤 제안이라도 대단히 감사 할 것입니다.

감사

+0

같은 문제가 발생했습니다. 그것은 이것이 SDL의 실제 행동 인 것으로 보입니다. 따라서 버그 리포트를 제출해야합니다. –

답변

0

이것은 우리가에 대한 수정을 밀어 SDL에서 버그로 판명이 수정 SDL 2.0.4에있을 것입니다

https://hg.libsdl.org/SDL/rev/aa4e4768c6c1

, 이상 거품해야 잠시 후 언리얼에 연결하십시오.