From ca8d0540c30e95777df0f8213eec607ee63571ff Mon Sep 17 00:00:00 2001 From: Daniel Leong Date: Sat, 20 Mar 2021 23:00:10 +0000 Subject: [PATCH] Add mapping for EU/UK version of Masterkeys Pro S, and add support for Masterkeys Pro S White --- include/libcmmk/libcmmk.h | 3 ++- src/libcmmk.c | 5 ++++- src/mappings/iso/pro_s.h | 31 ++++++++++++++++++++++++------- 3 files changed, 30 insertions(+), 9 deletions(-) diff --git a/include/libcmmk/libcmmk.h b/include/libcmmk/libcmmk.h index 2a98cd4..bca0b03 100644 --- a/include/libcmmk/libcmmk.h +++ b/include/libcmmk/libcmmk.h @@ -65,6 +65,7 @@ enum cmmk_product { CMMK_USB_MASTERKEYS_PRO_L = 0x003b, CMMK_USB_MASTERKEYS_PRO_L_WHITE = 0x0047, CMMK_USB_MASTERKEYS_PRO_S = 0x003c, + CMMK_USB_MASTERKEYS_PRO_S_WHITE = 0x0059, CMMK_USB_MASTERKEYS_MK750 = 0x0067, CMMK_USB_MASTERKEYS_SK630 = 0x0089, CMMK_USB_MASTERKEYS_SK650 = 0x008d, @@ -79,7 +80,7 @@ enum cmmk_layout { CMMK_LAYOUT_US_MK750, /* TODO */ CMMK_LAYOUT_US_SK630, /* TODO */ CMMK_LAYOUT_US_SK650, /* TODO */ - CMMK_LAYOUT_EU_S, /* TODO */ + CMMK_LAYOUT_EU_S, CMMK_LAYOUT_EU_L, CMMK_LAYOUT_EU_MK750, CMMK_LAYOUT_EU_SK630, diff --git a/src/libcmmk.c b/src/libcmmk.c index 086f2af..303487e 100644 --- a/src/libcmmk.c +++ b/src/libcmmk.c @@ -204,6 +204,7 @@ int cmmk_find_device(int *product) static int supported_devices[] = { CMMK_USB_MASTERKEYS_PRO_L, CMMK_USB_MASTERKEYS_PRO_S, + CMMK_USB_MASTERKEYS_PRO_S_WHITE, CMMK_USB_MASTERKEYS_MK750, CMMK_USB_MASTERKEYS_PRO_L_WHITE, CMMK_USB_MASTERKEYS_SK630, @@ -253,7 +254,8 @@ static int cmmk_try_determine_layout(struct cmmk *dev, int product) switch ((enum cmmk_product) product) { case CMMK_USB_MASTERKEYS_PRO_L: case CMMK_USB_MASTERKEYS_PRO_L_WHITE: device_model = CMMK_PRODUCT_MASTERKEYS_PRO_L; break; - case CMMK_USB_MASTERKEYS_PRO_S: device_model = CMMK_PRODUCT_MASTERKEYS_PRO_S; break; + case CMMK_USB_MASTERKEYS_PRO_S: + case CMMK_USB_MASTERKEYS_PRO_S_WHITE: 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; @@ -444,6 +446,7 @@ const char * cmmk_product_to_str(int product) { switch ((enum cmmk_product) product) { case CMMK_USB_MASTERKEYS_PRO_S: return "Cooler Master Masterkeys Pro S"; + case CMMK_USB_MASTERKEYS_PRO_S_WHITE: return "Cooler Master Masterkeys Pro S White"; case CMMK_USB_MASTERKEYS_PRO_L: return "Cooler Master Masterkeys Pro L"; case CMMK_USB_MASTERKEYS_PRO_L_WHITE: return "Cooler Master Masterkeys Pro L White"; case CMMK_USB_MASTERKEYS_MK750: return "Cooler Master Masterkeys MK750"; diff --git a/src/mappings/iso/pro_s.h b/src/mappings/iso/pro_s.h index 8be3a74..4ad9409 100644 --- a/src/mappings/iso/pro_s.h +++ b/src/mappings/iso/pro_s.h @@ -15,12 +15,29 @@ * License along with libcmmk. If not, see . */ static keyboard_layout layout_iso_pro_s = { - /* TODO! */ - {-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}, + /* + ESC F1 F2 F3 F4 XXX F5 F6 F7 F8 XXX F9 F10 F11 F12 PRN SCL PAU XXX XXX XXX XXX */ + {0, 8, 16, 24, 32, -1, 40, 48, 56, 64, 72, 80, 88, 96, -1, 104, -1, 14, -1, -1, -1, -1}, + + /* + ` 1 2 3 4 5 6 7 8 9 0 - = XXX BCK INS HOM PUP XXX XXX XXX XXX */ + {1, 9, 17, 25, 33, 41, 49, 57, 65, 73, 81, 89, 97, -1, 113, 114, 22, 30, -1, -1, -1, -1}, + + /* + TAB Q W E R T Y U I O P [ ] XXX XXX DEL END PDN XXX XXX XXX XXX */ + {2, 10, 18, 26, 34, 42, 50, 58, 66, 74, 82, 90, 98, -1, -1, 115, 70, 78, -1, -1, -1, -1}, + + /* + CAP A S D F G H J K L ; ' # XXX ENT XXX XXX XXX XXX XXX XXX XXX */ + {3, 11, 19, 27, 35, 43, 51, 59, 67, 75, 83, 91, 99, -1, 107, -1, -1, -1, -1, -1, -1, -1}, + + /* + LSHFT \ Z X C V B N M , . / XXX XXX RSHFT XXX UP XXX XXX XXX XXX XXX */ + {4, 12, 20, 28, 36, 44, 52, 60, 68, 76, 84, 92, -1, -1, 108, -1, 116, -1, -1, -1, -1, -1}, // after / was 1 BAD + + /* + LCTRL LWIN LALT XXX XXX XXX SPACE XXX XXX XXX RALT RWIN FN XXX RCTRL LEFT DOWN RIGHT XXX XXX XXX XXX */ + {5, 13, 21, -1, -1, -1, 53, -1, -1, -1, 77, 85, 93, -1, 101, 109, 117, 118, -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}, }; \ No newline at end of file