X-Recipient: archive-cygwin AT delorie DOT com X-SWARE-Spam-Status: No, hits=-5.1 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,KHOP_RCVD_TRUST,KHOP_THREADED,RCVD_IN_DNSWL_LOW,RCVD_IN_HOSTKARMA_YE X-Spam-Check-By: sourceware.org MIME-Version: 1.0 In-Reply-To: <5072B1F6.6000409@cs.utoronto.ca> References: <5069E59E DOT 606 AT cs DOT utoronto DOT ca> <5069ECE7 DOT 1030704 AT cornell DOT edu> <5069FD14 DOT 8040705 AT cs DOT utoronto DOT ca> <506A10F8 DOT 5090201 AT cornell DOT edu> <5071A1C0 DOT 70403 AT cornell DOT edu> <5072B1F6 DOT 6000409 AT cs DOT utoronto DOT ca> Date: Mon, 8 Oct 2012 12:54:57 +0100 Message-ID: Subject: Re: RFE: make non-x11 emacs mouse-aware From: Andy Koppe To: cygwin AT cygwin DOT com Content-Type: text/plain; charset=UTF-8 X-IsSubscribed: yes Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com On 8 October 2012 11:59, Ryan Johnson wrote: > On 07/10/2012 11:37 AM, Ken Brown wrote: >> >> On 10/1/2012 5:54 PM, Ken Brown wrote: >>> >>> On 10/1/2012 4:29 PM, Ryan Johnson wrote: >>>> >>>> On 01/10/2012 3:20 PM, Ken Brown wrote: >>>>> >>>>> On 10/1/2012 2:49 PM, Ryan Johnson wrote: >>>>>> >>>>>> Hi all, esp. emacs maintainer(s), >>>>>> >>>>>> I'd like to request that the non-x11 emacs be made mouse aware. Right >>>>>> now, terminal mouse mode is broken in normal emacs because the emacs >>>>>> core doesn't recognize the resulting mouse events. You can use >>>>>> emacs-x11 >>>>>> in terminal mode as a heavyweight workaround, but it turns out that >>>>>> mouse awareness is controlled by the src/config.h file created by >>>>>> ./configure: >>>>>>> >>>>>>> /* Define if you have mouse support. */ >>>>>>> /* #undef HAVE_MOUSE */ >>>>>> >>>>>> >>>>>> There doesn't seem to be an explicit configure switch for it (it's >>>>>> enabled indirectly by --with-x11 or --with-ns), but editing directly >>>>>> produced the desired results on a headless linux machine, with no >>>>>> undesirable side effects so far. I see no reason it shouldn't also >>>>>> work >>>>>> under cygwin. >>>>> >>>>> >>>>> I'd be happy to do it if I could be sure there were no bad side >>>>> effects. But I never use emacs-nox, so it isn't easy for me to test >>>>> it on a long-term basis. Maybe you should build it yourself and >>>>> report back. >>>> >>>> As noted, I have tested on a headless linux machine, with no problems so >>>> far (several days). There seems to be a clean division between the >>>> window management and the mouse handling code. This makes sense, because >>>> the mouse events themselves are handled by keymaps and such, in elisp >>>> land, while the generation of those events is deeper and varies >>>> depending on their source (X11, NS, terminal). >>>> >>>> If you worry that cygwin might behave differently than linux, I could >>>> build emacs locally and test as well, but I don't expect any difference. >>>> >>>>> And can you be more specific about what you expect emacs to do with >>>>> mouse events when it's running in a terminal? I thought mintty >>>>> captured mouse events. In particular, when I run emacs-x11 under >>>>> mintty, C-h k produces no response; the cursor stays in >>>>> the minibuffer, and emacs continues to wait for me to press a key. >>>>> Running under X, however, emacs does see the mouse click in that same >>>>> situation. For another example, if I run emacs-x11 under mintty, I >>>>> can highlight text with the mouse and then paste it with >>>>> shift-insert. But again it's mintty doing the work, not emacs. >>>> >>>> On any emacs, xterm-mouse-mode puts the terminal in mouse-reporting mode >>>> and starts watching stdin for the xterm mouse escape sequences: left, >>>> right, scroll, modifier keys, anything the terminal makes available >>>> (most xterm-like terminals intercept shift + mouse, for example). You >>>> can peek in xt-mouse.el to see how mouse escapes are turned into >>>> appropriate mouse events, but that's not really important here. The >>>> issue is that emacs-nox doesn't know what to do with '' etc >>>> that it suddenly starts receiving. I suppose you could manually wire up >>>> all the various events by hand, but on emacs-x11 they're already there >>>> (even in terminal mode) and terminal-generated mouse events work out of >>>> the box. >>> >>> >>> I didn't know about xterm-mouse-mode. >>> >>> OK, I've built emacs-nox with mouse support, and it works, as far as I >>> can tell. I'll upload it as a test release after I've tested it a >>> little more. >> >> >> Before going ahead with this, I decided to ask for comments on the >> emacs-devel list, to make sure no one could see a downside. This led to a >> question about your tests on Linux. The default on Linux is to provide >> mouse support in a terminal via GPM (which is not available on Cygwin). Did >> you explicitly disable GPM when you built emacs for Linux? If not, then >> your tests may not be an accurate indication of what will happen on Cygwin. > > I'm sorry, my test machine was actually running Solaris, so GPM was > definitely disabled... mixed up which VM guest on my laptop I was using, > sorry. I redid the tests with a non-VM Ubuntu 11 machine, and AFAICT GPM is > *not* the default, at least with emacs-24.2. Neither HAVE_GPM nor HAVE_MOUSE > was defined, and (unsurprisingly) mouse clicks under xterm-mouse-mode mouse > give the error: " is undefined." Manually defining HAVE_MOUSE and > recompiling fixed the problem. > > In any case, I thought GPM was only useful in console mode? Apparently the gpm client library can not only connect to a gpm server handling mouse events in a Linux console, but it can also translate xterm mouse events, and present the same API with both approaches. Alas, there's no gpm client library package for Cygwin, and I don't know whether it can be built for Cygwin. Andy -- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple