Tôi mới tham gia chương trình X.org. Tôi muốn xây dựng một ứng dụng nhỏ phản ứng trên chuyển đổi bố trí bàn phím X. Tôi đã tìm kiếm, nhưng không tìm thấy sự kiện nào được kích hoạt khi bố cục kb được bật. Xin vui lòng, chỉ cho tôi sự kiện chính xác. Cảm ơnSự kiện nào được kích hoạt khi chuyển bố cục kb trong X.org
Trả lời
Có loại sự kiện XkbStateNotify
, là một phần của X Keyboard Extension. Bạn có thể lấy ngôn ngữ bố trí từ nó như thế này:
void x11Events(XEvent* evt)
{
if(evt->type == xkbEventType) {
XkbEvent* xkbevt = (XkbEvent*)evt;
if (xkbevt->any.xkb_type == XkbStateNotify) {
int lang = xkbevt->state.group;
// Some code using lang here.
}
}
}
Để có được xkbEventType
, hãy gọi XkbQueryExtension()
chức năng (khai báo trong XKBlib.h
).
Tuy nhiên, XkbStateNotify
không chỉ được kích hoạt khi thay đổi bố cục. Đây là từ đặc điểm kỹ thuật tham chiếu ở trên:
Những thay đổi báo cáo bao gồm những thay đổi bất kỳ khía cạnh của tình trạng bàn phím : khi một sửa đổi được thiết lập hoặc unset, khi nhóm hiện thay đổi, hoặc khi một nút trỏ được nhấn hoặc phát hành.
Bởi vì điều này, bạn sẽ phải lưu giá trị của lang
nơi nào đó, và sau đó, khi sự kiện mới đến, so sánh giá trị mới của lang
đến một trong những lưu trước đó.
NB. Ngoài ra còn có sự kiện XkbMapNotifyEvent
, thông báo không phải về việc chuyển đổi bố cục cho mỗi lần, mà là thay đổi ánh xạ bàn phím. Bạn cũng có thể muốn xem xét điều đó.
Lưu ý cho các lập trình viên có thể là một gợi ý làm thế nào để có được sự kiện này bằng cách sử dụng một bộ công cụ hiện đại như GTK. – user4815162342
Trong GTK, thường không cần xử lý 'XEvents 'thô (không phải để phát hiện thay đổi bố cục, ít nhất), vì có [sự kiện gdk] (https://developer.gnome.org/pygtk/stable/class- gdkevent.html), có thể được sử dụng để lấy nhóm bàn phím hiện tại. Hơn nữa, việc can thiệp vào xử lý sự kiện X trong ứng dụng gtk có thể làm suy yếu bộ công cụ vì nó có vòng lặp xử lý sự kiện riêng. Tôi không có nhiều về Qt, nhưng tôi nghi ngờ những thứ tương tự ở đó. – shakurov
Đó là chính xác những gì tôi đã đề cập đến - mã tương đương với ở trên, nhưng bằng cách sử dụng các sự kiện GDK. Nó phải có thể truy cập sự kiện chuyển đổi bố cục Xkb từ GTK/GDK, bởi vì ít nhất các bảng điều khiển chỉ báo bàn phím cần phát hiện chuyển đổi. – user4815162342
- 1. Kích hoạt sự kiện sau khi bố cục Winform hoàn tất
- 2. Bố cục được bố trí khi nào?
- 3. WPF - Sắp xếp sự kiện bố cục được lặp lại
- 4. Sự kiện JAVAFX được kích hoạt khi chọn hộp kiểm
- 5. Ngăn sự kiện nhấp chuột kích hoạt khi sự kiện dblclick kích hoạt
- 6. Sự kiện nào được kích hoạt khi ShowDialog (ParentForm) được gọi trong C#
- 7. Cách tìm hiểu sự kiện JavaScript nào được kích hoạt?
- 8. Backbone Sự kiện: đăng nhập tất cả các sự kiện khi chúng được kích hoạt
- 9. API toàn màn hình: Sự kiện nào được kích hoạt?
- 10. Sự kiện bong bóng rối từ itemview đến bố cục bố cục gốc?
- 11. Hoạt ảnh khi thay đổi bố cục
- 12. kích hoạt sự kiện "dán" trong Javascript
- 13. Làm thế nào để chặn cho đến khi một sự kiện được kích hoạt trong C#
- 14. Sự kiện CLICK CLICK không kích hoạt (khi chuyển sang di chuột, nó không hoạt động)
- 15. Các sự kiện Jquery .bind được kích hoạt khi chụp sự kiện hoặc bong bóng sự kiện
- 16. Sự kiện nào được kích hoạt khi UserControl được hiển thị?
- 17. sự kiện trênTouch đôi khi không kích hoạt ACTION_POINTER_DOWN
- 18. Sự kiện kích hoạt khi dấu mũ di chuyển giữa các dòng trong textarea
- 19. Chức năng JQuery $() kích hoạt sự kiện nào?
- 20. Javascript: Nhiều sự kiện mouseout kích hoạt
- 21. Kích hoạt sự kiện onItemDisclosure gây ra sự kiện itemtap để kích hoạt
- 22. Chuyển giữa 2 bố cục trong hoạt động android
- 23. Sự kiện LongClick cũng kích hoạt Sự kiện nhấp
- 24. Sửa kích thước bố cục
- 25. Lỗi kích hoạt sự kiện tùy chỉnh kích hoạt JQuery
- 26. kích hoạt sự kiện khi thay đổi lớp học
- 27. Sự kiện nào được kích hoạt khi Mac quay lại chế độ ngủ?
- 28. sự kiện onclick không kích hoạt sau sự kiện onchange
- 29. Làm thế nào để kích hoạt một sự kiện khi mô hình Backbone được lưu?
- 30. Sự kiện kích hoạt khi tải hình nền
Bạn đang làm gì để chuyển bố cục bàn phím? Bạn đang sử dụng một máy khách GUI? Hoặc chỉnh sửa một tập tin cấu hình? Khi nào thì thay đổi có hiệu lực? Đây là những manh mối có thể giúp chúng ta tìm hiểu nơi để tìm. –
Chuyển đổi giữa bố cục ngôn ngữ (en, cs, ...). Ứng dụng khách GUI nghe nhạc chuyển đổi kb (ví dụ: tôi đã thiết lập cả hai ca để chuyển bố cục bàn phím và công tắc này tạo ra sự kiện mà tôi muốn bắt và thực hiện một số thao tác). Nên là mã c/C++. – Pat
Bạn có thể đăng một số mã không? – JoRouss