Compare commits
6 Commits
v8.5.0
...
action-cac
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
21ae72dd9e | ||
|
|
5fe19abe06 | ||
|
|
06e34fdcbc | ||
|
|
cc6666b96d | ||
|
|
a22dfdd917 | ||
|
|
8b69a25dda |
12
CHANGELOG.md
12
CHANGELOG.md
@@ -5,6 +5,18 @@ All notable changes to this project will be documented in this file.
|
|||||||
The format is loosely based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
|
The format is loosely based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
|
||||||
and this project adheres to the [UHK Versioning](VERSIONING.md) conventions.
|
and this project adheres to the [UHK Versioning](VERSIONING.md) conventions.
|
||||||
|
|
||||||
|
## [8.5.2] - 2018-10-06
|
||||||
|
|
||||||
|
Device Protocol: 4.5.0 | Module Protocol: 4.0.0 | User Config: 4.1.0 | Hardware Config: 1.0.0
|
||||||
|
|
||||||
|
- Don't suppress keys upon keymap change.
|
||||||
|
|
||||||
|
## [8.5.1] - 2018-10-04
|
||||||
|
|
||||||
|
Device Protocol: 4.5.0 | Module Protocol: 4.0.0 | User Config: 4.1.0 | Hardware Config: 1.0.0
|
||||||
|
|
||||||
|
- Reset UsbReportUpdateSemaphore if it gets stuck for 100ms. This should fix occasional freezes.
|
||||||
|
|
||||||
## [8.5.0] - 2018-10-04
|
## [8.5.0] - 2018-10-04
|
||||||
|
|
||||||
Device Protocol: 4.**5.0** | Module Protocol: 4.0.0 | User Config: 4.1.0 | Hardware Config: 1.0.0
|
Device Protocol: 4.**5.0** | Module Protocol: 4.0.0 | User Config: 4.1.0 | Hardware Config: 1.0.0
|
||||||
|
|||||||
Submodule lib/agent updated: 6e2b1fb18d...2ff65537a0
@@ -5,7 +5,6 @@
|
|||||||
#include "config_parser/parse_keymap.h"
|
#include "config_parser/parse_keymap.h"
|
||||||
#include "config_parser/config_globals.h"
|
#include "config_parser/config_globals.h"
|
||||||
#include "macros.h"
|
#include "macros.h"
|
||||||
#include "usb_report_updater.h"
|
|
||||||
|
|
||||||
keymap_reference_t AllKeymaps[MAX_KEYMAP_NUM] = {
|
keymap_reference_t AllKeymaps[MAX_KEYMAP_NUM] = {
|
||||||
{
|
{
|
||||||
@@ -25,7 +24,6 @@ void SwitchKeymapById(uint8_t index)
|
|||||||
ValidatedUserConfigBuffer.offset = AllKeymaps[index].offset;
|
ValidatedUserConfigBuffer.offset = AllKeymaps[index].offset;
|
||||||
ParseKeymap(&ValidatedUserConfigBuffer, index, AllKeymapsCount, AllMacrosCount);
|
ParseKeymap(&ValidatedUserConfigBuffer, index, AllKeymapsCount, AllMacrosCount);
|
||||||
LedDisplay_UpdateText();
|
LedDisplay_UpdateText();
|
||||||
KeymapChanged = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool SwitchKeymapByAbbreviation(uint8_t length, char *abbrev)
|
bool SwitchKeymapByAbbreviation(uint8_t length, char *abbrev)
|
||||||
|
|||||||
@@ -25,8 +25,7 @@ static uint16_t DoubleTapSwitchLayerReleaseTimeout = 200;
|
|||||||
|
|
||||||
static bool activeMouseStates[ACTIVE_MOUSE_STATES_COUNT];
|
static bool activeMouseStates[ACTIVE_MOUSE_STATES_COUNT];
|
||||||
bool TestUsbStack = false;
|
bool TestUsbStack = false;
|
||||||
bool KeymapChanged = false;
|
static key_action_t actionCache[SLOT_COUNT][MAX_KEY_COUNT_PER_MODULE];
|
||||||
static uint8_t layerCache[SLOT_COUNT][MAX_KEY_COUNT_PER_MODULE];
|
|
||||||
|
|
||||||
volatile uint8_t UsbReportUpdateSemaphore = 0;
|
volatile uint8_t UsbReportUpdateSemaphore = 0;
|
||||||
|
|
||||||
@@ -335,8 +334,6 @@ static void updateActiveUsbReports(void)
|
|||||||
if (layerChanged) {
|
if (layerChanged) {
|
||||||
stickyModifiers = 0;
|
stickyModifiers = 0;
|
||||||
}
|
}
|
||||||
bool keymapChangedLastCycle = KeymapChanged;
|
|
||||||
KeymapChanged = false;
|
|
||||||
LedDisplay_SetLayer(activeLayer);
|
LedDisplay_SetLayer(activeLayer);
|
||||||
|
|
||||||
if (TestUsbStack) {
|
if (TestUsbStack) {
|
||||||
@@ -383,16 +380,14 @@ static void updateActiveUsbReports(void)
|
|||||||
secondaryRoleState = SecondaryRoleState_Triggered;
|
secondaryRoleState = SecondaryRoleState_Triggered;
|
||||||
keyState->current = false;
|
keyState->current = false;
|
||||||
} else {
|
} else {
|
||||||
layerCache[slotId][keyId] = activeLayer;
|
actionCache[slotId][keyId] = CurrentKeymap[activeLayer][slotId][keyId];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
action = &CurrentKeymap[layerCache[slotId][keyId]][slotId][keyId];
|
action = &actionCache[slotId][keyId];
|
||||||
|
|
||||||
if (keyState->current) {
|
if (keyState->current) {
|
||||||
if ((KeymapChanged || keymapChangedLastCycle) && keyState->previous) {
|
if (action->type == KeyActionType_Keystroke && action->keystroke.secondaryRole) {
|
||||||
keyState->suppressed = true;
|
|
||||||
} else if (action->type == KeyActionType_Keystroke && action->keystroke.secondaryRole) {
|
|
||||||
// Press released secondary role key.
|
// Press released secondary role key.
|
||||||
if (!keyState->previous && secondaryRoleState == SecondaryRoleState_Released) {
|
if (!keyState->previous && secondaryRoleState == SecondaryRoleState_Released) {
|
||||||
secondaryRoleState = SecondaryRoleState_Pressed;
|
secondaryRoleState = SecondaryRoleState_Pressed;
|
||||||
@@ -440,14 +435,21 @@ uint32_t UsbReportUpdateCounter;
|
|||||||
|
|
||||||
void UpdateUsbReports(void)
|
void UpdateUsbReports(void)
|
||||||
{
|
{
|
||||||
|
static uint32_t lastUpdateTime;
|
||||||
|
|
||||||
for (uint8_t keyId = 0; keyId < RIGHT_KEY_MATRIX_KEY_COUNT; keyId++) {
|
for (uint8_t keyId = 0; keyId < RIGHT_KEY_MATRIX_KEY_COUNT; keyId++) {
|
||||||
KeyStates[SlotId_RightKeyboardHalf][keyId].current = RightKeyMatrix.keyStates[keyId];
|
KeyStates[SlotId_RightKeyboardHalf][keyId].current = RightKeyMatrix.keyStates[keyId];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (UsbReportUpdateSemaphore && !SleepModeActive) {
|
if (UsbReportUpdateSemaphore && !SleepModeActive) {
|
||||||
return;
|
if (Timer_GetElapsedTime(&lastUpdateTime) < USB_SEMAPHORE_TIMEOUT) {
|
||||||
|
return;
|
||||||
|
} else {
|
||||||
|
UsbReportUpdateSemaphore = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
lastUpdateTime = CurrentTime;
|
||||||
UsbReportUpdateCounter++;
|
UsbReportUpdateCounter++;
|
||||||
|
|
||||||
ResetActiveUsbBasicKeyboardReport();
|
ResetActiveUsbBasicKeyboardReport();
|
||||||
|
|||||||
@@ -14,6 +14,8 @@
|
|||||||
#define SECONDARY_ROLE_MODIFIER_TO_HID_MODIFIER(secondaryRoleModifier) (1 << ((secondaryRoleModifier) - 1))
|
#define SECONDARY_ROLE_MODIFIER_TO_HID_MODIFIER(secondaryRoleModifier) (1 << ((secondaryRoleModifier) - 1))
|
||||||
#define SECONDARY_ROLE_LAYER_TO_LAYER_ID(secondaryRoleLayer) ((secondaryRoleLayer) - SecondaryRole_RightSuper)
|
#define SECONDARY_ROLE_LAYER_TO_LAYER_ID(secondaryRoleLayer) ((secondaryRoleLayer) - SecondaryRole_RightSuper)
|
||||||
|
|
||||||
|
#define USB_SEMAPHORE_TIMEOUT 100 // ms
|
||||||
|
|
||||||
// Typedefs:
|
// Typedefs:
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
@@ -72,7 +74,6 @@
|
|||||||
extern uint32_t UsbReportUpdateCounter;
|
extern uint32_t UsbReportUpdateCounter;
|
||||||
extern volatile uint8_t UsbReportUpdateSemaphore;
|
extern volatile uint8_t UsbReportUpdateSemaphore;
|
||||||
extern bool TestUsbStack;
|
extern bool TestUsbStack;
|
||||||
extern bool KeymapChanged;
|
|
||||||
|
|
||||||
// Functions:
|
// Functions:
|
||||||
|
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
"commander": "^2.11.0",
|
"commander": "^2.11.0",
|
||||||
"shelljs": "^0.7.8"
|
"shelljs": "^0.7.8"
|
||||||
},
|
},
|
||||||
"firmwareVersion": "8.5.0",
|
"firmwareVersion": "8.5.2",
|
||||||
"deviceProtocolVersion": "4.5.0",
|
"deviceProtocolVersion": "4.5.0",
|
||||||
"moduleProtocolVersion": "4.0.0",
|
"moduleProtocolVersion": "4.0.0",
|
||||||
"userConfigVersion": "4.1.0",
|
"userConfigVersion": "4.1.0",
|
||||||
|
|||||||
@@ -20,7 +20,7 @@
|
|||||||
|
|
||||||
#define FIRMWARE_MAJOR_VERSION 8
|
#define FIRMWARE_MAJOR_VERSION 8
|
||||||
#define FIRMWARE_MINOR_VERSION 5
|
#define FIRMWARE_MINOR_VERSION 5
|
||||||
#define FIRMWARE_PATCH_VERSION 0
|
#define FIRMWARE_PATCH_VERSION 2
|
||||||
|
|
||||||
#define DEVICE_PROTOCOL_MAJOR_VERSION 4
|
#define DEVICE_PROTOCOL_MAJOR_VERSION 4
|
||||||
#define DEVICE_PROTOCOL_MINOR_VERSION 5
|
#define DEVICE_PROTOCOL_MINOR_VERSION 5
|
||||||
|
|||||||
Reference in New Issue
Block a user