Я хочу постоянно отслеживать мышь, как она движется, или, по крайней мере, каждые 0,5 секунды:Непрерывно отслеживать координаты мыши
require "curses"
include Curses
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)
close = false
begin
mousemask(BUTTON1_CLICKED|BUTTON2_CLICKED|BUTTON3_CLICKED|BUTTON4_CLICKED)
count = 0
while(count < 10)
sleep 0.5
m = getmouse
winx = Window.new(7,30,10,10)
winx.keypad = true
winx.box(?|, ?-, ?+)
winx.setpos(2,3)
winx.addstr "Loop Count: " + count.to_s
winx.setpos(3,3)
winx.addstr "Mouse Position: " + m.inspect
winx.refresh
count += 1
end
refresh
ensure
close_screen
end
Я думаю, что я близко, но по какой-то причине, getmouse возвращается Нилл? Почему это? Работает ли getmouse только после события, такого как щелчок? Если да, невозможно ли постоянно отслеживать мышь?
Это из ruby documentation
getmouse() нажмите для переключения Source
Возвращает координаты мыши.
Это будет читать и поп данные события мыши из очереди
См КНОПКА *, ALL_MOUSE_EVENTS и REPORT_MOUSE_POSITION константы
REPORT_MOUSE_POSITION
кажется, ключ здесь, но я действительно не знаю, как использовать эти константы. getmouse(REPORT_MOUSE_POSITION)
не работает. Извините, если это главное nooby, но документации там мало.
Ах, это настоящий позор только по одному клику. Любые идеи о любой работе вообще? Это не важно, просто хотелось немного приправить мое приложение с эффектами зависания :) – Starkers
Я не могу придумать никакого способа обойти это. Возможно, вы сможете прочитать, на каких терминалах поддерживается движение мыши, и только таргетировать их. – Max
Да, ладно :). Использование кода в моем примере и тестирование для nil было бы хорошим тестом, чтобы узнать, поддерживает ли терминал движение мыши. – Starkers