반응형
커세어 스트레이프(COSAIR STRAFE)를 사용하면서 시도한 작업입니다.
커세어에서는 Cosair Utility Engine(CUE)와 함께 SDK를 제공합니다.
SDK를 통해 LED를 커스터마이징하는 방법입니다.
아래의 링크를 통해서 SDK를 다운로드합니다.
http://www.corsair.com/en-us/support/downloads
Gaming Keyboards를 선택하고 Corsair CUE SDK를 다운로드합니다.
압축을 풀면 내부에 라이브러리와 문서, 샘플 등을 확인할 수 있습니다.
샘플 코드를 참조해서 커스터마이징한 코드입니다.
#include "stdafx.h" #include <windows.h> #include <vector> #include <algorithm> #include <thread> #include "include\CUESDK.h" std::vector<CorsairLedPosition> getAvailableKeys() { auto posVector = std::vector<CorsairLedPosition>(); // Get Available Keys for (auto deviceIndex = 0; deviceIndex < CorsairGetDeviceCount(); deviceIndex++) { if (CDT_Keyboard == CorsairGetDeviceInfo(deviceIndex)->type) { auto ledPositions = CorsairGetLedPositions(); if (ledPositions) { for (auto i = 0; i < ledPositions->numberOfLed; i++) { posVector.push_back(ledPositions->pLedPosition[i]); } } } } return posVector; } std::vector<CorsairLedColor> sortbyPosition(const std::vector<CorsairLedPosition>& orgposVector) { auto colorVector = std::vector<CorsairLedColor>(); auto posVector = orgposVector; // Sort by Top Position std::sort(posVector.begin(), posVector.end(), [](auto& a, auto& b) -> bool { return a.top < b.top; }); // Sort by Left Position std::vector<std::vector<CorsairLedPosition>> sortedKeyList; std::vector<CorsairLedPosition> lineList; double prevTop = posVector[0].top; int index = 0; bool bFirst = true; // Separate Each Line for (auto key : posVector) { if (prevTop != key.top) { if (true == bFirst) { bFirst = false; lineList.clear(); } else { sortedKeyList.push_back(lineList); lineList.clear(); } } lineList.push_back(key); prevTop = key.top; ++index; } sortedKeyList.push_back(lineList); // Convert to CorsairLedColor index = 0; for (auto& line : sortedKeyList) { if (0 == index % 2) { std::sort(line.begin(), line.end(), [](auto& a, auto& b) -> bool { return a.left < b.left; }); } else { std::sort(line.rbegin(), line.rend(), [](auto& a, auto& b) -> bool { return a.left < b.left; }); } ++index; for (auto& key : line) { colorVector.push_back(CorsairLedColor{ key.ledId, 0, 0, 0 }); } } return colorVector; } int main() { CorsairPerformProtocolHandshake(); auto allKeyList = getAvailableKeys(); auto KeyList = sortbyPosition(allKeyList); while (!GetAsyncKeyState(VK_ESCAPE)) { for (auto& key : KeyList) { key.g = (0 == key.g) ? 255 : 0; CorsairSetLedsColors(1, &key); std::this_thread::sleep_for(std::chrono::milliseconds(100)); } } return 0; }
간단하게 'ㄹ'자 형태로 상단에서 하단까지 LED가 켜졌다가 꺼지는 코드입니다.
ESC를 누르면 프로그램이 종료됩니다.
다양한 방식으로 LED를 커스터마이징 할 수 있을 것으로 보입니다.
다음과 같은 형태로 LED가 점멸됩니다.
여러 방법으로 응용이 가능할 것 같습니다.
SDK 제공으로 소소한 재미를 느낄 수 있었습니다.
아래 첨부를 다운로드 받으면 샘플 프로그램을 직접 실행할 수 있습니다.
직접 실행해보시기 바랍니다.
반응형
'IT > 제품리뷰' 카테고리의 다른 글
휴대가 편리한 외장형 ODD LG전자 GP50NB40 (2) | 2016.02.16 |
---|---|
다용도 모니터암 카멜마운트 MA-2 (0) | 2016.02.08 |
커간지 CORSAIR STRAFE 기계식 키보드 청축 사용기 (0) | 2016.02.04 |
커간지 CORSAIR STRAFE 기계식 키보드 청축 개봉기 (0) | 2016.01.29 |
NEW 브라운 시리즈 3-3040s W&D 새해선물로 강추! (0) | 2016.01.20 |