Add support for numeric keypad with numlock on
authorPhilippe Brochard <pbrochard@common-lisp.net>
Fri, 9 Nov 2012 22:06:58 +0000 (9 23:06 +0100)
committerPhilippe Brochard <pbrochard@common-lisp.net>
Fri, 9 Nov 2012 22:06:58 +0000 (9 23:06 +0100)
src/clfswm-info.lisp
src/clfswm-query.lisp

index 59e9f87..707b65e 100644 (file)
 (defun set-default-info-keys ()
   (define-info-key (#\q) 'leave-info-mode)
   (define-info-key ("Return") 'leave-info-mode-and-valid)
+  (define-info-key ("KP_Enter" :mod-2) 'leave-info-mode-and-valid)
   (define-info-key ("space") 'leave-info-mode-and-valid)
   (define-info-key ("Escape") 'leave-info-mode)
   (define-info-key ("g" :control) 'leave-info-mode)
index a178b79..d70e8b4 100644 (file)
 (defparameter *query-return* nil)
 
 
+(defun add-char-in-query-string (char)
+  (setf *query-string* (concatenate 'string
+                                    (when (<= *query-pos* (length *query-string*))
+                                      (subseq *query-string* 0 *query-pos*))
+                                    (string char)
+                                    (when (< *query-pos* (length *query-string*))
+                                      (subseq *query-string* *query-pos*))))
+  (incf *query-pos*))
+
+
 (defun query-show-paren (orig-string pos dec)
   "Replace matching parentheses with brackets"
   (let ((string (copy-seq orig-string)))
@@ -335,7 +345,23 @@ that calls query-mode-complete-suggest."
   (define-query-key ("Right" :control) 'query-right-word)
   (define-query-key ("Up") 'query-previous-history)
   (define-query-key ("Down") 'query-next-history)
-  (define-query-key ("k" :control) 'query-delete-eof))
+  (define-query-key ("k" :control) 'query-delete-eof)
+  (define-query-key ("KP_Insert" :mod-2) 'add-char-in-query-string "0")
+  (define-query-key ("KP_End" :mod-2) 'add-char-in-query-string "1")
+  (define-query-key ("KP_Down" :mod-2) 'add-char-in-query-string "2")
+  (define-query-key ("KP_Page_Down" :mod-2) 'add-char-in-query-string "3")
+  (define-query-key ("KP_Left" :mod-2) 'add-char-in-query-string "4")
+  (define-query-key ("KP_Begin" :mod-2) 'add-char-in-query-string "5")
+  (define-query-key ("KP_Right" :mod-2) 'add-char-in-query-string "6")
+  (define-query-key ("KP_Home" :mod-2) 'add-char-in-query-string "7")
+  (define-query-key ("KP_Up" :mod-2) 'add-char-in-query-string "8")
+  (define-query-key ("KP_Page_Up" :mod-2) 'add-char-in-query-string "9")
+  (define-query-key ("KP_Delete" :mod-2) 'add-char-in-query-string ".")
+  (define-query-key ("KP_Add" :mod-2) 'add-char-in-query-string "+")
+  (define-query-key ("KP_Subtract" :mod-2) 'add-char-in-query-string "-")
+  (define-query-key ("KP_Multiply" :mod-2) 'add-char-in-query-string "*")
+  (define-query-key ("KP_Divide" :mod-2) 'add-char-in-query-string "/")
+  (define-query-key ("KP_Enter" :mod-2) 'leave-query-mode-valid))
 
 
 
@@ -344,13 +370,7 @@ that calls query-mode-complete-suggest."
         (keysym (keycode->keysym code modifiers))
         (char (xlib:keysym->character *display* keysym state)))
     (when (and char (characterp char))
-      (setf *query-string* (concatenate 'string
-                                       (when (<= *query-pos* (length *query-string*))
-                                         (subseq *query-string* 0 *query-pos*))
-                                       (string char)
-                                       (when (< *query-pos* (length *query-string*))
-                                         (subseq *query-string* *query-pos*))))
-      (incf *query-pos*))))
+      (add-char-in-query-string char))))