Added Remove Row Opcode to the KLM
* Removed blank row from Sixty percent (Mini) keyboards * Resolves #3404
This commit is contained in:
parent
70ba6a2133
commit
3d0582d7be
3 changed files with 54 additions and 2 deletions
|
|
@ -778,8 +778,7 @@ keyboard_keymap_overlay_values razer_huntsman_mini_layout
|
||||||
| Edit Keys |
|
| Edit Keys |
|
||||||
| Zone, Row, Column, Value, Key, OpCode, |
|
| Zone, Row, Column, Value, Key, OpCode, |
|
||||||
\*---------------------------------------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------------------------------------*/
|
||||||
{ 0, 0, 0, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_SWAP_ONLY, }, // Swap out Backtick
|
{ 0, 0, 0, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Shift row 0
|
||||||
{ 0, 0, 1, 0, KEY_EN_ESCAPE, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Escape and shift row 0
|
|
||||||
{ 0, 1, 0, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Shift row 1
|
{ 0, 1, 0, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Shift row 1
|
||||||
{ 0, 2, 0, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Shift row 2
|
{ 0, 2, 0, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Shift row 2
|
||||||
{ 0, 3, 0, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Shift row 3
|
{ 0, 3, 0, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Shift row 3
|
||||||
|
|
|
||||||
|
|
@ -372,10 +372,18 @@ KeyboardLayoutManager::KeyboardLayoutManager(KEYBOARD_LAYOUT layout, KEYBOARD_SI
|
||||||
SwapKeys(values.regional_overlay.find(layout)->second);
|
SwapKeys(values.regional_overlay.find(layout)->second);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------*\
|
||||||
|
| Size specific fixes |
|
||||||
|
\*---------------------------------------------------------------------*/
|
||||||
switch(size)
|
switch(size)
|
||||||
{
|
{
|
||||||
case KEYBOARD_SIZE::KEYBOARD_SIZE_SIXTY:
|
case KEYBOARD_SIZE::KEYBOARD_SIZE_SIXTY:
|
||||||
|
/*-------------------------------------------------------------*\
|
||||||
|
| Remove the empty Function row and swap in the Escape key |
|
||||||
|
\*-------------------------------------------------------------*/
|
||||||
name = KEYBOARD_NAME_SIXTY;
|
name = KEYBOARD_NAME_SIXTY;
|
||||||
|
RemoveRow(0);
|
||||||
|
SwapKey(keyboard_zone_fn_row[0]);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case KEYBOARD_SIZE::KEYBOARD_SIZE_SEVENTY_FIVE:
|
case KEYBOARD_SIZE::KEYBOARD_SIZE_SEVENTY_FIVE:
|
||||||
|
|
@ -443,6 +451,10 @@ void KeyboardLayoutManager::OpCodeSwitch(key_set change_keys)
|
||||||
//SwapKey(change_keys[chg_key_idx]);
|
//SwapKey(change_keys[chg_key_idx]);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case KEYBOARD_OPCODE_REMOVE_ROW:
|
||||||
|
RemoveRow(change_keys[chg_key_idx].row);
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
LOG_DEBUG(LOG_MSG_MISSING_OPCODE, KLM_CLASS_NAME, change_keys[chg_key_idx].opcode,
|
LOG_DEBUG(LOG_MSG_MISSING_OPCODE, KLM_CLASS_NAME, change_keys[chg_key_idx].opcode,
|
||||||
change_keys[chg_key_idx].name, change_keys[chg_key_idx].row, change_keys[chg_key_idx].col);
|
change_keys[chg_key_idx].name, change_keys[chg_key_idx].row, change_keys[chg_key_idx].col);
|
||||||
|
|
@ -698,6 +710,45 @@ void KeyboardLayoutManager::RemoveKey(keyboard_led rmv_key)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void KeyboardLayoutManager::RemoveRow(uint8_t rmv_row)
|
||||||
|
{
|
||||||
|
/*---------------------------------------------------------------------*\
|
||||||
|
| Check row is valid to remove |
|
||||||
|
\*---------------------------------------------------------------------*/
|
||||||
|
if(rmv_row >= rows)
|
||||||
|
{
|
||||||
|
LOG_DEBUG("[%s] Removing row %d failed as rows currently = %d", KLM_CLASS_NAME, rmv_row, rows);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------*\
|
||||||
|
| Loop through and remove any keys in the row |
|
||||||
|
\*---------------------------------------------------------------------*/
|
||||||
|
unsigned int key_idx = 0;
|
||||||
|
|
||||||
|
for(/*key_idx*/; key_idx < keymap.size() && rmv_row > keymap[key_idx].row; key_idx++)
|
||||||
|
{
|
||||||
|
if(rmv_row == keymap[key_idx].row)
|
||||||
|
{
|
||||||
|
LOG_DEBUG("[%s] Removing %s @ %02d, %02d from row %d", KLM_CLASS_NAME, keymap[key_idx].name, keymap[key_idx].row, keymap[key_idx].col, rmv_row);
|
||||||
|
keymap.erase(keymap.begin() + key_idx);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------*\
|
||||||
|
| Loop through the remaining rows and adjust row number |
|
||||||
|
\*---------------------------------------------------------------------*/
|
||||||
|
if(rmv_row < keymap[key_idx].row)
|
||||||
|
{
|
||||||
|
for(/*key_idx*/; key_idx < keymap.size(); key_idx++)
|
||||||
|
{
|
||||||
|
keymap[key_idx].row--;
|
||||||
|
}
|
||||||
|
|
||||||
|
LOG_DEBUG("[%s] Remove row %d successful", KLM_CLASS_NAME, rmv_row);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
std::string KeyboardLayoutManager::GetName()
|
std::string KeyboardLayoutManager::GetName()
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -60,6 +60,7 @@ enum KEYBOARD_OPCODE
|
||||||
KEYBOARD_OPCODE_SWAP_ONLY = 1,
|
KEYBOARD_OPCODE_SWAP_ONLY = 1,
|
||||||
KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT = 2,
|
KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT = 2,
|
||||||
KEYBOARD_OPCODE_INS_SHFT_ADJACENT = 3,
|
KEYBOARD_OPCODE_INS_SHFT_ADJACENT = 3,
|
||||||
|
KEYBOARD_OPCODE_REMOVE_ROW = 4,
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
|
|
@ -132,6 +133,7 @@ private:
|
||||||
void SwapKey(keyboard_led keys);
|
void SwapKey(keyboard_led keys);
|
||||||
void SwapKeys(std::vector<keyboard_led> keys);
|
void SwapKeys(std::vector<keyboard_led> keys);
|
||||||
void RemoveKey(keyboard_led keys);
|
void RemoveKey(keyboard_led keys);
|
||||||
|
void RemoveRow(uint8_t row);
|
||||||
|
|
||||||
KEYBOARD_LAYOUT layout;
|
KEYBOARD_LAYOUT layout;
|
||||||
KEYBOARD_SIZE physical_size;
|
KEYBOARD_SIZE physical_size;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue