Guide user through button detection for an unknown mouse using Slicer Python console
Scanned 2/12/2026
Install via CLI
openskills install majiayu000/claude-skill-registry---
name: detect-buttons
description: Guide user through button detection for an unknown mouse using Slicer Python console
allowed-tools:
- Read
context: manual
---
# Detect Buttons Skill
Guide user through button detection for an unknown mouse.
## When to Use
Use this skill when:
- User has a mouse not in the built-in profiles
- User needs to determine Qt button codes
- User wants to verify button codes on their system
## Steps
1. **Explain the Process**
Tell the user:
- They'll need to run code in Slicer's Python console
- Each button press will print its Qt code
- They should note which physical button maps to which code
2. **Provide Detection Code**
Give the user this code to paste in Slicer Python console:
```python
import qt
class ButtonDetector(qt.QObject):
def __init__(self):
super().__init__()
self.detected = []
slicer.app.installEventFilter(self)
print("Button detection active. Press mouse buttons...")
print("Press Ctrl+C in console when done.")
def eventFilter(self, obj, event):
if event.type() == qt.QEvent.MouseButtonPress:
btn = int(event.button())
mods = int(event.modifiers())
if btn not in [b[0] for b in self.detected]:
self.detected.append((btn, mods))
print(f"Detected button: {btn} (modifiers: {hex(mods)})")
return False
def stop(self):
slicer.app.removeEventFilter(self)
print("\nDetection stopped. Results:")
for btn, mods in self.detected:
print(f" Button {btn}")
return self.detected
detector = ButtonDetector()
# When done: detector.stop()
```
3. **Collect Results**
After user runs detection, ask them to share:
- Which button code corresponds to which physical button
- Any buttons that weren't detected
4. **Map to Profile**
Help user create mapping:
```
Code 1 -> Left Click (not remappable)
Code 2 -> Right Click (not remappable)
Code 4 -> Middle Click
Code 8 -> Back / Thumb Back
Code 16 -> Forward / Thumb Forward
Code 32 -> Extra button (side, thumb, etc.)
```
5. **Create Profile**
Use the add-mouse-profile skill to create the profile JSON.
## Platform Notes
- **Windows**: Standard Qt codes usually work
- **macOS**: Some buttons may not generate Qt events if intercepted by system
- **Linux**: Standard codes work; evdev can detect more buttons
## Troubleshooting
**Button not detected:**
- Check if system/driver software is intercepting
- On Linux, check if user is in `input` group
- Try running Slicer as administrator (Windows)
**Wrong button detected:**
- Driver software may be remapping buttons
- Disable vendor software (Logitech Options, etc.)
- Reset mouse to default configuration
## Example Output
```
Button detection active. Press mouse buttons...
Detected button: 1 (modifiers: 0x0) # Left click
Detected button: 2 (modifiers: 0x0) # Right click
Detected button: 4 (modifiers: 0x0) # Middle click
Detected button: 8 (modifiers: 0x0) # Back
Detected button: 16 (modifiers: 0x0) # Forward
Detected button: 32 (modifiers: 0x0) # Thumb button
```
No comments yet. Be the first to comment!