Skip to content

Commit 138bc7b

Browse files
committed
detect a left and right mouse double click
1 parent 0927dc4 commit 138bc7b

File tree

1 file changed

+29
-0
lines changed

1 file changed

+29
-0
lines changed

mujoco_viewer/mujoco_viewer.py

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ def __init__(self, model, data):
1515
self._gui_lock = Lock()
1616
self._button_left_pressed = False
1717
self._button_right_pressed = False
18+
self._left_double_click_pressed = False
19+
self._right_double_click_pressed = False
1820
self._last_mouse_x = 0
1921
self._last_mouse_y = 0
2022
self._paused = False
@@ -48,6 +50,8 @@ def __init__(self, model, data):
4850
self.window, self._mouse_button_callback)
4951
glfw.set_scroll_callback(self.window, self._scroll_callback)
5052
glfw.set_key_callback(self.window, self._key_callback)
53+
self._last_left_click_time = None
54+
self._last_right_click_time = None
5155

5256
# create options, camera, scene, context
5357
self.vopt = mujoco.MjvOption()
@@ -158,6 +162,7 @@ def _cursor_pos_callback(self, window, xpos, ypos):
158162
self._last_mouse_y = int(self._scale * ypos)
159163

160164
def _mouse_button_callback(self, window, button, act, mods):
165+
time_now = glfw.get_time()
161166
self._button_left_pressed = (glfw.get_mouse_button(
162167
window, glfw.MOUSE_BUTTON_LEFT) == glfw.PRESS)
163168
self._button_right_pressed = (glfw.get_mouse_button(
@@ -167,6 +172,30 @@ def _mouse_button_callback(self, window, button, act, mods):
167172
self._last_mouse_x = int(self._scale * x)
168173
self._last_mouse_y = int(self._scale * y)
169174

175+
# detect a left- or right- doubleclick
176+
self._left_double_click_pressed = False
177+
self._right_double_click_pressed = False
178+
179+
if self._button_left_pressed:
180+
if self._last_left_click_time is None:
181+
self._last_left_click_time = glfw.get_time()
182+
return
183+
184+
time_diff = (time_now - self._last_left_click_time)
185+
if time_diff>0.01 and time_diff < 0.3:
186+
self._left_double_click_pressed = True
187+
self._last_left_click_time = time_now
188+
189+
if self._button_right_pressed:
190+
if self._last_right_click_time is None:
191+
self._last_right_click_time = glfw.get_time()
192+
return
193+
194+
time_diff = (time_now - self._last_right_click_time)
195+
if time_diff>0.01 and time_diff < 0.2:
196+
self._right_double_click_pressed = True
197+
self._last_right_click_time = time_now
198+
170199
def _scroll_callback(self, window, x_offset, y_offset):
171200
with self._gui_lock:
172201
mujoco.mjv_moveCamera(

0 commit comments

Comments
 (0)