[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/xelb 39d4efb 07/10: Set XKB per-client flags
From: |
Chris Feng |
Subject: |
[elpa] externals/xelb 39d4efb 07/10: Set XKB per-client flags |
Date: |
Fri, 29 Jul 2016 09:15:57 +0000 (UTC) |
branch: externals/xelb
commit 39d4efb437dc2f68eb31fc8164648363cc113b8e
Author: Chris Feng <address@hidden>
Commit: Chris Feng <address@hidden>
Set XKB per-client flags
* xcb-keysyms.el (xcb:keysyms:-set-per-client-flags): New function for
setting XKB per-client flags (required for GrabKey and SendEvent).
(xcb:keysyms:init, xcb:keysyms:-on-NewKeyboardNotify): Use it.
---
xcb-keysyms.el | 23 +++++++++++++++++++++++
1 file changed, 23 insertions(+)
diff --git a/xcb-keysyms.el b/xcb-keysyms.el
index 290ecc2..e965683 100644
--- a/xcb-keysyms.el
+++ b/xcb-keysyms.el
@@ -80,6 +80,8 @@ This method must be called before using any other method in
this module."
;; Save the major opcode of XKB.
(setq xcb:keysyms:-opcode
(slot-value (xcb:get-extension-data obj 'xcb:xkb) 'major-opcode))
+ ;; Set per-client flags.
+ (xcb:keysyms:-set-per-client-flags obj xcb:xkb:ID:UseCoreKbd)
;; Update data.
(xcb:keysyms:-update-keytypes obj xcb:xkb:ID:UseCoreKbd)
(xcb:keysyms:-update-keycodes obj xcb:xkb:ID:UseCoreKbd)
@@ -111,6 +113,25 @@ This method must be called before using any other method
in this module."
:newKeyboardDetails new-keyboard)))
(xcb:flush obj))))
+(cl-defmethod xcb:keysyms:-set-per-client-flags ((obj xcb:connection) device)
+ "Set per-client flags."
+ (let ((per-client-flags (logior
+ ;; Instead of compatibility state.
+ xcb:xkb:PerClientFlag:GrabsUseXKBState
+ ;; Instead of grab state.
+ xcb:xkb:PerClientFlag:LookupStateWhenGrabbed
+ ;; Use XKB state in 'SendEvent'.
+ xcb:xkb:PerClientFlag:SendEventUsesXKBState)))
+ ;; The reply is not used.
+ (xcb:+request-unchecked+reply obj
+ (make-instance 'xcb:xkb:PerClientFlags
+ :deviceSpec device
+ :change per-client-flags
+ :value per-client-flags
+ :ctrlsToChange 0
+ :autoCtrls 0
+ :autoCtrlsValues 0))))
+
(cl-defmethod xcb:keysyms:-on-NewKeyboardNotify ((obj xcb:connection) data)
"Handle 'NewKeyboardNotify' event."
(let ((obj1 (make-instance 'xcb:xkb:NewKeyboardNotify)))
@@ -131,6 +152,8 @@ This method must be called before using any other method in
this module."
;; (xcb:keysyms:-update-keytypes obj deviceID)
(xcb:keysyms:-update-keycodes obj deviceID)
(xcb:keysyms:-update-modkeys obj deviceID))
+ ;; Device changed; update the per-client flags and local data.
+ (xcb:keysyms:-set-per-client-flags obj deviceID)
(xcb:keysyms:-update-keytypes obj deviceID)
(xcb:keysyms:-update-keycodes obj deviceID)
(xcb:keysyms:-update-modkeys obj deviceID)))))
- [elpa] externals/xelb updated (e58ac74 -> f5216dc), Chris Feng, 2016/07/29
- [elpa] externals/xelb bddad0e 04/10: Eliminate compile warnings for Emacs 24, Chris Feng, 2016/07/29
- [elpa] externals/xelb b1e83e8 05/10: Fix extension event number, Chris Feng, 2016/07/29
- [elpa] externals/xelb eee1348 03/10: Precompute the size of <union>, Chris Feng, 2016/07/29
- [elpa] externals/xelb 2f9c5e5 01/10: Enable XKB module, Chris Feng, 2016/07/29
- [elpa] externals/xelb 39d4efb 07/10: Set XKB per-client flags,
Chris Feng <=
- [elpa] externals/xelb 600b825 09/10: Support system-specific and legacy keysyms, Chris Feng, 2016/07/29
- [elpa] externals/xelb 9089f9c 08/10: Use numerical keysyms and mod-masks, Chris Feng, 2016/07/29
- [elpa] externals/xelb d7d1115 06/10: Adapt 'xcb-keysyms' library to use XKB, Chris Feng, 2016/07/29
- [elpa] externals/xelb 9a73b79 02/10: Fix issues with <switch>, Chris Feng, 2016/07/29
- [elpa] externals/xelb f5216dc 10/10: Merge branch 'feat/xkb' into externals/xelb, Chris Feng, 2016/07/29