(defun mouse-click-scroll (e) (interactive "e") (let ((curwin (prog1 (selected-window) (select-window (posn-window (event-start e)))))) (unwind-protect (funcall (if (eq (event-basic-type e) 'mouse-1) 'scroll-up 'scroll-down)) (select-window curwin)))) ;; (makunbound 'mouse-click-scroll-mode-map) (define-minor-mode mouse-click-scroll-mode "マウスクリックで画面単位でスクロールする" nil "" '(([mouse-1] . mouse-click-scroll) ([mouse-2] . mouse-set-point) ([mouse-3] . mouse-click-scroll) ([down-mouse-1] . ignore) ([down-mouse-3] . ignore) ([C-down-mouse-2] . ignore) ([drag-mouse-1] . ignore) ([drag-mouse-3] . ignore)) :global t) (mouse-click-scroll-mode 1) ;; 面倒なのでダブルクリックは無効にする (setq double-click-time nil) ;; orgのマウス操作を無効にする (with-eval-after-load "org" (setq org-mouse-map nil)) ;;key-translation-mapで余計なことをさせないようにする (define-key key-translation-map [down-mouse-1] nil) (define-key key-translation-map [double-down-mouse-1] nil)