summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--indieweb-micro/themes/MinIndie/layouts/_default/summary.html2
-rw-r--r--micro.pinapelz.moe/index.html136
2 files changed, 2 insertions, 136 deletions
diff --git a/indieweb-micro/themes/MinIndie/layouts/_default/summary.html b/indieweb-micro/themes/MinIndie/layouts/_default/summary.html
index a347932..e971c18 100644
--- a/indieweb-micro/themes/MinIndie/layouts/_default/summary.html
+++ b/indieweb-micro/themes/MinIndie/layouts/_default/summary.html
@@ -5,7 +5,7 @@
<a href="{{ "/tags/" | relLangURL }}{{ . | urlize }}">{{ . }}</a>
{{ end }}
<div>
- {{ .Summary }}
+ {{ .Summary | replaceRE "(?s)<div class=\"highlight\"[^>]*>.*?</div>" "" | replaceRE "(?s)<pre[^>]*>.*?</pre>" "" | replaceRE "(?s)<code[^>]*>.*?</code>" "" | replaceRE "(?s)```[\\s\\S]*?```" "" | safeHTML }}
{{ if .Truncated }}
<a href="{{ .Permalink }}">Read more...</a>
{{ end }}
diff --git a/micro.pinapelz.moe/index.html b/micro.pinapelz.moe/index.html
index d971565..917f1e6 100644
--- a/micro.pinapelz.moe/index.html
+++ b/micro.pinapelz.moe/index.html
@@ -112,141 +112,7 @@
<div>
<p>Switch 2 Pro Controller is very comfy in my hands, but unfortunately it didn&rsquo;t work out of box on PC (Linux) for me like it&rsquo;s predacessor. Until there&rsquo;s actual better driver support for this thing in the kernel (or Valve does something), here&rsquo;s a hacky Python script to initialize HID-mode on the controller</p>
-<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#75715e"># I only tested this script on Linux w/ Steam but in theory it shoud work on Windows?</span>
-</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> usb.core <span style="color:#75715e"># install pyusb first: pip install pyusb</span>
-</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> usb.util
-</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> time
-</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> sys
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span>VENDOR_ID <span style="color:#f92672">=</span> <span style="color:#ae81ff">0x057E</span>
-</span></span><span style="display:flex;"><span>PRODUCT_IDS <span style="color:#f92672">=</span> {
-</span></span><span style="display:flex;"><span> <span style="color:#ae81ff">0x2066</span>: <span style="color:#e6db74">&#34;Joy-Con (L)&#34;</span>,
-</span></span><span style="display:flex;"><span> <span style="color:#ae81ff">0x2067</span>: <span style="color:#e6db74">&#34;Joy-Con (R)&#34;</span>,
-</span></span><span style="display:flex;"><span> <span style="color:#ae81ff">0x2069</span>: <span style="color:#e6db74">&#34;Pro Controller&#34;</span>,
-</span></span><span style="display:flex;"><span> <span style="color:#ae81ff">0x2073</span>: <span style="color:#e6db74">&#34;GCN Controller&#34;</span>
-</span></span><span style="display:flex;"><span>}
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span>USB_INTERFACE_NUMBER <span style="color:#f92672">=</span> <span style="color:#ae81ff">1</span>
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span>INIT_COMMAND_0x03 <span style="color:#f92672">=</span> bytes([<span style="color:#ae81ff">0x03</span>, <span style="color:#ae81ff">0x91</span>, <span style="color:#ae81ff">0x00</span>, <span style="color:#ae81ff">0x0d</span>, <span style="color:#ae81ff">0x00</span>, <span style="color:#ae81ff">0x08</span>, <span style="color:#ae81ff">0x00</span>, <span style="color:#ae81ff">0x00</span>, <span style="color:#ae81ff">0x01</span>, <span style="color:#ae81ff">0x00</span>, <span style="color:#ae81ff">0xFF</span>, <span style="color:#ae81ff">0xFF</span>, <span style="color:#ae81ff">0xFF</span>, <span style="color:#ae81ff">0xFF</span>, <span style="color:#ae81ff">0xFF</span>, <span style="color:#ae81ff">0xFF</span>])
-</span></span><span style="display:flex;"><span>UNKNOWN_COMMAND_0x07 <span style="color:#f92672">=</span> bytes([<span style="color:#ae81ff">0x07</span>, <span style="color:#ae81ff">0x91</span>, <span style="color:#ae81ff">0x00</span>, <span style="color:#ae81ff">0x01</span>, <span style="color:#ae81ff">0x00</span>, <span style="color:#ae81ff">0x00</span>, <span style="color:#ae81ff">0x00</span>, <span style="color:#ae81ff">0x00</span>])
-</span></span><span style="display:flex;"><span>UNKNOWN_COMMAND_0x16 <span style="color:#f92672">=</span> bytes([<span style="color:#ae81ff">0x16</span>, <span style="color:#ae81ff">0x91</span>, <span style="color:#ae81ff">0x00</span>, <span style="color:#ae81ff">0x01</span>, <span style="color:#ae81ff">0x00</span>, <span style="color:#ae81ff">0x00</span>, <span style="color:#ae81ff">0x00</span>, <span style="color:#ae81ff">0x00</span>])
-</span></span><span style="display:flex;"><span>REQUEST_CONTROLLER_MAC <span style="color:#f92672">=</span> bytes([<span style="color:#ae81ff">0x15</span>, <span style="color:#ae81ff">0x91</span>, <span style="color:#ae81ff">0x00</span>, <span style="color:#ae81ff">0x01</span>, <span style="color:#ae81ff">0x00</span>, <span style="color:#ae81ff">0x0e</span>, <span style="color:#ae81ff">0x00</span>, <span style="color:#ae81ff">0x00</span>, <span style="color:#ae81ff">0x00</span>, <span style="color:#ae81ff">0x02</span>, <span style="color:#ae81ff">0xFF</span>, <span style="color:#ae81ff">0xFF</span>, <span style="color:#ae81ff">0xFF</span>, <span style="color:#ae81ff">0xFF</span>, <span style="color:#ae81ff">0xFF</span>, <span style="color:#ae81ff">0xFF</span>, <span style="color:#ae81ff">0xFF</span>, <span style="color:#ae81ff">0xFF</span>, <span style="color:#ae81ff">0xFF</span>, <span style="color:#ae81ff">0xFF</span>, <span style="color:#ae81ff">0xFF</span>, <span style="color:#ae81ff">0xFF</span>])
-</span></span><span style="display:flex;"><span>LTK_REQUEST <span style="color:#f92672">=</span> bytes([<span style="color:#ae81ff">0x15</span>, <span style="color:#ae81ff">0x91</span>, <span style="color:#ae81ff">0x00</span>, <span style="color:#ae81ff">0x02</span>, <span style="color:#ae81ff">0x00</span>, <span style="color:#ae81ff">0x11</span>, <span style="color:#ae81ff">0x00</span>, <span style="color:#ae81ff">0x00</span>, <span style="color:#ae81ff">0x00</span>, <span style="color:#ae81ff">0xFF</span>, <span style="color:#ae81ff">0xFF</span>, <span style="color:#ae81ff">0xFF</span>, <span style="color:#ae81ff">0xFF</span>, <span style="color:#ae81ff">0xFF</span>, <span style="color:#ae81ff">0xFF</span>, <span style="color:#ae81ff">0xFF</span>, <span style="color:#ae81ff">0xFF</span>, <span style="color:#ae81ff">0xFF</span>, <span style="color:#ae81ff">0xFF</span>, <span style="color:#ae81ff">0xFF</span>, <span style="color:#ae81ff">0xFF</span>, <span style="color:#ae81ff">0xFF</span>, <span style="color:#ae81ff">0xFF</span>, <span style="color:#ae81ff">0xFF</span>, <span style="color:#ae81ff">0xFF</span>])
-</span></span><span style="display:flex;"><span>UNKNOWN_COMMAND_0x15_ARG_0x03 <span style="color:#f92672">=</span> bytes([<span style="color:#ae81ff">0x15</span>, <span style="color:#ae81ff">0x91</span>, <span style="color:#ae81ff">0x00</span>, <span style="color:#ae81ff">0x03</span>, <span style="color:#ae81ff">0x00</span>, <span style="color:#ae81ff">0x01</span>, <span style="color:#ae81ff">0x00</span>, <span style="color:#ae81ff">0x00</span>, <span style="color:#ae81ff">0x00</span>])
-</span></span><span style="display:flex;"><span>UNKNOWN_COMMAND_0x09 <span style="color:#f92672">=</span> bytes([<span style="color:#ae81ff">0x09</span>, <span style="color:#ae81ff">0x91</span>, <span style="color:#ae81ff">0x00</span>, <span style="color:#ae81ff">0x07</span>, <span style="color:#ae81ff">0x00</span>, <span style="color:#ae81ff">0x08</span>, <span style="color:#ae81ff">0x00</span>, <span style="color:#ae81ff">0x00</span>, <span style="color:#ae81ff">0x00</span>, <span style="color:#ae81ff">0x00</span>, <span style="color:#ae81ff">0x00</span>, <span style="color:#ae81ff">0x00</span>, <span style="color:#ae81ff">0x00</span>, <span style="color:#ae81ff">0x00</span>, <span style="color:#ae81ff">0x00</span>, <span style="color:#ae81ff">0x00</span>])
-</span></span><span style="display:flex;"><span>IMU_COMMAND_0x02 <span style="color:#f92672">=</span> bytes([<span style="color:#ae81ff">0x0c</span>, <span style="color:#ae81ff">0x91</span>, <span style="color:#ae81ff">0x00</span>, <span style="color:#ae81ff">0x02</span>, <span style="color:#ae81ff">0x00</span>, <span style="color:#ae81ff">0x04</span>, <span style="color:#ae81ff">0x00</span>, <span style="color:#ae81ff">0x00</span>, <span style="color:#ae81ff">0x27</span>, <span style="color:#ae81ff">0x00</span>, <span style="color:#ae81ff">0x00</span>, <span style="color:#ae81ff">0x00</span>])
-</span></span><span style="display:flex;"><span>OUT_UNKNOWN_COMMAND_0x11 <span style="color:#f92672">=</span> bytes([<span style="color:#ae81ff">0x11</span>, <span style="color:#ae81ff">0x91</span>, <span style="color:#ae81ff">0x00</span>, <span style="color:#ae81ff">0x03</span>, <span style="color:#ae81ff">0x00</span>, <span style="color:#ae81ff">0x00</span>, <span style="color:#ae81ff">0x00</span>, <span style="color:#ae81ff">0x00</span>])
-</span></span><span style="display:flex;"><span>UNKNOWN_COMMAND_0x0A <span style="color:#f92672">=</span> bytes([<span style="color:#ae81ff">0x0a</span>, <span style="color:#ae81ff">0x91</span>, <span style="color:#ae81ff">0x00</span>, <span style="color:#ae81ff">0x08</span>, <span style="color:#ae81ff">0x00</span>, <span style="color:#ae81ff">0x14</span>, <span style="color:#ae81ff">0x00</span>, <span style="color:#ae81ff">0x00</span>, <span style="color:#ae81ff">0x01</span>, <span style="color:#ae81ff">0xff</span>, <span style="color:#ae81ff">0xff</span>, <span style="color:#ae81ff">0xff</span>, <span style="color:#ae81ff">0xff</span>, <span style="color:#ae81ff">0xff</span>, <span style="color:#ae81ff">0xff</span>, <span style="color:#ae81ff">0xff</span>, <span style="color:#ae81ff">0xff</span>, <span style="color:#ae81ff">0x35</span>, <span style="color:#ae81ff">0x00</span>, <span style="color:#ae81ff">0x46</span>, <span style="color:#ae81ff">0x00</span>, <span style="color:#ae81ff">0x00</span>, <span style="color:#ae81ff">0x00</span>, <span style="color:#ae81ff">0x00</span>, <span style="color:#ae81ff">0x00</span>, <span style="color:#ae81ff">0x00</span>, <span style="color:#ae81ff">0x00</span>, <span style="color:#ae81ff">0x00</span>])
-</span></span><span style="display:flex;"><span>IMU_COMMAND_0x04 <span style="color:#f92672">=</span> bytes([<span style="color:#ae81ff">0x0c</span>, <span style="color:#ae81ff">0x91</span>, <span style="color:#ae81ff">0x00</span>, <span style="color:#ae81ff">0x04</span>, <span style="color:#ae81ff">0x00</span>, <span style="color:#ae81ff">0x04</span>, <span style="color:#ae81ff">0x00</span>, <span style="color:#ae81ff">0x00</span>, <span style="color:#ae81ff">0x27</span>, <span style="color:#ae81ff">0x00</span>, <span style="color:#ae81ff">0x00</span>, <span style="color:#ae81ff">0x00</span>])
-</span></span><span style="display:flex;"><span>ENABLE_HAPTICS <span style="color:#f92672">=</span> bytes([<span style="color:#ae81ff">0x03</span>, <span style="color:#ae81ff">0x91</span>, <span style="color:#ae81ff">0x00</span>, <span style="color:#ae81ff">0x0a</span>, <span style="color:#ae81ff">0x00</span>, <span style="color:#ae81ff">0x04</span>, <span style="color:#ae81ff">0x00</span>, <span style="color:#ae81ff">0x00</span>, <span style="color:#ae81ff">0x09</span>, <span style="color:#ae81ff">0x00</span>, <span style="color:#ae81ff">0x00</span>, <span style="color:#ae81ff">0x00</span>])
-</span></span><span style="display:flex;"><span>OUT_UNKNOWN_COMMAND_0x10 <span style="color:#f92672">=</span> bytes([<span style="color:#ae81ff">0x10</span>, <span style="color:#ae81ff">0x91</span>, <span style="color:#ae81ff">0x00</span>, <span style="color:#ae81ff">0x01</span>, <span style="color:#ae81ff">0x00</span>, <span style="color:#ae81ff">0x00</span>, <span style="color:#ae81ff">0x00</span>, <span style="color:#ae81ff">0x00</span>])
-</span></span><span style="display:flex;"><span>OUT_UNKNOWN_COMMAND_0x01 <span style="color:#f92672">=</span> bytes([<span style="color:#ae81ff">0x01</span>, <span style="color:#ae81ff">0x91</span>, <span style="color:#ae81ff">0x00</span>, <span style="color:#ae81ff">0x0c</span>, <span style="color:#ae81ff">0x00</span>, <span style="color:#ae81ff">0x00</span>, <span style="color:#ae81ff">0x00</span>, <span style="color:#ae81ff">0x00</span>])
-</span></span><span style="display:flex;"><span>OUT_UNKNOWN_COMMAND_0x03 <span style="color:#f92672">=</span> bytes([<span style="color:#ae81ff">0x03</span>, <span style="color:#ae81ff">0x91</span>, <span style="color:#ae81ff">0x00</span>, <span style="color:#ae81ff">0x01</span>, <span style="color:#ae81ff">0x00</span>, <span style="color:#ae81ff">0x00</span>, <span style="color:#ae81ff">0x00</span>])
-</span></span><span style="display:flex;"><span>OUT_UNKNOWN_COMMAND_0x0A_ALT <span style="color:#f92672">=</span> bytes([<span style="color:#ae81ff">0x0a</span>, <span style="color:#ae81ff">0x91</span>, <span style="color:#ae81ff">0x00</span>, <span style="color:#ae81ff">0x02</span>, <span style="color:#ae81ff">0x00</span>, <span style="color:#ae81ff">0x04</span>, <span style="color:#ae81ff">0x00</span>, <span style="color:#ae81ff">0x00</span>, <span style="color:#ae81ff">0x03</span>, <span style="color:#ae81ff">0x00</span>, <span style="color:#ae81ff">0x00</span>])
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span><span style="color:#66d9ef">def</span> <span style="color:#a6e22e">send_usb_data</span>(ep_out, ep_in, data, description<span style="color:#f92672">=</span><span style="color:#e6db74">&#34;&#34;</span>):
-</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">try</span>:
-</span></span><span style="display:flex;"><span> ep_out<span style="color:#f92672">.</span>write(data)
-</span></span><span style="display:flex;"><span> time<span style="color:#f92672">.</span>sleep(<span style="color:#ae81ff">0.01</span>)
-</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">try</span>:
-</span></span><span style="display:flex;"><span> response <span style="color:#f92672">=</span> ep_in<span style="color:#f92672">.</span>read(<span style="color:#ae81ff">32</span>, timeout<span style="color:#f92672">=</span><span style="color:#ae81ff">100</span>)
-</span></span><span style="display:flex;"><span> hex_resp <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34; &#34;</span><span style="color:#f92672">.</span>join([<span style="color:#e6db74">f</span><span style="color:#e6db74">&#34;</span><span style="color:#e6db74">{</span>x<span style="color:#e6db74">:</span><span style="color:#e6db74">02x</span><span style="color:#e6db74">}</span><span style="color:#e6db74">&#34;</span> <span style="color:#66d9ef">for</span> x <span style="color:#f92672">in</span> response])
-</span></span><span style="display:flex;"><span> print(<span style="color:#e6db74">f</span><span style="color:#e6db74">&#34;[</span><span style="color:#e6db74">{</span>description<span style="color:#e6db74">}</span><span style="color:#e6db74">] Response: </span><span style="color:#e6db74">{</span>hex_resp<span style="color:#e6db74">}</span><span style="color:#e6db74">&#34;</span>)
-</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">except</span> usb<span style="color:#f92672">.</span>core<span style="color:#f92672">.</span>USBError <span style="color:#66d9ef">as</span> e:
-</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span> e<span style="color:#f92672">.</span>errno <span style="color:#f92672">==</span> <span style="color:#ae81ff">110</span>:
-</span></span><span style="display:flex;"><span> print(<span style="color:#e6db74">f</span><span style="color:#e6db74">&#34;[</span><span style="color:#e6db74">{</span>description<span style="color:#e6db74">}</span><span style="color:#e6db74">] No response (Timeout)&#34;</span>)
-</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">else</span>:
-</span></span><span style="display:flex;"><span> print(<span style="color:#e6db74">f</span><span style="color:#e6db74">&#34;[</span><span style="color:#e6db74">{</span>description<span style="color:#e6db74">}</span><span style="color:#e6db74">] Read Error: </span><span style="color:#e6db74">{</span>e<span style="color:#e6db74">}</span><span style="color:#e6db74">&#34;</span>)
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">except</span> usb<span style="color:#f92672">.</span>core<span style="color:#f92672">.</span>USBError <span style="color:#66d9ef">as</span> e:
-</span></span><span style="display:flex;"><span> print(<span style="color:#e6db74">f</span><span style="color:#e6db74">&#34;[</span><span style="color:#e6db74">{</span>description<span style="color:#e6db74">}</span><span style="color:#e6db74">] Write Error: </span><span style="color:#e6db74">{</span>e<span style="color:#e6db74">}</span><span style="color:#e6db74">&#34;</span>)
-</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">raise</span>
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span><span style="color:#66d9ef">def</span> <span style="color:#a6e22e">set_player_leds</span>(ep_out, ep_in, led_mask):
-</span></span><span style="display:flex;"><span> command <span style="color:#f92672">=</span> [
-</span></span><span style="display:flex;"><span> <span style="color:#ae81ff">0x09</span>, <span style="color:#ae81ff">0x91</span>, <span style="color:#ae81ff">0x00</span>, <span style="color:#ae81ff">0x07</span>, <span style="color:#ae81ff">0x00</span>, <span style="color:#ae81ff">0x08</span>, <span style="color:#ae81ff">0x00</span>, <span style="color:#ae81ff">0x00</span>,
-</span></span><span style="display:flex;"><span> led_mask,
-</span></span><span style="display:flex;"><span> <span style="color:#ae81ff">0x00</span>, <span style="color:#ae81ff">0x00</span>, <span style="color:#ae81ff">0x00</span>, <span style="color:#ae81ff">0x00</span>, <span style="color:#ae81ff">0x00</span>, <span style="color:#ae81ff">0x00</span>, <span style="color:#ae81ff">0x00</span>
-</span></span><span style="display:flex;"><span> ]
-</span></span><span style="display:flex;"><span> send_usb_data(ep_out, ep_in, bytes(command), <span style="color:#e6db74">f</span><span style="color:#e6db74">&#34;Set LED Mask: 0x</span><span style="color:#e6db74">{</span>led_mask<span style="color:#e6db74">:</span><span style="color:#e6db74">02x</span><span style="color:#e6db74">}</span><span style="color:#e6db74">&#34;</span>)
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span><span style="color:#66d9ef">def</span> <span style="color:#a6e22e">connect_usb</span>():
-</span></span><span style="display:flex;"><span> print(<span style="color:#e6db74">&#34;Searching for Nintendo Switch Controllers...&#34;</span>)
-</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">def</span> <span style="color:#a6e22e">match_device</span>(dev):
-</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> dev<span style="color:#f92672">.</span>idVendor <span style="color:#f92672">==</span> VENDOR_ID <span style="color:#f92672">and</span> dev<span style="color:#f92672">.</span>idProduct <span style="color:#f92672">in</span> PRODUCT_IDS
-</span></span><span style="display:flex;"><span> dev <span style="color:#f92672">=</span> usb<span style="color:#f92672">.</span>core<span style="color:#f92672">.</span>find(custom_match<span style="color:#f92672">=</span>match_device)
-</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span> dev <span style="color:#f92672">is</span> <span style="color:#66d9ef">None</span>:
-</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">raise</span> <span style="color:#a6e22e">ValueError</span>(<span style="color:#e6db74">&#34;Device not found&#34;</span>)
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> product_name <span style="color:#f92672">=</span> PRODUCT_IDS<span style="color:#f92672">.</span>get(dev<span style="color:#f92672">.</span>idProduct, <span style="color:#e6db74">&#34;Unknown Device&#34;</span>)
-</span></span><span style="display:flex;"><span> print(<span style="color:#e6db74">f</span><span style="color:#e6db74">&#34;Found </span><span style="color:#e6db74">{</span>product_name<span style="color:#e6db74">}</span><span style="color:#e6db74"> (ID: </span><span style="color:#e6db74">{</span>dev<span style="color:#f92672">.</span>idProduct<span style="color:#e6db74">:</span><span style="color:#e6db74">04x</span><span style="color:#e6db74">}</span><span style="color:#e6db74">)&#34;</span>)
-</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span> dev<span style="color:#f92672">.</span>is_kernel_driver_active(USB_INTERFACE_NUMBER):
-</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">try</span>:
-</span></span><span style="display:flex;"><span> print(<span style="color:#e6db74">&#34;Detaching kernel driver...&#34;</span>)
-</span></span><span style="display:flex;"><span> dev<span style="color:#f92672">.</span>detach_kernel_driver(USB_INTERFACE_NUMBER)
-</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">except</span> usb<span style="color:#f92672">.</span>core<span style="color:#f92672">.</span>USBError <span style="color:#66d9ef">as</span> e:
-</span></span><span style="display:flex;"><span> sys<span style="color:#f92672">.</span>exit(<span style="color:#e6db74">f</span><span style="color:#e6db74">&#34;Could not detach kernel driver: </span><span style="color:#e6db74">{</span>e<span style="color:#e6db74">}</span><span style="color:#e6db74">&#34;</span>)
-</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">try</span>:
-</span></span><span style="display:flex;"><span> dev<span style="color:#f92672">.</span>set_configuration()
-</span></span><span style="display:flex;"><span> print(<span style="color:#e6db74">&#34;Configuration set.&#34;</span>)
-</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">except</span> usb<span style="color:#f92672">.</span>core<span style="color:#f92672">.</span>USBError <span style="color:#66d9ef">as</span> e:
-</span></span><span style="display:flex;"><span> print(<span style="color:#e6db74">f</span><span style="color:#e6db74">&#34;Error setting configuration: </span><span style="color:#e6db74">{</span>e<span style="color:#e6db74">}</span><span style="color:#e6db74">&#34;</span>)
-</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">try</span>:
-</span></span><span style="display:flex;"><span> usb<span style="color:#f92672">.</span>util<span style="color:#f92672">.</span>claim_interface(dev, USB_INTERFACE_NUMBER)
-</span></span><span style="display:flex;"><span> print(<span style="color:#e6db74">f</span><span style="color:#e6db74">&#34;Interface </span><span style="color:#e6db74">{</span>USB_INTERFACE_NUMBER<span style="color:#e6db74">}</span><span style="color:#e6db74"> claimed.&#34;</span>)
-</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">except</span> usb<span style="color:#f92672">.</span>core<span style="color:#f92672">.</span>USBError <span style="color:#66d9ef">as</span> e:
-</span></span><span style="display:flex;"><span> sys<span style="color:#f92672">.</span>exit(<span style="color:#e6db74">f</span><span style="color:#e6db74">&#34;Could not claim interface: </span><span style="color:#e6db74">{</span>e<span style="color:#e6db74">}</span><span style="color:#e6db74">&#34;</span>)
-</span></span><span style="display:flex;"><span> cfg <span style="color:#f92672">=</span> dev<span style="color:#f92672">.</span>get_active_configuration()
-</span></span><span style="display:flex;"><span> intf <span style="color:#f92672">=</span> cfg[(USB_INTERFACE_NUMBER,<span style="color:#ae81ff">0</span>)]
-</span></span><span style="display:flex;"><span> ep_out <span style="color:#f92672">=</span> usb<span style="color:#f92672">.</span>util<span style="color:#f92672">.</span>find_descriptor(
-</span></span><span style="display:flex;"><span> intf,
-</span></span><span style="display:flex;"><span> custom_match <span style="color:#f92672">=</span> <span style="color:#66d9ef">lambda</span> e: usb<span style="color:#f92672">.</span>util<span style="color:#f92672">.</span>endpoint_direction(e<span style="color:#f92672">.</span>bEndpointAddress) <span style="color:#f92672">==</span> usb<span style="color:#f92672">.</span>util<span style="color:#f92672">.</span>ENDPOINT_OUT)
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> ep_in <span style="color:#f92672">=</span> usb<span style="color:#f92672">.</span>util<span style="color:#f92672">.</span>find_descriptor(
-</span></span><span style="display:flex;"><span> intf,
-</span></span><span style="display:flex;"><span> custom_match <span style="color:#f92672">=</span>
-</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">lambda</span> e: usb<span style="color:#f92672">.</span>util<span style="color:#f92672">.</span>endpoint_direction(e<span style="color:#f92672">.</span>bEndpointAddress) <span style="color:#f92672">==</span> usb<span style="color:#f92672">.</span>util<span style="color:#f92672">.</span>ENDPOINT_IN
-</span></span><span style="display:flex;"><span> )
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span> <span style="color:#f92672">not</span> ep_out:
-</span></span><span style="display:flex;"><span> sys<span style="color:#f92672">.</span>exit(<span style="color:#e6db74">&#34;Could not find OUT endpoint&#34;</span>)
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> print(<span style="color:#e6db74">f</span><span style="color:#e6db74">&#34;Found Endpoint OUT: 0x</span><span style="color:#e6db74">{</span>ep_out<span style="color:#f92672">.</span>bEndpointAddress<span style="color:#e6db74">:</span><span style="color:#e6db74">02x</span><span style="color:#e6db74">}</span><span style="color:#e6db74">&#34;</span>)
-</span></span><span style="display:flex;"><span> print(<span style="color:#e6db74">&#34;Starting Initialization Sequence...&#34;</span>)
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">try</span>:
-</span></span><span style="display:flex;"><span> send_usb_data(ep_out, ep_in, INIT_COMMAND_0x03, <span style="color:#e6db74">&#34;Init 0x03&#34;</span>)
-</span></span><span style="display:flex;"><span> send_usb_data(ep_out, ep_in, UNKNOWN_COMMAND_0x07, <span style="color:#e6db74">&#34;Unknown 0x07&#34;</span>)
-</span></span><span style="display:flex;"><span> send_usb_data(ep_out, ep_in, UNKNOWN_COMMAND_0x16, <span style="color:#e6db74">&#34;Unknown 0x16&#34;</span>)
-</span></span><span style="display:flex;"><span> send_usb_data(ep_out, ep_in, REQUEST_CONTROLLER_MAC, <span style="color:#e6db74">&#34;Req MAC&#34;</span>)
-</span></span><span style="display:flex;"><span> send_usb_data(ep_out, ep_in, LTK_REQUEST, <span style="color:#e6db74">&#34;Req LTK&#34;</span>)
-</span></span><span style="display:flex;"><span> send_usb_data(ep_out, ep_in, UNKNOWN_COMMAND_0x15_ARG_0x03, <span style="color:#e6db74">&#34;Unknown 0x15&#34;</span>)
-</span></span><span style="display:flex;"><span> send_usb_data(ep_out, ep_in, UNKNOWN_COMMAND_0x09, <span style="color:#e6db74">&#34;Unknown 0x09&#34;</span>)
-</span></span><span style="display:flex;"><span> send_usb_data(ep_out, ep_in, IMU_COMMAND_0x02, <span style="color:#e6db74">&#34;IMU 0x02&#34;</span>)
-</span></span><span style="display:flex;"><span> send_usb_data(ep_out, ep_in, OUT_UNKNOWN_COMMAND_0x11, <span style="color:#e6db74">&#34;OUT Unknown 0x11&#34;</span>)
-</span></span><span style="display:flex;"><span> send_usb_data(ep_out, ep_in, UNKNOWN_COMMAND_0x0A, <span style="color:#e6db74">&#34;Unknown 0x0A&#34;</span>)
-</span></span><span style="display:flex;"><span> send_usb_data(ep_out, ep_in, IMU_COMMAND_0x04, <span style="color:#e6db74">&#34;IMU 0x04&#34;</span>)
-</span></span><span style="display:flex;"><span> send_usb_data(ep_out, ep_in, ENABLE_HAPTICS, <span style="color:#e6db74">&#34;Enable Haptics&#34;</span>)
-</span></span><span style="display:flex;"><span> send_usb_data(ep_out, ep_in, OUT_UNKNOWN_COMMAND_0x10, <span style="color:#e6db74">&#34;OUT Unknown 0x10&#34;</span>)
-</span></span><span style="display:flex;"><span> send_usb_data(ep_out, ep_in, OUT_UNKNOWN_COMMAND_0x01, <span style="color:#e6db74">&#34;OUT Unknown 0x01&#34;</span>)
-</span></span><span style="display:flex;"><span> send_usb_data(ep_out, ep_in, OUT_UNKNOWN_COMMAND_0x03, <span style="color:#e6db74">&#34;OUT Unknown 0x03&#34;</span>)
-</span></span><span style="display:flex;"><span> send_usb_data(ep_out, ep_in, OUT_UNKNOWN_COMMAND_0x0A_ALT, <span style="color:#e6db74">&#34;OUT Unknown 0x0A Alt&#34;</span>)
-</span></span><span style="display:flex;"><span> set_player_leds(ep_out, ep_in, <span style="color:#ae81ff">0x0F</span>)
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> print(<span style="color:#e6db74">&#34;Controller initialization sequence complete! All LEDs should be on.&#34;</span>)
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">except</span> <span style="color:#a6e22e">Exception</span> <span style="color:#66d9ef">as</span> e:
-</span></span><span style="display:flex;"><span> print(<span style="color:#e6db74">f</span><span style="color:#e6db74">&#34;Error during sequence: </span><span style="color:#e6db74">{</span>e<span style="color:#e6db74">}</span><span style="color:#e6db74">&#34;</span>)
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span><span style="color:#66d9ef">if</span> __name__ <span style="color:#f92672">==</span> <span style="color:#e6db74">&#34;__main__&#34;</span>:
-</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">try</span>:
-</span></span><span style="display:flex;"><span> connect_usb()
-</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">except</span> <span style="color:#a6e22e">ValueError</span> <span style="color:#66d9ef">as</span> e:
-</span></span><span style="display:flex;"><span> print(e)
-</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">except</span> <span style="color:#a6e22e">Exception</span> <span style="color:#66d9ef">as</span> e:
-</span></span><span style="display:flex;"><span> print(<span style="color:#e6db74">f</span><span style="color:#e6db74">&#34;Unexpected error: </span><span style="color:#e6db74">{</span>e<span style="color:#e6db74">}</span><span style="color:#e6db74">&#34;</span>)
-</span></span></code></pre></div><p><strong>Steps</strong></p>
+<p><strong>Steps</strong></p>
<a href="https://micro.pinapelz.moe/posts/2025-12-04-procon2-hid-tool/">Read more...</a>
send patches to the email below
yukais@pinapelz.com
include the subject [PATCH repo_name]
pinapelz.com
homepage