anchor.diff:      (loop :while (< disp-x disp-x0)
          :for code := (get-charcode-from-scrwin view pos-x pos-y)
          :until (= code charms/ll:ERR)
  -       :do (incf disp-x (calc-disp-char-width *windows-term-setting* code))
  -           (incf pos-x  (calc-pos-char-width  *windows-term-setting* code)))
  +       :do (incf disp-x (calc-disp-char-width (windows-term-setting) code))
  +           (incf pos-x  (calc-pos-char-width  (windows-term-setting) code)))
       pos-x))
   (defun get-pos-y (view x y &key (modeline nil))
     (declare (ignore x))
  
positive.code: ;; for mintty
  ;; get cur-x for moving cursor position properly
  (defun get-cur-x (view x y &key (modeline nil))
    (unless (and (not (windows-term-setting-cur-mov-by-pos *windows-term-setting*))
                 (windows-term-setting-disp-char-width *windows-term-setting*)
                 (windows-term-setting-pos-char-width  *windows-term-setting*)
                 (windows-term-setting-cur-char-width  *windows-term-setting*))
      (return-from get-cur-x (get-pos-x view x y :modeline modeline)))
    (let* ((start-x (ncurses-view-x view))
           (disp-x0 (+ x start-x))
  
negative.code:            ((= code #x210) (setf code #x05c))
             ;; M-[
             ((= code #x1f1)
              (with-pad-input-timeout (100)
                (let ((code1 (getch-pad)))
                  (cond
                    ;; drop mouse escape sequence
                    ((= code1 #x03c)                 ; <
                     (loop :for code2 := (getch-pad)
                        :until (or (= code2 -1)
                                   (= code2 #x04d)   ; M
                                   (= code2 #x06d))) ; m
                     (setf code -1))))))
             ))
          ;; normal key workaround
          (t
  