Emacs安卓端触摸屏双击事件

23 阅读1分钟
#+name: 2025-06-21-11-01
#+begin_src emacs-lisp :results silent :lexical t
  ;; -*- lexical-binding: t; -*-
  (defalias 'android-double-click
    ((lambda (last-posn)
       (setq double-click-fuzz 50)
       (setq double-click-time 500)
       (keymap-set global-map "<mouse-1>" 'dts/mouse-1)
       (lambda (ev)
         (interactive "e")
         (let ((posn (event-start ev)))
           (if last-posn
  	     (if (or (> (- (posn-timestamp posn)
  		           (posn-timestamp last-posn))
  		        double-click-time)
  		     (> (- (car (posn-x-y posn))
  		           (car (posn-x-y last-posn)))
  		        double-click-fuzz)
  		     (> (- (cdr (posn-x-y posn))
  		           (cdr (posn-x-y last-posn)))
  		        double-click-fuzz))
  	         (setq last-posn posn)
  	       (setq last-posn nil)
  	       (setq unread-command-events
  		     (cons
  		      ;; Is this the real structrue
  		      ;; of `double-click' event?
  		      `(double-click ,@(cdr ev))
  		      unread-command-events)))
             (setq last-posn posn)))))))
#+end_src