about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--exwm-core.el6
-rw-r--r--exwm-input.el2
-rw-r--r--exwm-layout.el2
3 files changed, 8 insertions, 2 deletions
diff --git a/exwm-core.el b/exwm-core.el
index 612a26f59fde..1f939491c5ef 100644
--- a/exwm-core.el
+++ b/exwm-core.el
@@ -158,7 +158,11 @@ least SECS seconds later."
 (defvar-local exwm--mode-line-format nil) ;save mode-line-format
 (defvar-local exwm--floating-frame-position nil) ;set when hidden.
 (defvar-local exwm--fixed-size nil)              ;fixed size
-(defvar-local exwm--input-mode 'line-mode)       ;Keyboard grabbed.
+(defvar-local exwm--selected-input-mode 'line-mode
+  "Input mode as selected by the user.
+One of `line-mode' or `char-mode'.")
+(defvar-local exwm--input-mode 'line-mode
+  "Actual input mode, i.e. whether mouse and keyboard are grabbed.")
 ;; Properties
 (defvar-local exwm--desktop nil "_NET_WM_DESKTOP.")
 (defvar-local exwm-window-type nil "_NET_WM_WINDOW_TYPE.")
diff --git a/exwm-input.el b/exwm-input.el
index 78e74cdcf83b..c757b09d3fa6 100644
--- a/exwm-input.el
+++ b/exwm-input.el
@@ -756,6 +756,7 @@ button event."
                        (exwm--buffer->id (window-buffer)))))
   (when id
     (exwm--log "id=#x%x" id)
+    (setq exwm--selected-input-mode 'line-mode)
     (exwm-input--grab-keyboard id)
     (exwm-input--update-mode-line id)))
 
@@ -766,6 +767,7 @@ button event."
                        (exwm--buffer->id (window-buffer)))))
   (when id
     (exwm--log "id=#x%x" id)
+    (setq exwm--selected-input-mode  'char-mode)
     (exwm-input--release-keyboard id)
     (exwm-input--update-mode-line id)))
 
diff --git a/exwm-layout.el b/exwm-layout.el
index fe394e226e88..bee6901f8291 100644
--- a/exwm-layout.el
+++ b/exwm-layout.el
@@ -199,7 +199,7 @@
         (make-instance 'xcb:ewmh:set-_NET_WM_STATE :window exwm--id :data []))
     (xcb:flush exwm--connection)
     (set-window-dedicated-p (get-buffer-window) nil)
-    (when (eq 'line-mode exwm--input-mode)
+    (when (eq 'line-mode exwm--selected-input-mode)
       (exwm-input--grab-keyboard exwm--id))))
 
 ;;;###autoload