from logitech.g19_keys import (Data, Key)
|
|
from logitech.g19_receivers import InputProcessor
|
|
|
|
class SimpleBgLight(object):
|
|
'''Simple color changing.
|
|
|
|
Enable M1..3 for red/green/blue and use the scroll to change the intensity
|
|
for the currently selected colors.
|
|
|
|
'''
|
|
|
|
def __init__(self, lg19):
|
|
self.__lg19 = lg19
|
|
self.__redEnabled = False
|
|
self.__greenEnabled = False
|
|
self.__blueEnabled = False
|
|
self.__curColor = [255, 255, 255]
|
|
|
|
def _clamp_current_color(self):
|
|
'''Assures that all color components are in [0, 255].'''
|
|
for i in range(3):
|
|
val = self.__curColor[i]
|
|
self.__curColor[i] = val if val >= 0 else 0
|
|
val = self.__curColor[i]
|
|
self.__curColor[i] = val if val <= 255 else 255
|
|
|
|
def _update_leds(self):
|
|
'''Updates M-leds according to enabled state.'''
|
|
val = 0
|
|
if self.__redEnabled:
|
|
val |= Data.LIGHT_KEY_M1
|
|
if self.__greenEnabled:
|
|
val |= Data.LIGHT_KEY_M2
|
|
if self.__blueEnabled:
|
|
val |= Data.LIGHT_KEY_M3
|
|
self.__lg19.set_enabled_m_keys(val)
|
|
|
|
def get_input_processor(self):
|
|
return self
|
|
|
|
def process_input(self, evt):
|
|
processed = False
|
|
if Key.M1 in evt.keysDown:
|
|
self.__redEnabled = not self.__redEnabled
|
|
self._update_leds()
|
|
processed = True
|
|
if Key.M2 in evt.keysDown:
|
|
self.__greenEnabled = not self.__greenEnabled
|
|
self._update_leds()
|
|
processed = True
|
|
if Key.M3 in evt.keysDown:
|
|
self.__blueEnabled = not self.__blueEnabled
|
|
self._update_leds()
|
|
processed = True
|
|
|
|
oldColor = list(self.__curColor)
|
|
diffVal = 0
|
|
scrollUsed = False
|
|
|
|
if Key.SCROLL_UP in evt.keysDown:
|
|
diffVal = 10
|
|
scrollUsed = True
|
|
if Key.SCROLL_DOWN in evt.keysDown:
|
|
diffVal = -10
|
|
scrollUsed = True
|
|
|
|
atLeastOneColorIsEnabled = False
|
|
|
|
if self.__redEnabled:
|
|
self.__curColor[0] += diffVal
|
|
atLeastOneColorIsEnabled = True
|
|
if self.__greenEnabled:
|
|
self.__curColor[1] += diffVal
|
|
atLeastOneColorIsEnabled = True
|
|
if self.__blueEnabled:
|
|
self.__curColor[2] += diffVal
|
|
atLeastOneColorIsEnabled = True
|
|
|
|
self._clamp_current_color()
|
|
processed = processed or atLeastOneColorIsEnabled and scrollUsed
|
|
|
|
if oldColor != self.__curColor:
|
|
self.__lg19.set_bg_color(*self.__curColor)
|
|
return processed
|