Skip to main content

This Python API provides an interface for controlling the RGB lighting of keyboards that support the VIA protocol. It allows you to dynamically change the brightness, effect, effect speed, and color of the lighting.

Project description

via-lighting-api

This Python API provides an interface for controlling the RGB lighting of keyboards that support the VIA protocol. It allows you to dynamically change the brightness, effect, effect speed, and color of the lighting.

Features

  • Set lighting brightness
  • Set lighting effect
  • Set lighting effect speed
  • Set lighting color in RGB or HSV format (HS only)
  • Set absolute lighting color (real RGB color instead of HS only)
  • Color correction algorithm allows to display accurate colors
  • Save lighting settings to EEPROM

Requirements

  • Python 3.x

Installation

pip install via-lighting-api

Usage

See a full example code in example.py.

Init

First, import the ViaLightingAPI class from the module where it’s defined:

from via_lighting_api import ViaLightingAPI

To initialize the API and control the lighting, you need to know the Vendor ID (VID) and Product ID (PID) of your keyboard. If you don't know these values, run: via-lighting-api --list-devices and follow the hint to find them.

# Replace with your keyboard's VID and PID
vid = 0x1234
pid = 0xABCD

# Initialize the API
api = ViaLightingAPI(vid, pid)

Set Brightness

# Set brightness to maximum
api.set_brightness(255)

Set Effect

# Set effect to 'Rainbow Moving Chevron'
api.set_effect(15)

Set Effect Speed

# Set effect speed to medium
api.set_effect_speed(127)

Set Color

# Set color to red (in RGB)
api.set_color([255, 0, 0])

# Set color to blue (in HSV)
api.set_color([170, 255])

Set Absolute Color

Set absolute lighting color (adjust both HS color and brightness), RGB format supported.

The effect will be better only if your keyboard switch has a light-guiding design or the color saturation of the switch is low, because the color displayed will be greatly biased towards the color of the switch when the light brightness is low.

If not, try out the color correction function.

# Set absolute color to purple
api.set_color_abs([128, 0, 128])

Color Correction

This is useful when your keyboard switches do not have light guide designs, or they have highly saturated colors, and you want them to display accurate colors.

To use it, you first need to test the RGB values of the light settings when your keyboard displays true white.

This algorithm only applies to set_color_abs()

# Enable color correction
api.set_color_correction([150, 240, 60])
# Disable color correction
api.disable_color_correction()

Save Settings

# Save current lighting settings to EEPROM
api.save()

Troubleshooting

If your device is not detected, ensure that it is connected properly and that you have the correct VID and PID. Also, check that your keyboard firmware supports VIA control.

Disclaimer

This API provides an interface that can send user-defined commands directly to your device, which may cause unexpected results if used improperly. Make sure you fully understand the VIA protocol and the commands you are sending.

License

This API is open-source and can be used and modified by anyone. Please respect the original author’s work when using or distributing this software.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

via_lighting_api-0.2.1.tar.gz (5.6 kB view details)

Uploaded Source

Built Distribution

via_lighting_api-0.2.1-py3-none-any.whl (6.7 kB view details)

Uploaded Python 3

File details

Details for the file via_lighting_api-0.2.1.tar.gz.

File metadata

  • Download URL: via_lighting_api-0.2.1.tar.gz
  • Upload date:
  • Size: 5.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.13.0

File hashes

Hashes for via_lighting_api-0.2.1.tar.gz
Algorithm Hash digest
SHA256 545e9558e4a7bce7b1f28a5a66ff616c93662c81ebfd0d8d64784a045ce2ed50
MD5 e69a424ed83ad7477c26f1e65016e81f
BLAKE2b-256 aa91651fdda445ed6ef0ca7ab542161ee91d9a36ba341ae476787ce58dec9651

See more details on using hashes here.

File details

Details for the file via_lighting_api-0.2.1-py3-none-any.whl.

File metadata

File hashes

Hashes for via_lighting_api-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 1cc097fd871fa790bf8f46930b3fdf53909d10d585e9e14983242a076914fedc
MD5 6e963c941cf8590cdc7d8f4afb175e8e
BLAKE2b-256 ba6debac7594c2ccf62d0f87014bacf5a41e1f933343d35e7d78d17488a727a5

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page