Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ The currently supported and known to work devices include:
* MasterKeys Pro S, (US only)
* MasterKeys MK750, (US / EU / German only)
* MasterKeys SK630, (EU only)
* MasterKeys SK650, (EU only)

In theory (and as a goal), this library should support any RGB (and in the future possibly monocolor)
MasterKeys keyboards. Gaps in device support are currently a result of a lack of test devices. See
Expand Down
4 changes: 4 additions & 0 deletions include/libcmmk/libcmmk.h
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,7 @@ enum cmmk_product {
CMMK_USB_MASTERKEYS_PRO_S = 0x003c,
CMMK_USB_MASTERKEYS_MK750 = 0x0067,
CMMK_USB_MASTERKEYS_SK630 = 0x0089,
CMMK_USB_MASTERKEYS_SK650 = 0x008d,
};

/*
Expand All @@ -74,10 +75,12 @@ enum cmmk_layout {
CMMK_LAYOUT_US_L, /* TODO */
CMMK_LAYOUT_US_MK750, /* TODO */
CMMK_LAYOUT_US_SK630, /* TODO */
CMMK_LAYOUT_US_SK650, /* TODO */
CMMK_LAYOUT_EU_S, /* TODO */
CMMK_LAYOUT_EU_L,
CMMK_LAYOUT_EU_MK750,
CMMK_LAYOUT_EU_SK630,
CMMK_LAYOUT_EU_SK650,

CMMK_LAYOUT_INVAL /* end marker */
};
Expand Down Expand Up @@ -150,6 +153,7 @@ enum cmmk_product_type {
CMMK_PRODUCT_MASTERKEYS_PRO_S,
CMMK_PRODUCT_MASTERKEYS_MK750,
CMMK_PRODUCT_MASTERKEYS_SK630,
CMMK_PRODUCT_MASTERKEYS_SK650,
};


Expand Down
29 changes: 29 additions & 0 deletions src/keymap_eu.h
Original file line number Diff line number Diff line change
Expand Up @@ -114,3 +114,32 @@ static keyboard_layout layout_eu_sk630 = {
/* Bottom row does not exist */
{-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
};

static keyboard_layout layout_eu_sk650 = {
/*
ESC F1 F2 F3 F4 XXX F5 F6 F7 F8 XXX F9 F10 F11 F12 PRN SCL PAU MUT PLA REW FWD */
{ 9, 33, 41, 49, 57, -1, 73, 81, 89, 97, -1, 105, 113, 121, 129, 137, 145, 153, -1, -1, -1, -1},

/*
^ 1 2 3 4 5 6 7 8 9 0 ß ´ XXX BCK INS HOM PUP #LCK #/ #* #- */
{10, 26, 34, 42, 50, 58, 66, 74, 82, 90, 98, 106, 114, -1, 130, 138, 146, 154, 162, 170, 178, 186},

/*
TAB Q W E R T Z/Y U I O P Ü/[ +/] XXX ENT DEL END PDN #7 #8 #9 #+ */
{11, 27, 35, 43, 51, 59, 67, 75, 83, 91, 99, 107, 115, -1, 132, 139, 147, 155, 163, 171, 179, 187},

/*
CAP A S D F G H J K L Ö/; Ä/' #/C42 XXX XXX XXX XXX XXX #4 #5 #6 XXX */
{12, 28, 36, 44, 52, 60, 68, 76, 84, 92, 100, 108, 124, -1, -1, -1, -1, -1, 164, 172, 180, -1},

/*
LSHFT </C45 Y/Z X C V B N M , . -// XXX XXX RSHFT XXX UP XXX #1 #2 #3 #ENTER */
{13, 21, 29, 37, 45, 53, 61, 69, 77, 85, 93, 101, -1, -1, 133, -1, 149, -1, 165, 173, 181, 189},

/*
LCTRL LWIN LALT XXX XXX XXX SPACE XXX XXX XXX RALT RWIN FN XXX RCTRL LEFT DOWN RIGHT #0 XXX #, XXX */
{14, 22, 30, -1, -1, -1, 62, -1, -1, -1, 94, 102, 110, -1, 134, 142, 150, 158, 174, -1, 182, -1},

/* Bottom row does not exist */
{-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
};
10 changes: 10 additions & 0 deletions src/keymap_us.h
Original file line number Diff line number Diff line change
Expand Up @@ -92,3 +92,13 @@ static keyboard_layout layout_us_sk630 = {
{-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
{-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
};

static keyboard_layout layout_us_sk650 = {
{-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
{-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
{-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
{-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
{-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
{-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
{-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
};
11 changes: 10 additions & 1 deletion src/libcmmk.c
Original file line number Diff line number Diff line change
Expand Up @@ -42,10 +42,12 @@ static keyboard_layout const *keyboard_layouts[] = {
[CMMK_LAYOUT_US_L] = &layout_us_l,
[CMMK_LAYOUT_US_MK750] = &layout_us_mk750,
[CMMK_LAYOUT_US_SK630] = &layout_us_sk630,
[CMMK_LAYOUT_US_SK650] = &layout_us_sk650,
[CMMK_LAYOUT_EU_S] = &layout_eu_s,
[CMMK_LAYOUT_EU_L] = &layout_eu_l,
[CMMK_LAYOUT_EU_MK750] = &layout_eu_mk750,
[CMMK_LAYOUT_EU_SK630] = &layout_eu_sk630,
[CMMK_LAYOUT_EU_SK650] = &layout_eu_sk650,
};

/* Some global definitions */
Expand Down Expand Up @@ -198,7 +200,8 @@ int cmmk_find_device(int *product)
CMMK_USB_MASTERKEYS_PRO_L,
CMMK_USB_MASTERKEYS_PRO_S,
CMMK_USB_MASTERKEYS_MK750,
CMMK_USB_MASTERKEYS_SK630
CMMK_USB_MASTERKEYS_SK630,
CMMK_USB_MASTERKEYS_SK650,
};

libusb_context *context = NULL;
Expand Down Expand Up @@ -271,6 +274,7 @@ static int cmmk_try_determine_layout(struct cmmk *dev, int product)
case CMMK_USB_MASTERKEYS_PRO_S: device_model = CMMK_PRODUCT_MASTERKEYS_PRO_S; break;
case CMMK_USB_MASTERKEYS_MK750: device_model = CMMK_PRODUCT_MASTERKEYS_MK750; break;
case CMMK_USB_MASTERKEYS_SK630: device_model = CMMK_PRODUCT_MASTERKEYS_SK630; break;
case CMMK_USB_MASTERKEYS_SK650: device_model = CMMK_PRODUCT_MASTERKEYS_SK650; break;
}

if (general_layout == CMMK_LAYOUT_TYPE_ANSI) {
Expand All @@ -279,13 +283,15 @@ static int cmmk_try_determine_layout(struct cmmk *dev, int product)
case CMMK_PRODUCT_MASTERKEYS_PRO_S: return CMMK_LAYOUT_US_S;
case CMMK_PRODUCT_MASTERKEYS_MK750: return CMMK_LAYOUT_US_MK750;
case CMMK_PRODUCT_MASTERKEYS_SK630: return CMMK_LAYOUT_US_SK630;
case CMMK_PRODUCT_MASTERKEYS_SK650: return CMMK_LAYOUT_US_SK630;
}
} else {
switch (device_model) {
case CMMK_PRODUCT_MASTERKEYS_PRO_L: return CMMK_LAYOUT_EU_L;
case CMMK_PRODUCT_MASTERKEYS_PRO_S: return CMMK_LAYOUT_EU_S;
case CMMK_PRODUCT_MASTERKEYS_MK750: return CMMK_LAYOUT_EU_MK750;
case CMMK_PRODUCT_MASTERKEYS_SK630: return CMMK_LAYOUT_EU_SK630;
case CMMK_PRODUCT_MASTERKEYS_SK650: return CMMK_LAYOUT_EU_SK650;
}
}

Expand Down Expand Up @@ -446,6 +452,7 @@ const char * cmmk_product_to_str(int product)
case CMMK_USB_MASTERKEYS_PRO_L: return "Cooler Master Masterkeys Pro L";
case CMMK_USB_MASTERKEYS_MK750: return "Cooler Master Masterkeys MK750";
case CMMK_USB_MASTERKEYS_SK630: return "Cooler Master Masterkeys SK630";
case CMMK_USB_MASTERKEYS_SK650: return "Cooler Master Masterkeys SK650";
}

return "unknown";
Expand All @@ -458,11 +465,13 @@ const char * cmmk_layout_to_str(int layout)
case CMMK_LAYOUT_US_L:
case CMMK_LAYOUT_US_MK750:
case CMMK_LAYOUT_US_SK630:
case CMMK_LAYOUT_US_SK650:
return "US";
case CMMK_LAYOUT_EU_S:
case CMMK_LAYOUT_EU_L:
case CMMK_LAYOUT_EU_MK750:
case CMMK_LAYOUT_EU_SK630:
case CMMK_LAYOUT_EU_SK650:
return "EU";

case CMMK_LAYOUT_INVAL:
Expand Down