From cc754d50e76655bd5702c79167e68f7c97bbd47c Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Thu, 21 Feb 2019 15:37:11 +1000 Subject: [PATCH] svg: add the svgs as-is from libratbag Note that the SVGs are MIT-licensed as of this commit. Future SVGs will be GPL3 as users add them to piper. Signed-off-by: Peter Hutterer --- data/svgs/README.md | 104 +++ data/svgs/check-svg.py | 122 +++ data/svgs/fallback.svg | 506 +++++++++++ data/svgs/logitech-g-pro-wireless.svg | 358 ++++++++ data/svgs/logitech-g-pro.svg | 416 +++++++++ data/svgs/logitech-g102-g203.svg | 1 + data/svgs/logitech-g300.svg | 514 +++++++++++ data/svgs/logitech-g303.svg | 410 +++++++++ data/svgs/logitech-g402.svg | 479 ++++++++++ data/svgs/logitech-g403.svg | 380 ++++++++ data/svgs/logitech-g500.svg | 484 ++++++++++ data/svgs/logitech-g500s.svg | 1 + data/svgs/logitech-g502.svg | 570 ++++++++++++ data/svgs/logitech-g600.svg | 1190 +++++++++++++++++++++++++ data/svgs/logitech-g603.svg | 331 +++++++ data/svgs/logitech-g700.svg | 576 ++++++++++++ data/svgs/logitech-g703.svg | 1 + data/svgs/logitech-g9.svg | 509 +++++++++++ data/svgs/logitech-g900.svg | 554 ++++++++++++ data/svgs/logitech-mx-anywhere2.svg | 349 ++++++++ data/svgs/logitech-mx-anywhere2s.svg | 1 + data/svgs/logitech-mx-master-2s.svg | 359 ++++++++ data/svgs/logitech-mx-master.svg | 1 + data/svgs/roccat-kone-xtd.svg | 578 ++++++++++++ data/svgs/steelseries-kinzu-v2.svg | 285 ++++++ data/svgs/steelseries-rival.svg | 443 +++++++++ data/svgs/steelseries-rival310.svg | 443 +++++++++ data/svgs/steelseries-rival600.svg | 637 +++++++++++++ data/svgs/steelseries-sensei310.svg | 513 +++++++++++ data/svgs/steelseries-senseiraw.svg | 497 +++++++++++ 30 files changed, 11612 insertions(+) create mode 100644 data/svgs/README.md create mode 100755 data/svgs/check-svg.py create mode 100644 data/svgs/fallback.svg create mode 100644 data/svgs/logitech-g-pro-wireless.svg create mode 100644 data/svgs/logitech-g-pro.svg create mode 120000 data/svgs/logitech-g102-g203.svg create mode 100644 data/svgs/logitech-g300.svg create mode 100644 data/svgs/logitech-g303.svg create mode 100644 data/svgs/logitech-g402.svg create mode 100644 data/svgs/logitech-g403.svg create mode 100644 data/svgs/logitech-g500.svg create mode 120000 data/svgs/logitech-g500s.svg create mode 100644 data/svgs/logitech-g502.svg create mode 100644 data/svgs/logitech-g600.svg create mode 100644 data/svgs/logitech-g603.svg create mode 100644 data/svgs/logitech-g700.svg create mode 120000 data/svgs/logitech-g703.svg create mode 100644 data/svgs/logitech-g9.svg create mode 100644 data/svgs/logitech-g900.svg create mode 100644 data/svgs/logitech-mx-anywhere2.svg create mode 120000 data/svgs/logitech-mx-anywhere2s.svg create mode 100644 data/svgs/logitech-mx-master-2s.svg create mode 120000 data/svgs/logitech-mx-master.svg create mode 100644 data/svgs/roccat-kone-xtd.svg create mode 100644 data/svgs/steelseries-kinzu-v2.svg create mode 100644 data/svgs/steelseries-rival.svg create mode 100644 data/svgs/steelseries-rival310.svg create mode 100644 data/svgs/steelseries-rival600.svg create mode 100644 data/svgs/steelseries-sensei310.svg create mode 100644 data/svgs/steelseries-senseiraw.svg diff --git a/data/svgs/README.md b/data/svgs/README.md new file mode 100644 index 0000000..656ce93 --- /dev/null +++ b/data/svgs/README.md @@ -0,0 +1,104 @@ +libratbag gnome theme +==================== + +Requirements +------------ + +See the Logitech G403 for an example of a device with a small amount of buttons, +and the Logitech G700 for an example of a device with a large amount of buttons. + +- Canvas size should be between 400x400 and 500x500 pixels. +- Three layers in the final SVG: + 1. a lower layer named "Device" with the device itself. Each button on the + device should have an id `buttonX`, with `X` being the number of the button + (so for button 0 the id would be `button0`). Similarly, each LED on the device + should have an id `ledX`. + 2. a middle layer named "Buttons" with the button leaders (see below for + leaders). + 3. an upper layer named "LEDs" with the LED leaders. +- A leader line is a path that extends from the button or LED to the left or the + right of the device (see below). Each leader line requires the following: + - It should start with a 7x7 square placed on or close to the button or LED + that it maps with. + - From this square, a path should extend left or right (see below). + - Each path should end with a 1x1 pixel with identifier `buttonX-leader` (or + `ledX-leader`), where `X` is the number of the button (or LED) with + which the leader maps. For button 0, this would be `button0-leader`. + - All these elements should be grouped and given the identifier `buttonX-path` + (or `ledX-path` for LEDs) +- Leader lines should have a vertical spacing of at least 40 pixels. When there + are several leader lines above and below each other, make the spacing between + them equal. +- If the device's scroll wheel supports horizontal tilting, add two small arrows + left and right of the scroll wheel with the respective button identifiers (see + the Logitech G700 for an example). Do not cut the scroll wheel in half + vertically to map these buttons. +- If there aren't too many buttons, preferably make the leaders point to the + right with the device itself placed on the left. If the buttons would extend + below or above the device, make some point to the left instead with the device + itself centered in the middle. In this case, half of the leaders should extend + to the left and the other half to the right. +- When a leader points to the right, its 1x1 pixel should have a style property + `text-align:start`. When a leader points to the left, its 1x1 pixel should + have a style property `text-align:end`. +- The canvas should be resized so that there is a 20px gap between the device + and the edge of the canvas and no gap between the 1x1 pixels and the canvas. + +Please note that due to the way the SVG is drawn, you cannot rely on the +z-ordering of elements to line up or cover elements (as noted in [this +issue](https://github.com/libratbag/piper/issues/48), which includes links to +examples). As such, please make sure that you align the elements appropriately; +[this +comment](https://github.com/libratbag/piper/issues/48#issuecomment-315979109) +includes some helpful tips. + +Technique +--------- + +The simplest approach is to find a photo of the device and import it into +inkscape. Put it on the lowest layer, create a new layer "Device" above it +and start tracing the outlines and edges of the device. Fill in the shapes +and your device should resemble the underlying photo. Delete the photo +layer, add leaders in their respective layers and you're done. + +Make sure the image looks ''toned-down'' and not realistic. Do not use dark or +bright colors. + + +License +------- +The SVG files listed below were imported from libratbag and are MIT licensed +as of the time of import. See the libratbag COPYING file for details. + + fallback.svg + logitech-g-pro-wireless.svg + logitech-g-pro.svg + logitech-g102-g203.svg + logitech-g300.svg + logitech-g303.svg + logitech-g402.svg + logitech-g403.svg + logitech-g500.svg + logitech-g500s.svg + logitech-g502.svg + logitech-g600.svg + logitech-g603.svg + logitech-g700.svg + logitech-g703.svg + logitech-g9.svg + logitech-g900.svg + logitech-mx-anywhere2.svg + logitech-mx-anywhere2s.svg + logitech-mx-master-2s.svg + logitech-mx-master.svg + roccat-kone-xtd.svg + steelseries-kinzu-v2.svg + steelseries-rival.svg + steelseries-rival310.svg + steelseries-rival600.svg + steelseries-sensei310.svg + steelseries-senseiraw.svg + +Where changes are made to these files, the changes will be made under +piper's license (GPLv3). Use the git commit log to determine the exact +license state of each file. diff --git a/data/svgs/check-svg.py b/data/svgs/check-svg.py new file mode 100755 index 0000000..f675009 --- /dev/null +++ b/data/svgs/check-svg.py @@ -0,0 +1,122 @@ +#!/usr/bin/python3 +# vim: set expandtab shiftwidth=4 tabstop=4: + +import sys +from lxml import etree +import logging + +ns = {'svg': 'http://www.w3.org/2000/svg'} +style_query = '//svg:rect[@id=\"{}\"][contains(@style, \"{}\")]' + +logger = None + +class SVGLogger(logging.Logger): + def __init__(self, name, level=logging.NOTSET): + self.success = True + return super().__init__(name, level) + + def error(self, msg, *args, **kwargs): + self.success = False + return super().error(msg, *args, **kwargs) + + @classmethod + def get_logger(cls, path): + logging.setLoggerClass(SVGLogger) + logging.basicConfig(level=logging.DEBUG) + return logging.getLogger(path) + + +def check_size(root): + width = float(root.attrib['width']) + height = float(root.attrib['height']) + if not 400 < width < 500: + logger.error("Width is outside of range: {}".format(width)) + if not 400 < height < 500: + logger.error("Height is outside of range: {}".format(height)) + + +def check_layers(root): + """ + Check there are layers (well, groups) for the components we require. + """ + layer_ids = [g.attrib['id'] for g in root.iterfind('svg:g', ns)] + + for layer in ["Device", "Buttons", "LEDs"]: + if layer not in layer_ids: + logger.error("Missing layer: {}".format(layer)) + + +def check_elements(root, prefix, required=0): + """ + Checks for elements of the form 'prefixN' in the root tag. Any elements + found must be consecutive or an warning is printed, i.e. if there's a + 'button8' there has to be a 'button7'. + + If required is nonzero, an error is logged for any missing element with + an index less than required. + """ + + # elements can be paths and rects + # This includes leaders and lines + element_ids = [p.attrib['id'] for p in root.xpath('//svg:path', namespaces=ns) if p.attrib['id'].startswith(prefix)] + element_ids += [p.attrib['id'] for p in root.xpath('//svg:rect', namespaces=ns) if p.attrib['id'].startswith(prefix)] + element_ids += [g.attrib['id'] for g in root.xpath('//svg:g', namespaces=ns) if g.attrib['id'].startswith(prefix)] + + idx = 0 + highest = -1 + for idx in range(0, 20): + e = '{}{}'.format(prefix, idx) + previous = '{}{}'.format(prefix, idx - 1) + leader = '{}{}-leader'.format(prefix, idx) + path = '{}{}-path'.format(prefix, idx) + if e in element_ids: + highest = idx + if idx > 0 and previous not in element_ids: + logger.warning("Non-consecutive {}: {}".format(prefix, e)) + + if leader not in element_ids: + logger.error("Missing {} for {}".format(leader, e)) + else: + element = root.xpath(style_query.format(leader, 'text-align'), namespaces=ns) + if element is None or len(element) != 1 or element[0] is None: + logger.error("Missing style property for {}".format(leader)) + + if path not in element_ids: + logger.error("Missing {} for {}".format(path, e)) + elif leader in element_ids: + logger.error("Have {} but not {}".format(leader, e)) + elif path in element_ids: + logger.error("Have {} but not {}".format(path, e)) + elif idx < required: + logger.error("Missing {}: {}".format(prefix, e)) + + logger.info("Found {} {}s".format(highest + 1, prefix)) + + +def check_leds(root): + check_elements(root, "led") + + +def check_buttons(root): + check_elements(root, "button", 3) + + +def check_svg(path): + svg = etree.parse(path) + root = svg.getroot() + + check_size(root) + check_layers(root) + check_buttons(root) + check_leds(root) + +if __name__ == "__main__": + success = True + for path in sys.argv[1:]: + logger = SVGLogger.get_logger(path) + check_svg(path) + if not logger.success: + success = False + + if not success: + sys.exit(1) diff --git a/data/svgs/fallback.svg b/data/svgs/fallback.svg new file mode 100644 index 0000000..60bef3e --- /dev/null +++ b/data/svgs/fallback.svg @@ -0,0 +1,506 @@ + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + 404 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/svgs/logitech-g-pro-wireless.svg b/data/svgs/logitech-g-pro-wireless.svg new file mode 100644 index 0000000..760fb77 --- /dev/null +++ b/data/svgs/logitech-g-pro-wireless.svg @@ -0,0 +1,358 @@ + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/svgs/logitech-g-pro.svg b/data/svgs/logitech-g-pro.svg new file mode 100644 index 0000000..84177e9 --- /dev/null +++ b/data/svgs/logitech-g-pro.svg @@ -0,0 +1,416 @@ + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/svgs/logitech-g102-g203.svg b/data/svgs/logitech-g102-g203.svg new file mode 120000 index 0000000..c68bd60 --- /dev/null +++ b/data/svgs/logitech-g102-g203.svg @@ -0,0 +1 @@ +logitech-g-pro.svg \ No newline at end of file diff --git a/data/svgs/logitech-g300.svg b/data/svgs/logitech-g300.svg new file mode 100644 index 0000000..8022697 --- /dev/null +++ b/data/svgs/logitech-g300.svg @@ -0,0 +1,514 @@ + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/svgs/logitech-g303.svg b/data/svgs/logitech-g303.svg new file mode 100644 index 0000000..1e63cc8 --- /dev/null +++ b/data/svgs/logitech-g303.svg @@ -0,0 +1,410 @@ + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/svgs/logitech-g402.svg b/data/svgs/logitech-g402.svg new file mode 100644 index 0000000..d4c96c9 --- /dev/null +++ b/data/svgs/logitech-g402.svg @@ -0,0 +1,479 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/svgs/logitech-g403.svg b/data/svgs/logitech-g403.svg new file mode 100644 index 0000000..4619e13 --- /dev/null +++ b/data/svgs/logitech-g403.svg @@ -0,0 +1,380 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/svgs/logitech-g500.svg b/data/svgs/logitech-g500.svg new file mode 100644 index 0000000..5dd9532 --- /dev/null +++ b/data/svgs/logitech-g500.svg @@ -0,0 +1,484 @@ + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/svgs/logitech-g500s.svg b/data/svgs/logitech-g500s.svg new file mode 120000 index 0000000..5364df2 --- /dev/null +++ b/data/svgs/logitech-g500s.svg @@ -0,0 +1 @@ +logitech-g500.svg \ No newline at end of file diff --git a/data/svgs/logitech-g502.svg b/data/svgs/logitech-g502.svg new file mode 100644 index 0000000..1ed154b --- /dev/null +++ b/data/svgs/logitech-g502.svg @@ -0,0 +1,570 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/svgs/logitech-g600.svg b/data/svgs/logitech-g600.svg new file mode 100644 index 0000000..83b7eac --- /dev/null +++ b/data/svgs/logitech-g600.svg @@ -0,0 +1,1190 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/svgs/logitech-g603.svg b/data/svgs/logitech-g603.svg new file mode 100644 index 0000000..9f71258 --- /dev/null +++ b/data/svgs/logitech-g603.svg @@ -0,0 +1,331 @@ + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/svgs/logitech-g700.svg b/data/svgs/logitech-g700.svg new file mode 100644 index 0000000..3ca0295 --- /dev/null +++ b/data/svgs/logitech-g700.svg @@ -0,0 +1,576 @@ + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/svgs/logitech-g703.svg b/data/svgs/logitech-g703.svg new file mode 120000 index 0000000..89ab5f9 --- /dev/null +++ b/data/svgs/logitech-g703.svg @@ -0,0 +1 @@ +logitech-g403.svg \ No newline at end of file diff --git a/data/svgs/logitech-g9.svg b/data/svgs/logitech-g9.svg new file mode 100644 index 0000000..017dd1b --- /dev/null +++ b/data/svgs/logitech-g9.svg @@ -0,0 +1,509 @@ + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/svgs/logitech-g900.svg b/data/svgs/logitech-g900.svg new file mode 100644 index 0000000..1e1beb8 --- /dev/null +++ b/data/svgs/logitech-g900.svg @@ -0,0 +1,554 @@ + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/svgs/logitech-mx-anywhere2.svg b/data/svgs/logitech-mx-anywhere2.svg new file mode 100644 index 0000000..acb95cd --- /dev/null +++ b/data/svgs/logitech-mx-anywhere2.svg @@ -0,0 +1,349 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/svgs/logitech-mx-anywhere2s.svg b/data/svgs/logitech-mx-anywhere2s.svg new file mode 120000 index 0000000..d8feb6e --- /dev/null +++ b/data/svgs/logitech-mx-anywhere2s.svg @@ -0,0 +1 @@ +logitech-mx-anywhere2.svg \ No newline at end of file diff --git a/data/svgs/logitech-mx-master-2s.svg b/data/svgs/logitech-mx-master-2s.svg new file mode 100644 index 0000000..5a9b820 --- /dev/null +++ b/data/svgs/logitech-mx-master-2s.svg @@ -0,0 +1,359 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/svgs/logitech-mx-master.svg b/data/svgs/logitech-mx-master.svg new file mode 120000 index 0000000..315750e --- /dev/null +++ b/data/svgs/logitech-mx-master.svg @@ -0,0 +1 @@ +logitech-mx-master-2s.svg \ No newline at end of file diff --git a/data/svgs/roccat-kone-xtd.svg b/data/svgs/roccat-kone-xtd.svg new file mode 100644 index 0000000..2492101 --- /dev/null +++ b/data/svgs/roccat-kone-xtd.svg @@ -0,0 +1,578 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/svgs/steelseries-kinzu-v2.svg b/data/svgs/steelseries-kinzu-v2.svg new file mode 100644 index 0000000..967e48b --- /dev/null +++ b/data/svgs/steelseries-kinzu-v2.svg @@ -0,0 +1,285 @@ + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/svgs/steelseries-rival.svg b/data/svgs/steelseries-rival.svg new file mode 100644 index 0000000..c751455 --- /dev/null +++ b/data/svgs/steelseries-rival.svg @@ -0,0 +1,443 @@ + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/svgs/steelseries-rival310.svg b/data/svgs/steelseries-rival310.svg new file mode 100644 index 0000000..2a75092 --- /dev/null +++ b/data/svgs/steelseries-rival310.svg @@ -0,0 +1,443 @@ + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/svgs/steelseries-rival600.svg b/data/svgs/steelseries-rival600.svg new file mode 100644 index 0000000..643ddcc --- /dev/null +++ b/data/svgs/steelseries-rival600.svg @@ -0,0 +1,637 @@ + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/svgs/steelseries-sensei310.svg b/data/svgs/steelseries-sensei310.svg new file mode 100644 index 0000000..41f9d63 --- /dev/null +++ b/data/svgs/steelseries-sensei310.svg @@ -0,0 +1,513 @@ + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/svgs/steelseries-senseiraw.svg b/data/svgs/steelseries-senseiraw.svg new file mode 100644 index 0000000..41c6985 --- /dev/null +++ b/data/svgs/steelseries-senseiraw.svg @@ -0,0 +1,497 @@ + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +