1

stumpwm を使用すると、テンキーを使用して評価ウィンドウに数字を入力できません (NumLock は既にオンになっています)。input.lisp をハッキングすると、次の結果が得られました。

#'read-key-and-selection は、プライマリ パッドとテンキーに対して異なる値を返します。

             1         2         3         4         5         6         7         8          9
primary pad  (10 . 16) (11 . 16) (12 . 16) (13 . 16) (14 . 16) (15 . 16) (16 . 16) (17 . 16) (18 . 16)
numpad       (87 . 16) (88 . 16) (89 . 16) (83 . 16) (84 . 16) (85 . 16) (79 . 16) (80 . 16) (81 . 16)

#'process-input がテンキー入力を :error と見なします。

(defun read-key-or-selection ()
    (loop for ev = (xlib:process-event *display* :handler #'read-key-or-selection-handle-event :timeout nil) do
        (cond ((stringp ev)
            (return ev))
         ((and (consp ev)
               (eq (first ev) :key-press))
           (return (cdr ev))))))

(defun read-key-or-selection-handle-event (&rest event-slots &key display event-key &allow-other-keys)
    (declare (ignore display))
    (case event-key
        ((or :key-release :key-press)
         (apply 'input-handle-key-press-event event-slots))
        (:selection-notify
         (apply 'input-handle-selection-event event-slots))
        (t nil)))

(defun input-handle-key-press-event (&rest event-slots &key event-key root code state &allow-other-keys)
    (declare (ignore event-slots root))
    (list* event-key code state))

上記のコードから、#'xlib:process-event に問題があるようです。しかし、私はそれを修正する方法を知りませんか?

私に光を当ててください、ありがとう!

4

1 に答える 1

1

標準的ではない方法を見つけますが、機能します。 https://github.com/sw2wolf/stumpwm/blob/master/input.lisp .

于 2013-03-10T02:13:37.300 に答える