Ignore repeated MappingNotify events
				
					
				
			For some reason, `MappingNotify` events are generated quite frequently and greatly impact the performance. This commit disables the complete refresh of keyboard mapping.
This commit is contained in:
		
							parent
							
								
									048994c794
								
							
						
					
					
						commit
						24b964bb4a
					
				
					 1 changed files with 18 additions and 7 deletions
				
			
		|  | @ -139,13 +139,24 @@ It's updated in several occasions, and only used by `exwm-input--set-focus'.") | |||
|   (let ((obj (make-instance 'xcb:MappingNotify))) | ||||
|     (xcb:unmarshal obj data) | ||||
|     (with-slots (request first-keycode count) obj | ||||
|       (cond ((= request xcb:Mapping:Modifier) | ||||
|              ;; Modifier keys changed | ||||
|              (xcb:keysyms:update-modifier-mapping exwm--connection)) | ||||
|             ((= request xcb:Mapping:Keyboard) | ||||
|              ;; Only updated changed keys | ||||
|              (xcb:keysyms:update-keyboard-mapping exwm--connection | ||||
|                                                   first-keycode count)))))) | ||||
|       (cond | ||||
|        ((= request xcb:Mapping:Modifier) | ||||
|         ;; Modifier keys changed | ||||
|         (exwm--log "Update modifier mapping") | ||||
|         (xcb:keysyms:update-modifier-mapping exwm--connection) | ||||
|         ) | ||||
|        ((= request xcb:Mapping:Keyboard) | ||||
|         ;; Only update changed keys | ||||
|         (with-slots (min-keycode max-keycode) | ||||
|             (xcb:get-setup exwm--connection) | ||||
|           ;; Since this operation is quite time-consuming, a complete refresh | ||||
|           ;; is forbidden as it's unlikely to bring any useful information | ||||
|           (unless (and (= min-keycode first-keycode) | ||||
|                        (= max-keycode (+ first-keycode count -1))) | ||||
|             (exwm--log "Update keyboard mapping: %d ~ %d" | ||||
|                        first-keycode (+ first-keycode count)) | ||||
|             (xcb:keysyms:update-keyboard-mapping exwm--connection | ||||
|                                                  first-keycode count)))))))) | ||||
| 
 | ||||
| (defun exwm-input--on-ButtonPress (data synthetic) | ||||
|   "Handle ButtonPress event." | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue