반응형
커세어 스트레이프(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 |
CorsairLED.zip