Ncurses - how do you get mousemask working?


#1

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… :slight_smile:

Any hints? Tobias?

-Rich


#2
  • Richard L. (removed_email_address@domain.invalid) 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… :slight_smile:

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?”,

#3
  • Paul D. (removed_email_address@domain.invalid) 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 D. removed_email_address@domain.invalid pabs in #ruby-lang (OPN IRC)
http://www.pablotron.org/ OpenPGP Key ID: 0x82C29562


#4

Richard L. removed_email_address@domain.invalid wrote:

Thanks for the reply, but I think I’m going to move away from
ncurses… you can’t get CTRL- 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 :wink:

bye.


#5

Thanks for the reply, but I think I’m going to move away from
ncurses… you can’t get CTRL- 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