ジョイスティックウィンドウでマウスを制御する

ジョイスティックウィンドウでマウスを制御する

私はマウスの絶対位置を固定式の2軸で制御しようとしていますジョイスティックこれをWindows 7で実行したいのですが、すでにさまざまなプログラムを試してみました。

  • ジェマウス
  • エクスパダー
  • ジョイマウス
  • ジョイ2マウス

ジョイスティックの絶対位置でX軸とY軸を制御できるため、Joy 2マウスは今のところ私にとって最適ですが、2つの問題に遭遇しました。

  1. ジョイスティックを動かしていないときでも、マウスが時々カクカクする
  2. ジョイスティックのルート位置の周りにマウスの動きが適用されない小さな角度が存在するように、「上 Y 軸」と「下 Y 軸」のみを設定できます。

私の場合も、このジョイスティックの正確な位置を取得する信頼できる方法を誰かが知っていれば (win7 の場合)、マウスの位置を自分で設定できるので、うまくいくでしょう。

ジョイスティックの不正確さはソフトウェアが原因です。同じハードウェアを Mac で正常に動作させました。

答え1

私はジョイスティックのイベントとマウスの位置を で処理することで解決策を見つけましたpythonpygamewin32api

import pygame, sys,os
import win32api, win32con
from win32api import GetSystemMetrics
from pygame.locals import * 

width = GetSystemMetrics (0)
height = GetSystemMetrics (1)

pygame.init() 
pygame.joystick.init()
joystick = pygame.joystick.Joystick(0)
joystick = joystick.init()
while 1: 
    for event in pygame.event.get(): 
          if event.type == QUIT: 
             sys.exit(0) 
          else: 
            if event.type == 7:
                if event.axis==0:
                    a = (event.value + 1)/2
                    x,y = win32api.GetCursorPos()
                    win32api.SetCursorPos((x,int(a*height)))
                elif event.axis==2:
                    a = (event.value + 1)/2
                    x, y = win32api.GetCursorPos()
                    win32api.SetCursorPos((int(a*width),y))

これは、コンパイルされ、すべての依存関係を含める必要があるため、すべての人に適したソリューションではない可能性があります。ただし、この方法では、すべてのマウス イベントを非常に正確に制御できます。これは小さなコード スニペットであり、非常に簡単です。これは、単純なpygameイベント ループに基づいています。

関連情報