Type:
Class

Description

Curses::MouseEvent

Example

  • mouse.rb

    #!/usr/local/bin/ruby
    
    require "curses"
    include Curses
    
    def show_message(*msgs)
      message = msgs.join
      width = message.length + 6
      win = Window.new(5, width,
                   (lines - 5) / 2, (cols - width) / 2)
      win.keypad = true
      win.attron(color_pair(COLOR_RED)){
        win.box(?|, ?-, ?+)
      }
      win.setpos(2, 3)
      win.addstr(message)
      win.refresh
      win.getch
      win.close
    end
    
    init_screen
    start_color
    init_pair(COLOR_BLUE,COLOR_BLUE,COLOR_WHITE)
    init_pair(COLOR_RED,COLOR_RED,COLOR_WHITE)
    crmode
    noecho
    stdscr.keypad(true)
    
    begin
      mousemask(BUTTON1_CLICKED|BUTTON2_CLICKED|BUTTON3_CLICKED|BUTTON4_CLICKED)
      setpos((lines - 5) / 2, (cols - 10) / 2)
      attron(color_pair(COLOR_BLUE)|A_BOLD){
        addstr("click")
      }
      refresh
      while( true )
        c = getch
        case c
        when KEY_MOUSE
          m = getmouse
          if( m )
        show_message("getch = #{c.inspect}, ",
                     "mouse event = #{'0x%x' % m.bstate}, ",
                     "axis = (#{m.x},#{m.y},#{m.z})")
          end
          break
        end
      end
      refresh
    ensure
      close_screen
    end