Tôi muốn tạo một ứng dụng mà tôi vẽ trên cửa sổ, cửa sổ hoặc toàn màn hình, nơi tôi đã nắm chuột nhưng mà không cần chặn mọi phím tắt WM, như Alt + Tab và tôi cũng cần được thông báo bất cứ khi nào người dùng nhập/rời khỏi tiêu điểm.Làm cách nào để tạo các chương trình toàn màn hình Alt + Tab thân thiện (như trò chơi) trong Linux?
Các ứng dụng phổ biến như Google Chrome, Firefox hoặc gnome-terminal có thể xử lý điều này tốt (đi toàn màn hình với F11 nhưng vẫn có Alt + Tab), nhưng chúng không lấy chuột.
SDL có khả năng xử lý kém khét tiếng của trường hợp sử dụng này: SDL_WM_GrabInput lấy chuột nhưng cũng chặn các phím tắt WM; và SDL_FULLSCREEN dường như có một số loại tự động lấy của chính nó (không hỏi tôi tại sao).
Một giải pháp có thể là viết mã cho Alt + Tab, nhưng điều này rất tệ (và không giúp các phím tắt WM khác, như thay đổi sang không gian làm việc khác).
Một giải pháp khác là không gọi SDL_WM_GrabInput, nhưng thay vì giả mạo lấy: chỉ cần ẩn con trỏ chuột (với SDL_ShowCursor) và di chuyển nó trở lại trung tâm bất cứ khi nào người dùng di chuyển. Đó là xấu xí, nhưng trong thực tế công trình - ngoại trừ khóa học cho SDL_FULLSCREEN, bởi vì nó lấy tự động (không giống như việc thực hiện sane). Một giải pháp SDL có khả năng toàn màn hình là điều này, nhưng đó vẫn không phải là những gì tôi muốn. Tôi không muốn có hack để kích hoạt và vô hiệu hóa lấy, tôi muốn lấy con chuột nhưng không lấy bàn phím.
Vì vậy, tôi phát điên với SDL và muốn xem các giải pháp thay thế. Tôi muốn để sử dụng SDL nhưng điều này là không cần thiết.
This question dường như chỉ ra rằng những gì SDL thực sự làm là sử dụng XGrabKeyboard. Bằng cách đọc trang người đàn ông nó không ngay lập tức rõ ràng với tôi cho dù bạn có thể lấy con chuột mà không nắm lấy bàn phím (tôi không bao giờ sử dụng Xlib bản thân mình).
Tôi biết cách tạo "chế độ toàn màn hình giả" với GTK (nghĩa là, trong số các loại thiết bị đầu cuối gnome, thân thiện với Alt + Tab). Tôi tưởng tượng rằng làm điều này, cùng với con chuột ẩn và di chuyển nó trở lại trung tâm ("giả grabbing") có thể làm các trick, nhưng điều này cảm thấy giống như quá nhiều băng keo. Phải có một cách đơn giản hơn. (Ngoài ra tôi không muốn thêm GTK như một phụ thuộc, nhưng tôi cũng không chắc chắn nếu thực hiện các cuộc gọi Xlib thô là một ý tưởng tốt).
Giải pháp tốt cho điều này là gì?
Tôi cần một giải pháp Linux/X11 nhưng sẽ tốt hơn nếu nó là nền tảng chéo - tôi biết điều này có thể được giải quyết trơn tru trên Windows, vì vậy có lẽ có một thư viện thực hiện chính xác điều này. (Ngoài ra, tôi kết xuất với OpenGL nhưng điều này không liên quan)
PS: Có lẽ tôi đang hiểu rõ vấn đề này và tôi không yêu cầu câu hỏi phù hợp, vì vậy vui lòng chỉ ra các phương pháp tôi đã làm ' t xem xét.
[Câu hỏi tôi trích dẫn] (http://stackoverflow.com/questions/10916997/alt-tab-from-fullscreen-sdl), theo ý kiến của tôi, không thực sự là bản sao, vì tôi không tìm kiếm cụ thể cho giải pháp SDL. SDL chỉ là thư viện tôi đang sử dụng * ngay bây giờ *. – darque
Tôi chỉ thấy ở Xlib API hàm [XGrabPointer] (http://tronche.com/gui/x/xlib/input/XGrabPointer.html). Vì vậy, rõ ràng, Xlib có đủ chức năng để lấy * chỉ * chuột, mà không cần phải lấy bàn phím. – darque