Add DuckTrack as initial annotation tool; Initial multimodal test
This commit is contained in:
38
annotation/ducktrack/util.py
Normal file
38
annotation/ducktrack/util.py
Normal file
@@ -0,0 +1,38 @@
|
||||
import os
|
||||
import platform
|
||||
import subprocess
|
||||
from pathlib import Path
|
||||
|
||||
from pynput.keyboard import Key, KeyCode
|
||||
from pynput.mouse import Button
|
||||
|
||||
|
||||
def name_to_key(name: str) -> Key | KeyCode:
|
||||
try:
|
||||
return getattr(Key, name)
|
||||
except AttributeError:
|
||||
return KeyCode.from_char(name)
|
||||
|
||||
def name_to_button(name: str) -> Button:
|
||||
return getattr(Button, name)
|
||||
|
||||
def get_recordings_dir() -> str:
|
||||
documents_folder = Path.home() / 'Documents' / 'DuckTrack_Recordings'
|
||||
return str(documents_folder)
|
||||
|
||||
def fix_windows_dpi_scaling():
|
||||
"""
|
||||
Fixes DPI scaling issues with legacy windows applications
|
||||
Reference: https://pynput.readthedocs.io/en/latest/mouse.html#ensuring-consistent-coordinates-between-listener-and-controller-on-windows
|
||||
"""
|
||||
import ctypes
|
||||
PROCESS_PER_MONITOR_DPI_AWARE = 2
|
||||
ctypes.windll.shcore.SetProcessDpiAwareness(PROCESS_PER_MONITOR_DPI_AWARE)
|
||||
|
||||
def open_file(path):
|
||||
if platform.system() == "Windows":
|
||||
os.startfile(path)
|
||||
elif platform.system() == "Darwin":
|
||||
subprocess.Popen(["open", path])
|
||||
else:
|
||||
subprocess.Popen(["xdg-open", path])
|
||||
Reference in New Issue
Block a user