Skip to content

Nesh108/MyAorusKeyboardSDK

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MyAorusKeyboardSDK

Aorus RGB Keyboard SDK for C#

Introduction

The Aorus Fusion application provided with the Aorus series allows to set custom profiles, macros and select among default styles. While that could be enough for certain users, pro-users and developers might be interested in having more control over their keyboard.

After contacting both Gigabyte and Aorus technical support and being told that a public SDK is not available, I went ahead and made one.

Pull requests and issues are welcome as this is a still very young repository.

Features

  • Showing Current Battery Percentage
  • Movie Mode when process is fullscreen (turn off the LEDs)
  • Support for Random Color Layouts
  • Support for OSB
    • Automatic recording when switching to specific scene

Requirements:

Tested on

  • Aorus x5 v7 on Windows 10

Keyboard Protocol:

RGB Keys Data Holder

Each key is defined in PictureMatrix[960]

4 bytes (1 byte each field):

  1. Key Index [See Helpers.cs] (in bytes)
  2. Red Color value [0-255]
  3. Green Color value [0-255]
  4. Blue Color value [0-255]

Initalization:

GUID: "4d1e55b2-f16f-11cf-88cb-001111000030"

  1. Search for feature with: "04d9", "8008", "1044", "7a38", "1044" and "7a39"

  2. Get File Handle/IntPtr to the keyboard.

  • On Windows: Win32.CreateFile(stringAuto, 3221225472U, 3, IntPtr.Zero, 3, 0, 0);

Set Keys Matrix

  • BufferArray[70]

    • BufferArray[0] = 0
    • BufferArray[1] = 18
    • BufferArray[2] = 0
    • BufferArray[3] = <index_matrix>
    • BufferArray[4] = 8
    • BufferArray[5] = 0
    • BufferArray[6] = 0
    • BufferArray[7] = 0
    • BufferArray[8] = 255 - (188 + (<index_matrix>) + 8)
  1. SetFeature first 9 bytes
  2. Sleep 65ms
  3. Reset all 70 bytes
  4. BufferArray[1-64] = PictureMatrix[0-63]
  5. Write Feature
  6. Sleep 65ms
  7. BufferArray[1-64] = PictureMatrix[64-127]
  8. Write Feature
  9. Sleep 65ms
  10. BufferArray[1-64] = PictureMatrix[128-191]
  11. Write Feature
  12. Sleep 65ms
  13. BufferArray[1-64] = PictureMatrix[192-255]
  14. Write Feature
  15. Sleep 65ms
  16. BufferArray[1-64] = PictureMatrix[256-319]
  17. Write Feature
  18. Sleep 65ms
  19. BufferArray[1-64] = PictureMatrix[320-383]
  20. Write Feature
  21. Sleep 65ms
  22. BufferArray[1-64] = PictureMatrix[384-447]
  23. Write Feature
  24. Sleep 65ms
  25. BufferArray[1-64] = PictureMatrix[448-511]
  26. Write Feature
  27. Sleep 65ms

Note: On Windows, the sleep time seems to be crucial (around 65ms).


Select Keyboard Light Layout

<layout_index> - [0-4]

<brightness_level> - [0-255]

<last_value> = 255 - (8 + (51 + <layout_index>) + 5 + <brightness_level> + 2 + 1)

Byte array[9]: [0, 8, 0, 51 + <layout_index>, 5, <brightness_level>, 2, 1, <last_value>]


Select All Green Effect

<last_value> = 255 - (8 + (51 + <layout_index>) + 5 + <brightness_level> + 2 + 1)

Byte array[9]: [0, 8, 0, 1, 5, 50, 2, 1, <last_value>]


Select Breathing Effect

<last_value> = 255 - (8 + (51 + <layout_index>) + 5 + <brightness_level> + 2 + 1)

Byte array[9]: [0, 8, 0, 2, 5, 50, 2, 1, <last_value>]


Select Wave Effect

<last_value> = 255 - (8 + (51 + <layout_index>) + 5 + <brightness_level> + 2 + 1)

Byte array[9]: [0, 8, 0, 3, 5, 50, 8, 1, <last_value>]


Get Current Brightness

Read HID Feature and return buffer[5]


Releases

No releases published

Packages

No packages published

Languages