Buy this gaming mouse cheap on Amazon with this link: If you don't have a CD-ROM.
#!/usr/bin/env python |
'' |
Script to control the |
Easterntimes Tech |
Wired Gaming Mouse T1 |
via PyUSB. |
'' |
import sys, argparse, textwrap, logging |
import usb.core, usb.util |
logger = logging.getLogger(name=__name__) |
classWiredGamingMouseT1(object): |
idVendor =0x04d9 |
idProduct =0xfc07 |
brightness_map = {'bright': 3, 'medium': 2, 'dim': 1, 'off': 0} |
breathing_map = {'fast': 1, 'medium': 3, 'slow': 6, 'off': 0} |
def__init__(self): |
# Device Initialization |
dev = usb.core.find(idVendor=self.idVendor, idProduct=self.idProduct) |
try: |
if dev.is_kernel_driver_active(2): |
dev.detach_kernel_driver(2) |
except usb.core.USBError as e: |
msg ='' |
Could not interact with the device. This tool needs to be run as root |
or you need to set the right permissions on the usb device: |
sudo chmod 666 /dev/bus/usb/{bus:03d}/{address:03d} |
Or you can let udev configure the permissions automatically by putting this rule: |
SUBSYSTEM'usb', ATTR{{idVendor}}'04d9', ATTR{{idProduct}}'fc07', MODE='0666', SYMLINK+='wgmt1' |
into the file /etc/udev/rules.d/99-wgmt1.rules. |
'' |
sys.exit(textwrap.dedent(msg.format(bus=dev.bus, address=dev.address))) |
usb.util.claim_interface(dev, 2) |
self.dev = dev |
defsend_ctrl_msg(self, data, big=False): |
logger.debug('sending: '+repr(data)) |
val =0x0303if big else0x0302 |
self.dev.ctrl_transfer(0x21, 9, val, 2, data) |
defset_color(self, rgb, brightness='bright', breathing='off'): |
'' send a URB message via PyUSB and change the LED color '' |
r, g, b = (255- col for col in rgb) |
brightness, breathing =self.sanitize_brightness_breathing(brightness, breathing) |
msg =bytes([0x2, 0x4, r, g, b, brightness, breathing, 0, 0, 0, 0, 0, 0, 0, 0, 0]) |
self.send_ctrl_msg(msg) |
defset_profile(self, profile): |
'' send a URB message via PyUSB and change the profile '' |
assert profile inrange(0, 5) |
msg =bytes([2,2,0x43,0,1,0,0xfa,0xfa,profile,0,0,0,0,0,0,0]) |
self.send_ctrl_msg(msg) |
msg =bytes([2,1,1,profile,0,0,0,0,0,0,0,0,0,0,0,0]) |
self.send_ctrl_msg(msg) |
defset_cpi(self, profile, cpi_steps): |
'' |
cpi_steps must be an iterable of length 5 |
each consisting of a number going from 0 to 16 |
'' |
assertlen(cpi_steps) 5 |
msg = [3,2,0x4f,2,0x2a,0,0xfa,0xfa,5,profile] |
for cpi_step in cpi_steps: |
if cpi_step inrange(0, 17): |
enable =1 |
else: |
enable =0 |
cpi_step =0 |
msg += [enable,cpi_step,0,cpi_step,0,0,0,0] |
msg += [0] *14 |
msg =bytes(msg) |
self.send_ctrl_msg(msg, big=True) |
logger.info('You need to switch to the profile now to enable the new settings.') |
defsanitize_brightness_breathing(self, brightness, breathing): |
iftype(brightness) str: |
brightness =self.brightness_map[brightness] |
iftype(breathing) str: |
breathing =self.breathing_map[breathing] |
assert brightness in (0,1,2,3) |
assert breathing in (0,1,3,6) |
return brightness, breathing |
defset_brightness_breathing(self, profile, brightness, breathing): |
'''' |
brightness, breathing =self.sanitize_brightness_breathing(brightness, breathing) |
msg =bytes([2,2,0xf1,profile,6,0,0xfa,0xfa,0xf1,0xf0,0,brightness,breathing,0,0,0]) |
logger.debug('Sending this now: '+repr(msg)) |
self.send_ctrl_msg(msg) |
logger.info('You need to switch to the profile now to enable the new settings.') |
defcpi_steps(string): |
'' |
argparse type definition to enter CPI steps. |
'' |
try: |
steps = [int(part) for part in string.split(',')] |
assertlen(steps) 5 |
return steps |
except: |
raise argparse.ArgumentTypeError('Not a proper CPI steps value.') |
defhex_rgb(string): |
'' |
argparse type definition to enter RGB |
values as a 3- or 6- digit hex number |
'' |
try: |
iflen(string) 3: |
string = string[0] *2+ string[1] *2+ string[2] *2 |
assertlen(string) 6 |
r, g, b = string[0:2], string[2:4], string[4:6] |
return (int(col, 16) for col in (r, g, b)) |
except: |
raise argparse.ArgumentTypeError('Not a proper RGB hex value.') |
defmain(): |
parser = argparse.ArgumentParser(description=__doc__) |
parser.add_argument('--debug', action='store_true') |
profile_parser = argparse.ArgumentParser(add_help=False) |
profile_parser.add_argument('profile', type=int, choices=range(0,5), help='Profile') |
subparsers = parser.add_subparsers(dest='action', metavar='<action>', help='Action to perform:') |
# set-color |
action_desc ='Set the LED color of the mouse' |
set_color_parser = subparsers.add_parser('col', |
description=action_desc, help=action_desc) |
set_color_parser.add_argument('color', type=hex_rgb, metavar='RRGGBB', help='New LED color') |
set_color_parser.add_argument('--brightness', choices=WiredGamingMouseT1.brightness_map.keys(), default='bright', help='Brightness') |
set_color_parser.add_argument('--breathing', choices=WiredGamingMouseT1.breathing_map.keys(), default='off', help='Breathing') |
# switch-profile |
action_desc ='Switch to a different mouse profile' |
switch_profile_parser = subparsers.add_parser('sp', |
description=action_desc, parents=[profile_parser], help=action_desc) |
# cpi-steps |
action_desc ='Set the CPI (counts-per-inch) steps' |
switch_profile_parser = subparsers.add_parser('cs', |
description=action_desc, parents=[profile_parser], help=action_desc) |
switch_profile_parser.add_argument('steps', type=cpi_steps, |
help='Comma separated list of CPI steps for the specified profile. Default: 2,3,6,13,16. Use -1 to disable a step.') |
# brightness-breathing |
action_desc ='Change the brightness & breathing settings' |
brightness_breathing_parser = subparsers.add_parser('bb', |
description=action_desc, parents=[profile_parser], help=action_desc) |
brightness_breathing_parser.add_argument('brightness', choices=WiredGamingMouseT1.brightness_map.keys(), help='Brightness') |
brightness_breathing_parser.add_argument('breathing', choices=WiredGamingMouseT1.breathing_map.keys(), help='Breathing') |
args = parser.parse_args() |
ifnot args.action: parser.error('Please choose and action.') |
level = logging.DEBUGif args.debug else logging.INFO |
logging.basicConfig(format='%(levelname)s: %(message)s', level=level) |
t1 = WiredGamingMouseT1() |
if args.action 'col': t1.set_color(args.color, args.brightness, args.breathing) |
if args.action 'sp': t1.set_profile(args.profile) |
if args.action 'cs': t1.set_cpi(args.profile, args.steps) |
if args.action 'bb': t1.set_brightness_breathing(args.profile, args.brightness, args.breathing) |
if__name__'__main__': main() |
commented Dec 31, 2015
Hey! sorry for the noob question but i'm getting: |
commented Jan 14, 2016
Hi @F0rce, In addition, you need to install libusb1 from your Linux distribution's package manager. |
commented Jan 16, 2016
T7 Wired Gaming Mouse Driver Download
Hi, I'm getting the following error when I try to run it Command: Error: I am running Ubuntu 15.10 with both PyUSB and libusb-1.0-0 installed, do you know what I have done wrong? |
commented Jan 19, 2016
Probably your usb vendorID or productID are different, check them out using lsusb or dmesg and update the py script. |
commented Jun 30, 2016
|
As well as producing some capable mechanical keyboards, VicTsing also manufacturers other accessories for the PC, including mice. We'll be featuring the VicTsing T3 and T7, both billed as affordable gaming mice for the home. Are they any good and should you invest in a purchase, saving some money compared to more expensive counterparts? Let's take a look.
The T3 is an interesting mouse. At $29.99 it's not quite dirt cheap, but you do get some added benefits of paying out slightly more money. I'm talking braided cabling, RGB LED lighting, and a comfortable experience overall. If you're expecting pinpoint accuracy similar to what you'd find in top-of-the-line Razer and Logitech mice, I would always recommend paying out the premium for said peripherals. That said, the T3 by VicTsing is a seriously good mouse for the price.
There are five pre-set DPI levels that you can toggle through. If you wish to take customization a step further, you'll need to boot up the dedicated suite, which also includes options for color effects, buttons, setting up macros, and more. The software is a neat addition, and including settings for media controls, profile switches, reporting rates and more is something I wouldn't have expected when considering the price.
Category | Specs |
---|---|
DPI | 1000/2000/4000/8200/16400 |
Sensor | Avago A9800 |
Buttons | 7 |
Alongside the braided cable, we also have a rather compact mouse with ergonomics that make it rather joyful to hold, regardless as to which grip style you prefer. The scroll wheel actually feels sturdy and the main buttons do not feel cheap. That said, the two buttons on the side of the unit do not meet the same level of quality, but I'm not a fan of said buttons and shan't be using them regularly.
For mouse performance, I've set the pre-set DPI level to 2000, which I feel is a nice balance and I've not experienced much in terms of pointer jitter. I noticed some issues with mouse tracking when moving across a surface at some speed, but for the average title on the PC, you should be absolutely fine. Again, we're talking about a $30 mouse.
I like the T3, it's a solid mouse... so long as you don't require absolute precision at fast speeds. What is really cool about VicTsing's mouse is the packaging it comes in — don't throw it out when you get it home because it's designed so that you can repurpose it as a carrier for your next LAN party.
VicTsing T7
Contrary to what you'd naturally assume from the naming of these mice (and the naming used in general for VicTsing products leave much to be desired), the T7 is actually the less advanced option when compared against the T3. There's no gold-plated USB connector, no braided cabling, but it's not a bad mouse at all, and you could almost say they're pretty much identical, aside from aesthetics and a few small design details.
The T7 sports the same ABS material used in the T3, resulting in a clean and comfortable finish that's nothing short of a joy to hold. I prefer this finish to the Naga Hex V1, which is a pointer I usually swear by when it comes to the whole package. Much like it's slightly more expensive sibling, the T7 can also switch between 5 pre-set DPI configurations on the fly, though you'll only be able to max out at 7200.
Category | Specs |
---|---|
DPI | 1200/2400/3500/5500/7200 |
Sensor | Avago A9800 |
Buttons | 7 |
T7 Wired Gaming Mouse Driver Download For Laptop
It's also optical, so don't go looking down near the laser underneath. I tested the mouse on its various DPI settings and configurations, finding that it performed well in general use and in some light gaming. Again, the software is a nice addition that helps in customizing the mouse with a variety of settings.
T7 Wired Gaming Mouse Driver Download Windows 7
If you don't care for better protected cabling and aren't fussed about having the most insane levels of DPI possible, the T7 is actually a bargain at just £9.99 here in the UK, you really can't go wrong if your available budget simply won't stretch for that DeathAdder Elite.
This post may contain affiliate links. See our disclosure policy for more details.