注目
PowerMate 最短導入・安定化手順(Windows 11対応)
※作成した手順をGoogleのGeminiでまとめました。
【ステップ 1】ZadigでWinUSBドライバーを適用する
Windows 11のセキュリティ機能(メモリ整合性など)が有効でも、汎用のWinUSBであれば安全に動作します。
- PowerMateをUSBポートに接続します。
- Zadig をダウンロードして起動します。
- メニューの
Options>List All Devicesにチェックを入れます。 - ドロップダウンから 「PowerMate」 を選択します。
- ターゲットドライバー(緑の矢印の右側)を
WinUSBに指定し、Replace Driverをクリックします。
【ステップ 2】Pythonコードと監視バッチを準備する
任意の場所(例:
※Windows 11環境でのエラー(文字コード問題)を防ぐため、日本語は1文字も含めていません。
C:\PowerMate\)にフォルダを作成し、以下の2つのファイルを保存します。※Windows 11環境でのエラー(文字コード問題)を防ぐため、日本語は1文字も含めていません。
①
powermate.py (本体スクリプト)python
from winusbpy import *
from sendinput import PressKey, ReleaseKey, VK_LEFT, VK_RIGHT
from autoshiftcache import AutoShiftCache
import threading
import time
vid = "077d"
pid = "0410"
class PowerMateReader(threading.Thread):
def __init__(self):
self.shiftCache = AutoShiftCache()
threading.Thread.__init__(self)
def run(self):
api = WinUsbPy()
result = api.list_usb_devices(deviceinterface=True, present=True)
if result:
if api.init_winusb_device(vid, pid):
api.timeout = 1000
while True:
try:
data = api.read(0x81, 6)
if not data or len(data) == 0:
continue
idx_btn = 0
idx_rot = 1
buttonDown = ord(data[idx_btn])
offset = ord(data[idx_rot])
self.shiftCache.updatePush(buttonDown == 1)
if offset > 127:
offset = -(256 - offset)
if offset > 0:
self.shiftCache.increment(offset)
elif offset < 0:
self.shiftCache.decrement(-offset)
time.sleep(0.001)
except Exception:
break
else:
print "device not found"
if __name__ == "__main__":
pmr = PowerMateReader()
pmr.start()
while True:
is_alive = pmr.is_alive() if hasattr(pmr, 'is_alive') else pmr.isAlive()
if not is_alive:
break
pmr.shiftCache.tick(time.time())
time.sleep(0.01)
②
powermate_start.bat (5秒生死監視バッチ)bat
@echo off
:loop
tasklist /fi "IMAGENAME eq pythonw.exe" 2>nul | find /i "pythonw.exe" >nul
if errorlevel 1 (
start "" "C:\Python27\pythonw.exe" "C:\PowerMate\powermate.py"
)
ping localhost -n 6 >nul
goto loop
【ステップ 3】完全非表示(バックグラウンド)用のスクリプトを作る
Windows 11では
.vbs(VBScript)が将来的に非推奨化される方針が発表されているため、よりモダンでセキュリティに弾かれないPowerShellベースの非表示ショートカットを採用します。- デスクトップの何もないところで右クリックし、「新規作成」 > 「ショートカット」 を選択します。
- 「項目の場所」に、以下のコマンドを一行でそのまま貼り付けます。text
powershell -WindowStyle Hidden -Command "Start-Process 'C:\PowerMate\powermate_start.bat' -WindowStyle Hidden"「次へ」を押し、ショートカットの名前をPowerMate_Silentなどにして完了します。 - 作成されたショートカットを、先ほど作ったフォルダ(
C:\PowerMate\)の中に移動させておきます。
【ステップ 4】タスクスケジューラで「Windows 11最優先起動」を設定する
Windows 11のスタートアップ遅延を回避し、ログオンした瞬間に爆速で起動させます。
- キーボードの
Windowsキー + R>taskschd.mscと入力してEnterでタスクスケジューラを起動します。 - 右メニューの 「タスクの作成...」 をクリックします。
- 各タブを以下のように設定します。
- 「全般」タブ:
- 名前:
PowerMate_Win11_Startup - 最下部の「構成」:
Windows 10(※Windows 11でもこれで問題ありません) - 注意: 「ユーザーがログオンしているときのみ実行する」のままにします。
- 名前:
- 「トリガー」タブ:
- 「新規...」 > 最上部のタスクの開始を 「ログオン時」 にして「OK」。
- 「操作」タブ:
- 「新規...」 > プログラム/スクリプトの欄に、ステップ3で作った ショートカットのフルパス を指定して「OK」。
(例:C:\PowerMate\PowerMate_Silent.lnk)
- 「新規...」 > プログラム/スクリプトの欄に、ステップ3で作った ショートカットのフルパス を指定して「OK」。
- 「条件」タブ:
- 「コンピューターをAC電源で動かしている場合のみタスクを開始する」の チェックを外す (ノートPCのバッテリー駆動対策)。
- 「全般」タブ:
- 「OK」を押して保存します。
これで設定は完了です。Windows 11のPCを再起動すると、デスクトップが表示された瞬間に画面やタスクバーを一切汚さず、裏でPowerMateが起動します。万が一、USBの瞬断でプログラムが落ちても5秒以内に無音で自動復帰します。
ツイート
