Forum: Ruby Ncurses - how do you get mousemask working?

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
C023d0fc92d45ac508d2c80bbace2e82?d=identicon&s=25 lymans (Guest)
on 2005-12-10 21:54
(Received via mailing list)
I've tried... and I've looked around.

A few other projects have the line with 'Ncurses::mousemask...' in
them - but it's always commented out... like they couldn't get it
working either.

Is this feature not functional?

I've currently got 'Ncurses::mousemask(Ncurses::ALL_MOUSE_EVENTS,[])'
and the error 'wrong number of arguments (2 for 1)' and as soon as I
drop the second arg I get the error 'oldmask (2nd argument) must be an
empty Array' which is kinda bothersome... :-)

Any hints? Tobias?

-Rich
Ff260830c27224f0e15f37362a6256d0?d=identicon&s=25 Paul Duncan (Guest)
on 2005-12-12 22:37
(Received via mailing list)
* Richard Lyman (lymans@gmail.com) wrote:
> I've tried... and I've looked around.
>
> A few other projects have the line with 'Ncurses::mousemask...' in
> them - but it's always commented out... like they couldn't get it
> working either.

They couldn't

> Is this feature not functional?

It's a bug in the method definition; see below.

> I've currently got 'Ncurses::mousemask(Ncurses::ALL_MOUSE_EVENTS,[])'
> and the error 'wrong number of arguments (2 for 1)' and as soon as I
> drop the second arg I get the error 'oldmask (2nd argument) must be an
> empty Array' which is kinda bothersome... :-)

It's a bug in the library.  It's been there forever (I came across it
when I was trying to add mouse support to Raggle, then just forgot to
send a patch upstream).

> Any hints? Tobias?

Apply this patch (also attached):

diff -ur ncurses-ruby-0.9.2/ncurses_wrap.c
ncurses-ruby-0.9.2-mousemask/ncurses_wrap.c
--- ncurses-ruby-0.9.2/ncurses_wrap.c	2005-12-12 16:33:00.000000000
-0500
+++ ncurses-ruby-0.9.2-mousemask/ncurses_wrap.c	2005-02-26
19:22:13.000000000 -0500
@@ -2387,7 +2387,7 @@
     NCFUNC(ungetmouse, 1);
 #endif
 #ifdef HAVE_MOUSEMASK
-    NCFUNC(mousemask, 2);
+    NCFUNC(mousemask, 1);
 #endif
 #ifdef HAVE_WENCLOSE
     rb_define_module_function(mNcurses, "wenclose?",
Ff260830c27224f0e15f37362a6256d0?d=identicon&s=25 Paul Duncan (Guest)
on 2005-12-12 22:46
(Received via mailing list)
* Paul Duncan (pabs@pablotron.org) wrote:
>
>
> > Any hints? Tobias?

Err, my patch is backwards... Here's the correct one (again, attached):

diff -ur ncurses-ruby-0.9.2/ncurses_wrap.c
ncurses-ruby-0.9.2-mousemask_fix/ncurses_wrap.c
--- ncurses-ruby-0.9.2/ncurses_wrap.c	2005-02-26 19:22:13.000000000
-0500
+++ ncurses-ruby-0.9.2-mousemask_fix/ncurses_wrap.c	2005-12-12
16:42:11.000000000 -0500
@@ -2387,7 +2387,7 @@
     NCFUNC(ungetmouse, 1);
 #endif
 #ifdef HAVE_MOUSEMASK
-    NCFUNC(mousemask, 1);
+    NCFUNC(mousemask, 2);
 #endif
 #ifdef HAVE_WENCLOSE
     rb_define_module_function(mNcurses, "wenclose?",

> +    NCFUNC(mousemask, 1);
>  #endif
>  #ifdef HAVE_WENCLOSE
>      rb_define_module_function(mNcurses, "wenclose?",
>
>
> --
> Paul Duncan <pabs@pablotron.org>        pabs in #ruby-lang (OPN IRC)
> http://www.pablotron.org/               OpenPGP Key ID: 0x82C29562
C023d0fc92d45ac508d2c80bbace2e82?d=identicon&s=25 Richard Lyman (Guest)
on 2005-12-13 19:15
(Received via mailing list)
Thanks for the reply, but I think I'm going to move away from
ncurses... you can't get CTRL-<Arrow> to be unique can you? I haven't
found anywhere in the docs where it allows you to detect the CTRL key
on it's own.

If you can't, then that's the straw that breaks it.

Again - thanks for the reply.

-Rich
46371e7a22b383c0dd1d7e7e81b53ab8?d=identicon&s=25 Thomas Dickey (Guest)
on 2005-12-14 12:08
(Received via mailing list)
Richard Lyman <lymans@gmail.com> wrote:
> Thanks for the reply, but I think I'm going to move away from
> ncurses... you can't get CTRL-<Arrow> to be unique can you? I haven't
> found anywhere in the docs where it allows you to detect the CTRL key
> on it's own.

That's a terminal-dependent feature.  If the terminal supports it,
one can write a terminfo that describes it (as a function-key).
(n)curses supports up to 60 function keys (which you would probably
find too limiting ;-)

bye.
This topic is locked and can not be replied to.