Уведомления

Группа в Telegram: @pythonsu

#1 Май 16, 2015 20:17:31

Awasaky
Зарегистрирован: 2015-05-16
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Посоветуйте реализацию OSD, которую можно было бы подцепить к интерпретатору Python

Я сделал связку vJoy и FreePIE, это эмулятор джойстика и программатор контроллеров.
FreePIE работает на python, но не поддерживает OSD, как в стиме, чтобы показывать положение виртуального джойстика.
Посоветуйте пожалуйста, как можно отобразить виртуальный джойстик?
В скрипте используются какие-то библиотеки python, можно ли подключить скомпилированные - честно говоря не знаю.

from System import Int16
from ctypes import windll, Structure, c_ulong, byref
class POINT(Structure):
   _fields_ = [("x", c_ulong), ("y", c_ulong)]
   
if starting:
   vJoy0_stat = False # данный флаг используется для включения передачи данных на джойстик
   Caps_Enabled = False # данный флаг используется для временного отключения джойстика
   vJoy[0].x = 0
   mouse_x = 0  # координаты мыши
   mouse_y = 0
   screen_x = windll.user32.GetSystemMetrics(0) # размер экрана
   screen_y = windll.user32.GetSystemMetrics(1)
   pt = POINT()
   preci = 100  # уточнитель задает точность измерений до сотых, используется, для сохранения дробной части в умножителе
   multipler_y = preci * 32768 / screen_y
# умножитель определяет, насколько нужно увеличить значение положения курсора, чтобы джойстик корректно отклонялся от центра экрана
# enable/disable mouse vJoy X/Y control by pressing CapsLock
if keyboard.getPressed(Key.CapsLock):
   if vJoy0_stat:
		vJoy0_stat = False
		Caps_Enabled = False
		vJoy[0].x = 0
   		vJoy[0].y = 0
   else:
		vJoy0_stat = True
		Caps_Enabled = True
#mouse.middleButton - средняя кнопка мыши
#mouse.rightButton .leftButton - правая или левая кнопка мыши и т.п.
# деактивация джойстика, если нажата средняя кнопка мыши и включен капслок
if mouse.middleButton and Caps_Enabled:
	vJoy0_stat = False
# активация джойстика, если отпущена средняя кнопка мыши и включен капслок
if not mouse.middleButton and Caps_Enabled:
	vJoy0_stat = True
if vJoy0_stat:
   windll.user32.GetCursorPos(byref(pt))
   if pt.x > 65536: mouse_x = 0 # добавлено, так как при выходе значения за пределы int, происходил вылет скрипта
   else: mouse_x = pt.x
   if pt.y > 65536: mouse_y = 0 # добавлено, так как при выходе значения за пределы int, происходил вылет скрипта
   else: mouse_y = pt.y
# положение джойстика определяется как положение мыши на экране - половина ширина экрана умноженная на увеличитель и разделенная на уточнитель 
   vJoy[0].x = (mouse_x - (screen_x / 2)) * multipler_y / preci
   vJoy[0].y = (mouse_y - (screen_y / 2)) * multipler_y / preci
#диагностическая часть скрипта
diagnostics.watch(vJoy0_stat)
diagnostics.watch(Caps_Enabled)
diagnostics.watch(mouse.middleButton)

Заранее спасибо за любые советы!

Отредактировано Awasaky (Май 16, 2015 20:17:48)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version