Standardise KeyboardLayoutManager interface with Opcodes

* Added new KEYBOARD_OPCODE enum
* Updated `keyboard_leds` to include new opcode
* Reorganised InsertKeys and SwapKeys to work with struct change
* Changed public interfaces to only accept opcode changes
* Updated static keyboard declarations to align with new structures
This commit is contained in:
Chris M 2023-04-03 22:41:11 +10:00
parent cb447e3391
commit 1981e70830
4 changed files with 636 additions and 689 deletions

View file

@ -308,10 +308,10 @@ void DetectDebugControllers()
/*---------------------------------------------------------*\
| Check for custom key inserts and swaps |
\*---------------------------------------------------------*/
std::vector<keyboard_led> change;
if(json_kbd.contains("insert"))
{
std::vector<keyboard_led> insert;
for(size_t i = 0; i < json_kbd["insert"].size(); i++)
{
@ -322,17 +322,14 @@ void DetectDebugControllers()
key->col = json_kbd["insert"][i]["Col"];
key->value = json_kbd["insert"][i]["Val"];
key->name = json_kbd["insert"][i]["Name"].get_ref<const std::string&>().c_str();
key->opcode = KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT;
insert.push_back(*key);
change.push_back(*key);
}
new_kb.InsertKeys(insert);
new_kb.UpdateDimensions();
}
if(json_kbd.contains("swap"))
{
std::vector<keyboard_led> swap;
for(size_t i = 0; i < json_kbd["swap"].size(); i++)
{
keyboard_led* key = new keyboard_led;
@ -342,13 +339,14 @@ void DetectDebugControllers()
key->col = json_kbd["swap"][i]["Col"];
key->value = json_kbd["swap"][i]["Val"];
key->name = json_kbd["swap"][i]["Name"].get_ref<const std::string&>().c_str();
key->opcode = KEYBOARD_OPCODE_SWAP_ONLY;
swap.push_back(*key);
change.push_back(*key);
}
new_kb.SwapKeys(swap);
new_kb.UpdateDimensions();
}
new_kb.ChangeKeys(change);
dummy_keyboard->name = new_kb.GetName();
dummy_keyboard->type = DEVICE_TYPE_KEYBOARD;
dummy_keyboard->description = dummy_keyboard->name;

View file

@ -20,44 +20,32 @@ keyboard_keymap_overlay_values razer_blackwidow_layout
{
KEYBOARD_LAYOUT_ANSI_QWERTY,
{
/*---------------------------------------------------------------------*\
| Swap Keys |
| Zone, Row, Column, Index, Key |
\*---------------------------------------------------------------------*/
{ 0, 4, 1, 0, KEY_EN_UNUSED, }, // Move 'Z' 1 right (Account for ISO key)
/*---------------------------------------------------------------------------------------------------------*\
| Edit Keys |
| Zone, Row, Column, Value, Key, OpCode, |
\*---------------------------------------------------------------------------------------------------------*/
{ 0, 4, 1, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_SWAP_ONLY, }, // Move 'Z' 1 right (Account for ISO key)
}
},
/* Add more regional layout fixes here */
}
},
{
/*---------------------------------------------------------------------*\
| Insert Keys |
| Zone, Row, Column, Index, Key |
\*---------------------------------------------------------------------*/
{ 0, 0, 0, 0, KEY_EN_UNUSED, }, // Move 'Esc' 1 right
{ 0, 0, 2, 0, KEY_EN_UNUSED, }, // Move 'F1' 1 right (Shifts row)
{ 0, 1, 0, 0, KEY_EN_UNUSED, }, // Move Backtick 1 right (Shifts row)
{ 0, 1, 14, 0, KEY_EN_EQUALS, },
{ 0, 2, 0, 0, KEY_EN_UNUSED, }, // Move Tab 1 right (Shifts row)
{ 0, 3, 0, 0, KEY_EN_UNUSED, }, // Move Caps 1 right (Shifts most of row)
{ 0, 3, 13, 0, KEY_EN_UNUSED, }, // Move Enter 1 right
{ 0, 4, 0, 0, KEY_EN_UNUSED, }, // Move LFT_SHFT 1 right (Shifts most of row)
{ 0, 5, 0, 0, KEY_EN_UNUSED, }, // Move LFT_CTRL 1 right
{ 0, 5, 10, 0, KEY_EN_RIGHT_ALT, }, // Insert (Another) RGT_ALT (Shifts remainder of row)
},
{
/*---------------------------------------------------------------------*\
| Swap Keys |
| Zone, Row, Column, Index, Key |
\*---------------------------------------------------------------------*/
{ 0, 5, 11, 0, "Logo", }, // Swap RGT_ALT for 'Logo'
},
{
/*---------------------------------------------------------------------*\
| Remove Keys |
| Zone, Row, Column, Index, Key |
\*---------------------------------------------------------------------*/
/*---------------------------------------------------------------------------------------------------------*\
| Edit Keys |
| Zone, Row, Column, Value, Key, OpCode, |
\*---------------------------------------------------------------------------------------------------------*/
{ 0, 0, 0, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Move 'Esc' 1 right
{ 0, 0, 2, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Move 'F1' 1 right (Shifts row)
{ 0, 1, 0, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Move Backtick 1 right (Shifts row)
{ 0, 1, 14, 0, KEY_EN_EQUALS, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 2, 0, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Move Tab 1 right (Shifts row)
{ 0, 3, 0, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Move Caps 1 right (Shifts most of row)
{ 0, 3, 13, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Move Enter 1 right
{ 0, 4, 0, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Move LFT_SHFT 1 right (Shifts most of row)
{ 0, 5, 0, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Move LFT_CTRL 1 right
{ 0, 5, 10, 0, KEY_EN_RIGHT_ALT, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert (Another) RGT_ALT (Shifts remainder of row)
{ 0, 5, 11, 0, "Logo", KEYBOARD_OPCODE_SWAP_ONLY, }, // Swap RGT_ALT for 'Logo'
}
};
@ -71,29 +59,17 @@ keyboard_keymap_overlay_values razer_blackwidow_x_chroma_te_layout
}
},
{
/*---------------------------------------------------------------------*\
| Insert Keys |
| Zone, Row, Column, Index, Key |
\*---------------------------------------------------------------------*/
{ 0, 0, 0, 0, KEY_EN_UNUSED, }, // Move 'Esc' 1 right (Shifts row)
{ 0, 1, 0, 0, KEY_EN_UNUSED, }, // Move Backtick 1 right (Shifts row)
{ 0, 2, 0, 0, KEY_EN_UNUSED, }, // Move Tab 1 right (Shifts row)
{ 0, 3, 0, 0, KEY_EN_UNUSED, }, // Move Caps 1 right (Shifts row)
{ 0, 4, 0, 0, KEY_EN_UNUSED, }, // Move LFT_SHFT 1 right (Shifts row)
{ 0, 5, 0, 0, KEY_EN_UNUSED, }, // Move LFT_CTRL 1 right (Shifts row)
},
{
/*---------------------------------------------------------------------*\
| Swap Keys |
| Zone, Row, Column, Index, Key |
\*---------------------------------------------------------------------*/
{ 0, 0, 20, 0, "Logo", }, // Insert 'Logo' key
},
{
/*---------------------------------------------------------------------*\
| Remove Keys |
| Zone, Row, Column, Index, Key |
\*---------------------------------------------------------------------*/
/*---------------------------------------------------------------------------------------------------------*\
| Edit Keys |
| Zone, Row, Column, Value, Key, OpCode, |
\*---------------------------------------------------------------------------------------------------------*/
{ 0, 0, 0, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Move 'Esc' 1 right (Shifts row)
{ 0, 1, 0, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Move Backtick 1 right (Shifts row)
{ 0, 2, 0, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Move Tab 1 right (Shifts row)
{ 0, 3, 0, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Move Caps 1 right (Shifts row)
{ 0, 4, 0, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Move LFT_SHFT 1 right (Shifts row)
{ 0, 5, 0, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Move LFT_CTRL 1 right (Shifts row)
{ 0, 0, 20, 0, "Logo", KEYBOARD_OPCODE_SWAP_ONLY, }, // Insert 'Logo' key
}
};
@ -106,65 +82,53 @@ keyboard_keymap_overlay_values razer_blade_15_2021_advanced_layout
{
KEYBOARD_LAYOUT_ISO_QWERTY,
{
/*---------------------------------------------------------------------*\
| Swap Keys |
| Zone, Row, Column, Index, Key |
\*---------------------------------------------------------------------*/
{ 0, 2, 13, 0, KEY_EN_ISO_ENTER, }, // Remove ANSI_BACKSLASH
{ 0, 3, 13, 0, KEY_EN_UNUSED, }, // Remove ANSI_ENTER
/*---------------------------------------------------------------------------------------------------------*\
| Edit Keys |
| Zone, Row, Column, Value, Key, OpCode, |
\*---------------------------------------------------------------------------------------------------------*/
{ 0, 2, 13, 0, KEY_EN_ISO_ENTER, KEYBOARD_OPCODE_SWAP_ONLY, }, // Remove ANSI_BACKSLASH
{ 0, 3, 13, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_SWAP_ONLY, }, // Remove ANSI_ENTER
}
},
/* Add more regional layout fixes here */
}
},
{
/*---------------------------------------------------------------------*\
| Insert Keys |
| Zone, Row, Column, Index, Key |
\*---------------------------------------------------------------------*/
{ 0, 0, 1, 0, KEY_EN_ESCAPE, },
{ 0, 1, 0, 0, KEY_EN_UNUSED, },
{ 0, 1, 14, 0, KEY_EN_UNUSED, }, // Move Backspace 1 right
{ 0, 2, 0, 0, KEY_EN_UNUSED, },
{ 0, 3, 0, 0, KEY_EN_UNUSED, },
{ 0, 4, 0, 0, KEY_EN_UNUSED, },
{ 0, 5, 0, 0, KEY_EN_UNUSED, },
{ 0, 5, 5, 0, KEY_EN_LEFT_ALT, },
{ 0, 5, 9, 0, KEY_EN_RIGHT_ALT, },
},
{
/*---------------------------------------------------------------------*\
| Swap Keys |
| Zone, Row, Column, Index, Key |
\*---------------------------------------------------------------------*/
{ 0, 0, 0, 0, KEY_EN_UNUSED, }, // Remove ESC
{ 0, 0, 14, 0, KEY_EN_INSERT, }, // Swap PRTSCN for INS
{ 0, 0, 15, 0, KEY_EN_DELETE, }, // Swap SCRLCK for DEL
{ 0, 0, 16, 0, KEY_EN_UNUSED, }, // Remove PSE_BRK
{ 0, 1, 16, 0, KEY_EN_UNUSED, }, // Remove INSERT
{ 0, 1, 17, 0, KEY_EN_UNUSED, }, // Remove HOME
{ 0, 1, 18, 0, KEY_EN_UNUSED, }, // Remove PGUP
{ 0, 2, 15, 0, KEY_EN_UNUSED, }, // Remove DEL
{ 0, 2, 16, 0, KEY_EN_UNUSED, }, // Remove END
{ 0, 2, 17, 0, KEY_EN_UNUSED, }, // Remove PGDN
{ 0, 4, 13, 0, KEY_EN_UNUSED, }, // Remove RGT_SHFT
{ 0, 4, 15, 0, KEY_EN_RIGHT_SHIFT, }, // Swap ARWUP for RGT_SHFT
{ 0, 5, 2, 0, KEY_EN_LEFT_FUNCTION, }, // Swap LFT_WIN for LFT_FNC
{ 0, 5, 3, 0, KEY_EN_LEFT_WINDOWS, }, // Swap LFT_ALT for LFT_WIN
{ 0, 5, 6, 0, KEY_EN_UNUSED, }, // Remove SPACE
{ 0, 5, 10, 0, KEY_EN_RIGHT_FUNCTION, }, // Swap RGT_ALT for RGT_FNC
{ 0, 5, 11, 0, KEY_EN_RIGHT_CONTROL, }, // Swap RGT_FNC for RGT_CTL
{ 0, 5, 12, 0, KEY_EN_LEFT_ARROW, }, // Swap ARWLFT for RGT_MNU
{ 0, 5, 13, 0, KEY_EN_UP_ARROW, }, // Swap ARWUP for RGT_CTL
{ 0, 5, 14, 0, KEY_EN_RIGHT_ARROW, }, // Swap ARWRGT for ARWLFT
{ 0, 5, 15, 0, KEY_EN_DOWN_ARROW, }, // Swap ARWDWN for ARWDWN
{ 0, 5, 16, 0, KEY_EN_UNUSED, }, // Remove ARWRGT
},
{
/*---------------------------------------------------------------------*\
| Remove Keys |
| Zone, Row, Column, Index, Key |
\*---------------------------------------------------------------------*/
/*---------------------------------------------------------------------------------------------------------*\
| Edit Keys |
| Zone, Row, Column, Value, Key, OpCode, |
\*---------------------------------------------------------------------------------------------------------*/
{ 0, 0, 1, 0, KEY_EN_ESCAPE, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 1, 0, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 1, 14, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Move Backspace 1 right
{ 0, 2, 0, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 3, 0, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 4, 0, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 5, 0, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 5, 5, 0, KEY_EN_LEFT_ALT, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 5, 9, 0, KEY_EN_RIGHT_ALT, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 0, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_SWAP_ONLY, }, // Remove ESC
{ 0, 0, 14, 0, KEY_EN_INSERT, KEYBOARD_OPCODE_SWAP_ONLY, }, // Swap PRTSCN for INS
{ 0, 0, 15, 0, KEY_EN_DELETE, KEYBOARD_OPCODE_SWAP_ONLY, }, // Swap SCRLCK for DEL
{ 0, 0, 16, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_SWAP_ONLY, }, // Remove PSE_BRK
{ 0, 1, 16, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_SWAP_ONLY, }, // Remove INSERT
{ 0, 1, 17, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_SWAP_ONLY, }, // Remove HOME
{ 0, 1, 18, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_SWAP_ONLY, }, // Remove PGUP
{ 0, 2, 15, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_SWAP_ONLY, }, // Remove DEL
{ 0, 2, 16, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_SWAP_ONLY, }, // Remove END
{ 0, 2, 17, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_SWAP_ONLY, }, // Remove PGDN
{ 0, 4, 13, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_SWAP_ONLY, }, // Remove RGT_SHFT
{ 0, 4, 15, 0, KEY_EN_RIGHT_SHIFT, KEYBOARD_OPCODE_SWAP_ONLY, }, // Swap ARWUP for RGT_SHFT
{ 0, 5, 2, 0, KEY_EN_LEFT_FUNCTION, KEYBOARD_OPCODE_SWAP_ONLY, }, // Swap LFT_WIN for LFT_FNC
{ 0, 5, 3, 0, KEY_EN_LEFT_WINDOWS, KEYBOARD_OPCODE_SWAP_ONLY, }, // Swap LFT_ALT for LFT_WIN
{ 0, 5, 6, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_SWAP_ONLY, }, // Remove SPACE
{ 0, 5, 10, 0, KEY_EN_RIGHT_FUNCTION, KEYBOARD_OPCODE_SWAP_ONLY, }, // Swap RGT_ALT for RGT_FNC
{ 0, 5, 11, 0, KEY_EN_RIGHT_CONTROL, KEYBOARD_OPCODE_SWAP_ONLY, }, // Swap RGT_FNC for RGT_CTL
{ 0, 5, 12, 0, KEY_EN_LEFT_ARROW, KEYBOARD_OPCODE_SWAP_ONLY, }, // Swap ARWLFT for RGT_MNU
{ 0, 5, 13, 0, KEY_EN_UP_ARROW, KEYBOARD_OPCODE_SWAP_ONLY, }, // Swap ARWUP for RGT_CTL
{ 0, 5, 14, 0, KEY_EN_RIGHT_ARROW, KEYBOARD_OPCODE_SWAP_ONLY, }, // Swap ARWRGT for ARWLFT
{ 0, 5, 15, 0, KEY_EN_DOWN_ARROW, KEYBOARD_OPCODE_SWAP_ONLY, }, // Swap ARWDWN for ARWDWN
{ 0, 5, 16, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_SWAP_ONLY, }, // Remove ARWRGT
}
};
@ -177,77 +141,65 @@ keyboard_keymap_overlay_values razer_blade_15_2022_layout
{
KEYBOARD_LAYOUT_ANSI_QWERTY,
{
/*---------------------------------------------------------------------*\
| Swap Keys |
| Zone, Row, Column, Index, Key |
\*---------------------------------------------------------------------*/
{ 0, 4, 1, 0, KEY_EN_UNUSED, }, // Move 'Z' 1 right (Account for ISO key)
/*---------------------------------------------------------------------------------------------------------*\
| Edit Keys |
| Zone, Row, Column, Value, Key, OpCode, |
\*---------------------------------------------------------------------------------------------------------*/
{ 0, 4, 1, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_SWAP_ONLY, }, // Move 'Z' 1 right (Account for ISO key)
}
},
{
KEYBOARD_LAYOUT_ISO_QWERTY,
{
/*---------------------------------------------------------------------*\
| Swap Keys |
| Zone, Row, Column, Index, Key |
\*---------------------------------------------------------------------*/
{ 0, 2, 13, 0, KEY_EN_ISO_ENTER, }, // Remove ANSI_BACKSLASH
{ 0, 3, 13, 0, KEY_EN_UNUSED, }, // Remove ANSI_ENTER
/*---------------------------------------------------------------------------------------------------------*\
| Edit Keys |
| Zone, Row, Column, Value, Key, OpCode, |
\*---------------------------------------------------------------------------------------------------------*/
{ 0, 2, 13, 0, KEY_EN_ISO_ENTER, KEYBOARD_OPCODE_SWAP_ONLY, }, // Remove ANSI_BACKSLASH
{ 0, 3, 13, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_SWAP_ONLY, }, // Remove ANSI_ENTER
}
},
/* Add more regional layout fixes here */
}
},
{
/*---------------------------------------------------------------------*\
| Insert Keys |
| Zone, Row, Column, Index, Key |
\*---------------------------------------------------------------------*/
{ 0, 0, 0, 0, KEY_EN_UNUSED, }, // Move Escape 1 right
{ 0, 1, 0, 0, KEY_EN_UNUSED, },
{ 0, 1, 14, 0, KEY_EN_UNUSED, }, // Move Backspace 1 right
{ 0, 2, 0, 0, KEY_EN_UNUSED, },
{ 0, 2, 14, 0, KEY_EN_UNUSED, }, // Move Back slash 1 right
{ 0, 3, 0, 0, KEY_EN_UNUSED, },
{ 0, 3, 13, 0, KEY_EN_UNUSED, }, // Move ANSI Enter 1 right
{ 0, 3, 14, 0, KEY_EN_UNUSED, }, // Move ANSI Enter 1 right
{ 0, 4, 0, 0, KEY_EN_UNUSED, },
{ 0, 5, 0, 0, KEY_EN_UNUSED, },
{ 0, 5, 5, 0, KEY_EN_LEFT_ALT, },
{ 0, 5, 6, 0, KEY_EN_UNUSED, }, // Move Space 1 right
{ 0, 5, 9, 0, KEY_EN_RIGHT_ALT, },
},
{
/*---------------------------------------------------------------------*\
| Swap Keys |
| Zone, Row, Column, Index, Key |
\*---------------------------------------------------------------------*/
{ 0, 0, 14, 0, KEY_EN_DELETE, }, // Swap PRTSCN for DEL
{ 0, 0, 15, 0, KEY_EN_POWER, }, // Swap SCRLCK for POWER
{ 0, 0, 16, 0, KEY_EN_UNUSED, }, // Remove PSE_BRK
{ 0, 1, 16, 0, KEY_EN_UNUSED, }, // Remove INSERT
{ 0, 1, 17, 0, KEY_EN_UNUSED, }, // Remove HOME
{ 0, 1, 18, 0, KEY_EN_UNUSED, }, // Remove PGUP
{ 0, 2, 16, 0, KEY_EN_UNUSED, }, // Remove DEL
{ 0, 2, 17, 0, KEY_EN_UNUSED, }, // Remove END
{ 0, 2, 18, 0, KEY_EN_UNUSED, }, // Remove PGDN
{ 0, 4, 13, 0, KEY_EN_UNUSED, }, // Remove RGT_SHFT
{ 0, 4, 15, 0, KEY_EN_RIGHT_SHIFT, }, // Swap ARWUP for RGT_SHFT
{ 0, 5, 2, 0, KEY_EN_LEFT_FUNCTION, }, // Swap LFT_WIN for LFT_FNC
{ 0, 5, 3, 0, KEY_EN_LEFT_WINDOWS, }, // Swap LFT_ALT for LFT_WIN
{ 0, 5, 10, 0, KEY_EN_RIGHT_FUNCTION, }, // Swap RGT_ALT for RGT_FNC
{ 0, 5, 11, 0, KEY_EN_RIGHT_CONTROL, }, // Swap RGT_FNC for RGT_CTL
{ 0, 5, 12, 0, KEY_EN_LEFT_ARROW, }, // Swap ARWLFT for RGT_MNU
{ 0, 5, 13, 0, KEY_EN_UP_ARROW, }, // Swap ARWUP for RGT_CTL
{ 0, 5, 14, 0, KEY_EN_RIGHT_ARROW, }, // Swap ARWRGT for ARWLFT
{ 0, 5, 15, 0, KEY_EN_DOWN_ARROW, }, // Swap ARWDWN for ARWDWN
{ 0, 5, 16, 0, KEY_EN_UNUSED, }, // Remove ARWRGT
},
{
/*---------------------------------------------------------------------*\
| Remove Keys |
| Zone, Row, Column, Index, Key |
\*---------------------------------------------------------------------*/
/*---------------------------------------------------------------------------------------------------------*\
| Edit Keys |
| Zone, Row, Column, Value, Key, OpCode, |
\*---------------------------------------------------------------------------------------------------------*/
{ 0, 0, 0, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Move Escape 1 right
{ 0, 1, 0, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 1, 14, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Move Backspace 1 right
{ 0, 2, 0, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 2, 14, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Move Back slash 1 right
{ 0, 3, 0, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 3, 13, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Move ANSI Enter 1 right
{ 0, 3, 14, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Move ANSI Enter 1 right
{ 0, 4, 0, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 5, 0, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 5, 5, 0, KEY_EN_LEFT_ALT, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 5, 6, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Move Space 1 right
{ 0, 5, 9, 0, KEY_EN_RIGHT_ALT, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 14, 0, KEY_EN_DELETE, KEYBOARD_OPCODE_SWAP_ONLY, }, // Swap PRTSCN for DEL
{ 0, 0, 15, 0, KEY_EN_POWER, KEYBOARD_OPCODE_SWAP_ONLY, }, // Swap SCRLCK for POWER
{ 0, 0, 16, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_SWAP_ONLY, }, // Remove PSE_BRK
{ 0, 1, 16, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_SWAP_ONLY, }, // Remove INSERT
{ 0, 1, 17, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_SWAP_ONLY, }, // Remove HOME
{ 0, 1, 18, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_SWAP_ONLY, }, // Remove PGUP
{ 0, 2, 16, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_SWAP_ONLY, }, // Remove DEL
{ 0, 2, 17, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_SWAP_ONLY, }, // Remove END
{ 0, 2, 18, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_SWAP_ONLY, }, // Remove PGDN
{ 0, 4, 13, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_SWAP_ONLY, }, // Remove RGT_SHFT
{ 0, 4, 15, 0, KEY_EN_RIGHT_SHIFT, KEYBOARD_OPCODE_SWAP_ONLY, }, // Swap ARWUP for RGT_SHFT
{ 0, 5, 2, 0, KEY_EN_LEFT_FUNCTION, KEYBOARD_OPCODE_SWAP_ONLY, }, // Swap LFT_WIN for LFT_FNC
{ 0, 5, 3, 0, KEY_EN_LEFT_WINDOWS, KEYBOARD_OPCODE_SWAP_ONLY, }, // Swap LFT_ALT for LFT_WIN
{ 0, 5, 10, 0, KEY_EN_RIGHT_FUNCTION, KEYBOARD_OPCODE_SWAP_ONLY, }, // Swap RGT_ALT for RGT_FNC
{ 0, 5, 11, 0, KEY_EN_RIGHT_CONTROL, KEYBOARD_OPCODE_SWAP_ONLY, }, // Swap RGT_FNC for RGT_CTL
{ 0, 5, 12, 0, KEY_EN_LEFT_ARROW, KEYBOARD_OPCODE_SWAP_ONLY, }, // Swap ARWLFT for RGT_MNU
{ 0, 5, 13, 0, KEY_EN_UP_ARROW, KEYBOARD_OPCODE_SWAP_ONLY, }, // Swap ARWUP for RGT_CTL
{ 0, 5, 14, 0, KEY_EN_RIGHT_ARROW, KEYBOARD_OPCODE_SWAP_ONLY, }, // Swap ARWRGT for ARWLFT
{ 0, 5, 15, 0, KEY_EN_DOWN_ARROW, KEYBOARD_OPCODE_SWAP_ONLY, }, // Swap ARWDWN for ARWDWN
{ 0, 5, 16, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_SWAP_ONLY, }, // Remove ARWRGT
}
};
@ -260,45 +212,33 @@ keyboard_keymap_overlay_values razer_deathstalker_v2_layout
{
KEYBOARD_LAYOUT_ANSI_QWERTY,
{
/*---------------------------------------------------------------------*\
| Swap Keys |
| Zone, Row, Column, Index, Key |
\*---------------------------------------------------------------------*/
{ 0, 4, 1, 0, KEY_EN_UNUSED, }, // Move 'Z' 1 right (Account for ISO key)
/*---------------------------------------------------------------------------------------------------------*\
| Edit Keys |
| Zone, Row, Column, Value, Key, OpCode, |
\*---------------------------------------------------------------------------------------------------------*/
{ 0, 4, 1, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_SWAP_ONLY, }, // Move 'Z' 1 right (Account for ISO key)
}
},
{
KEYBOARD_LAYOUT_ISO_QWERTY,
{
/*---------------------------------------------------------------------*\
| Swap Keys |
| Zone, Row, Column, Index, Key |
\*---------------------------------------------------------------------*/
{ 0, 2, 13, 0, KEY_EN_UNUSED, }, // Remove ANSI_BACKSLASH
{ 0, 4, 1, 0, KEY_EN_ISO_BACK_SLASH, }, // Add ISO_BACK_SLASH
/*---------------------------------------------------------------------------------------------------------*\
| Edit Keys |
| Zone, Row, Column, Value, Key, OpCode, |
\*---------------------------------------------------------------------------------------------------------*/
{ 0, 2, 13, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_SWAP_ONLY, }, // Remove ANSI_BACKSLASH
{ 0, 4, 1, 0, KEY_EN_ISO_BACK_SLASH, KEYBOARD_OPCODE_SWAP_ONLY, }, // Add ISO_BACK_SLASH
}
},
/* Add more regional layout fixes here */
}
},
{
/*---------------------------------------------------------------------*\
| Insert Keys |
| Zone, Row, Column, Index, Key |
\*---------------------------------------------------------------------*/
{ 0, 1, 13, 0, KEY_EN_UNUSED, }, // Move Backspace 1 right
},
{
/*---------------------------------------------------------------------*\
| Swap Keys |
| Zone, Row, Column, Index, Key |
\*---------------------------------------------------------------------*/
},
{
/*---------------------------------------------------------------------*\
| Remove Keys |
| Zone, Row, Column, Index, Key |
\*---------------------------------------------------------------------*/
/*---------------------------------------------------------------------------------------------------------*\
| Edit Keys |
| Zone, Row, Column, Value, Key, OpCode, |
\*---------------------------------------------------------------------------------------------------------*/
{ 0, 1, 13, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Move Backspace 1 right
}
};
@ -311,44 +251,32 @@ keyboard_keymap_overlay_values razer_deathstalker_v2_pro_layout
{
KEYBOARD_LAYOUT_ANSI_QWERTY,
{
/*---------------------------------------------------------------------*\
| Swap Keys |
| Zone, Row, Column, Index, Key |
\*---------------------------------------------------------------------*/
{ 0, 4, 1, 0, KEY_EN_UNUSED, }, // Move 'Z' 1 right (Account for ISO key)
/*---------------------------------------------------------------------------------------------------------*\
| Edit Keys |
| Zone, Row, Column, Value, Key, OpCode, |
\*---------------------------------------------------------------------------------------------------------*/
{ 0, 4, 1, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_SWAP_ONLY, }, // Move 'Z' 1 right (Account for ISO key)
}
},
{
KEYBOARD_LAYOUT_ISO_QWERTY,
{
/*---------------------------------------------------------------------*\
| Swap Keys |
| Zone, Row, Column, Index, Key |
\*---------------------------------------------------------------------*/
{ 0, 2, 13, 0, KEY_EN_UNUSED, }, // Remove ANSI_BACKSLASH
{ 0, 4, 1, 0, KEY_EN_ISO_BACK_SLASH, }, // Add ISO_BACK_SLASH
/*---------------------------------------------------------------------------------------------------------*\
| Edit Keys |
| Zone, Row, Column, Value, Key, OpCode, |
\*---------------------------------------------------------------------------------------------------------*/
{ 0, 2, 13, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_SWAP_ONLY, }, // Remove ANSI_BACKSLASH
{ 0, 4, 1, 0, KEY_EN_ISO_BACK_SLASH, KEYBOARD_OPCODE_SWAP_ONLY, }, // Add ISO_BACK_SLASH
}
},
/* Add more regional layout fixes here */
}
},
{
/*---------------------------------------------------------------------*\
| Insert Keys |
| Zone, Row, Column, Index, Key |
\*---------------------------------------------------------------------*/
},
{
/*---------------------------------------------------------------------*\
| Swap Keys |
| Zone, Row, Column, Index, Key |
\*---------------------------------------------------------------------*/
},
{
/*---------------------------------------------------------------------*\
| Remove Keys |
| Zone, Row, Column, Index, Key |
\*---------------------------------------------------------------------*/
/*---------------------------------------------------------------------------------------------------------*\
| Edit Keys |
| Zone, Row, Column, Value, Key, OpCode, |
\*---------------------------------------------------------------------------------------------------------*/
}
};
@ -362,32 +290,20 @@ keyboard_keymap_overlay_values razer_huntsman_elite_layout
}
},
{
/*---------------------------------------------------------------------*\
| Insert Keys |
| Zone, Row, Column, Index, Key |
\*---------------------------------------------------------------------*/
{ 0, 0, 0, 0, KEY_EN_UNUSED, },
{ 0, 0, 18, 0, KEY_EN_MEDIA_PREVIOUS, },
{ 0, 0, 19, 0, KEY_EN_MEDIA_PLAY_PAUSE, },
{ 0, 0, 20, 0, KEY_EN_MEDIA_NEXT, },
{ 0, 0, 21, 0, KEY_EN_MEDIA_MUTE, },
{ 0, 1, 0, 0, KEY_EN_UNUSED, },
{ 0, 2, 0, 0, KEY_EN_UNUSED, },
{ 0, 3, 0, 0, KEY_EN_UNUSED, },
{ 0, 4, 0, 0, KEY_EN_UNUSED, },
{ 0, 5, 0, 0, KEY_EN_UNUSED, },
},
{
/*---------------------------------------------------------------------*\
| Swap Keys |
| Zone, Row, Column, Index, Key |
\*---------------------------------------------------------------------*/
},
{
/*---------------------------------------------------------------------*\
| Remove Keys |
| Zone, Row, Column, Index, Key |
\*---------------------------------------------------------------------*/
/*---------------------------------------------------------------------------------------------------------*\
| Edit Keys |
| Zone, Row, Column, Value, Key, OpCode, |
\*---------------------------------------------------------------------------------------------------------*/
{ 0, 0, 0, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 18, 0, KEY_EN_MEDIA_PREVIOUS, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 19, 0, KEY_EN_MEDIA_PLAY_PAUSE, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 20, 0, KEY_EN_MEDIA_NEXT, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 21, 0, KEY_EN_MEDIA_MUTE, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 1, 0, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 2, 0, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 3, 0, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 4, 0, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 5, 0, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
}
};

View file

@ -21,12 +21,14 @@ const char* KEYBOARD_NAME_QWERTZ = "QWERTZ";
const char* KEYBOARD_NAME_FULL = "Full 104 key ";
const char* KEYBOARD_NAME_TKL = "Tenkeyless ";
const char* KEYBOARD_NAME_SIXTY = "Sixty percent ";
const char* KEYBOARD_NAME_SEVENTY_FIVE = "Seventy Five percent ";
const char* LOG_MSG_EMPTY = "empty ";
const char* LOG_MSG_UNUSED_KEY = "'unused' key";
const char* LOG_MSG_SHIFTING_RIGHT = ", shifting keys right";
const char* LOG_MSG_CREATED_NEW = "[%s] Created new %s%s with %d rows and %d columns containing %d keys";
const char* LOG_MSG_INSERT_BEFORE = "[%s] Inserting %s before %s @ %02d, %02d%s";
const char* LOG_MSG_MISSING_OPCODE = "[%s] Error: Opcode %d not found for %s @ %02d, %02d";
/*-------------------------------------------------------------------------*\
| Keyboard Base Maps |
@ -51,175 +53,170 @@ const char* LOG_MSG_INSERT_BEFORE = "[%s] Inserting %s before %s @ %02d, %02d%
static const std::vector<keyboard_led> keyboard_zone_main =
{
/*---------------------------------------------------------------------*\
| Zone, Row, Column, Value, Key |
\*---------------------------------------------------------------------*/
{ 0, 1, 0, 0, KEY_EN_BACK_TICK, },
{ 0, 1, 1, 0, KEY_EN_1, },
{ 0, 1, 2, 0, KEY_EN_2, },
{ 0, 1, 3, 0, KEY_EN_3, },
{ 0, 1, 4, 0, KEY_EN_4, },
{ 0, 1, 5, 0, KEY_EN_5, },
{ 0, 1, 6, 0, KEY_EN_6, },
{ 0, 1, 7, 0, KEY_EN_7, },
{ 0, 1, 8, 0, KEY_EN_8, },
{ 0, 1, 9, 0, KEY_EN_9, },
{ 0, 1, 10, 0, KEY_EN_0, },
{ 0, 1, 11, 0, KEY_EN_MINUS, },
{ 0, 1, 12, 0, KEY_EN_EQUALS, },
{ 0, 1, 13, 0, KEY_EN_BACKSPACE, },
{ 0, 2, 0, 0, KEY_EN_TAB, },
{ 0, 2, 1, 0, KEY_EN_Q, },
{ 0, 2, 2, 0, KEY_EN_W, },
{ 0, 2, 3, 0, KEY_EN_E, },
{ 0, 2, 4, 0, KEY_EN_R, },
{ 0, 2, 5, 0, KEY_EN_T, },
{ 0, 2, 6, 0, KEY_EN_Y, },
{ 0, 2, 7, 0, KEY_EN_U, },
{ 0, 2, 8, 0, KEY_EN_I, },
{ 0, 2, 9, 0, KEY_EN_O, },
{ 0, 2, 10, 0, KEY_EN_P, },
{ 0, 2, 11, 0, KEY_EN_LEFT_BRACKET, },
{ 0, 2, 12, 0, KEY_EN_RIGHT_BRACKET, },
{ 0, 2, 13, 0, KEY_EN_ANSI_BACK_SLASH, },
{ 0, 3, 0, 0, KEY_EN_CAPS_LOCK, },
{ 0, 3, 1, 0, KEY_EN_A, },
{ 0, 3, 2, 0, KEY_EN_S, },
{ 0, 3, 3, 0, KEY_EN_D, },
{ 0, 3, 4, 0, KEY_EN_F, },
{ 0, 3, 5, 0, KEY_EN_G, },
{ 0, 3, 6, 0, KEY_EN_H, },
{ 0, 3, 7, 0, KEY_EN_J, },
{ 0, 3, 8, 0, KEY_EN_K, },
{ 0, 3, 9, 0, KEY_EN_L, },
{ 0, 3, 10, 0, KEY_EN_SEMICOLON, },
{ 0, 3, 11, 0, KEY_EN_QUOTE, },
{ 0, 3, 13, 0, KEY_EN_ANSI_ENTER, },
{ 0, 4, 0, 0, KEY_EN_LEFT_SHIFT, },
{ 0, 4, 2, 0, KEY_EN_Z, },
{ 0, 4, 3, 0, KEY_EN_X, },
{ 0, 4, 4, 0, KEY_EN_C, },
{ 0, 4, 5, 0, KEY_EN_V, },
{ 0, 4, 6, 0, KEY_EN_B, },
{ 0, 4, 7, 0, KEY_EN_N, },
{ 0, 4, 8, 0, KEY_EN_M, },
{ 0, 4, 9, 0, KEY_EN_COMMA, },
{ 0, 4, 10, 0, KEY_EN_PERIOD, },
{ 0, 4, 11, 0, KEY_EN_FORWARD_SLASH, },
{ 0, 4, 13, 0, KEY_EN_RIGHT_SHIFT, },
{ 0, 5, 0, 0, KEY_EN_LEFT_CONTROL, },
{ 0, 5, 1, 0, KEY_EN_LEFT_WINDOWS, },
{ 0, 5, 2, 0, KEY_EN_LEFT_ALT, },
{ 0, 5, 6, 0, KEY_EN_SPACE, },
{ 0, 5, 10, 0, KEY_EN_RIGHT_ALT, },
{ 0, 5, 11, 0, KEY_EN_RIGHT_FUNCTION, },
{ 0, 5, 12, 0, KEY_EN_MENU, },
{ 0, 5, 13, 0, KEY_EN_RIGHT_CONTROL, },
/*---------------------------------------------------------------------------------------------------------*\
| Zone, Row, Column, Value, Key, OpCode, |
\*---------------------------------------------------------------------------------------------------------*/
{ 0, 1, 0, 0, KEY_EN_BACK_TICK, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 1, 1, 0, KEY_EN_1, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 1, 2, 0, KEY_EN_2, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 1, 3, 0, KEY_EN_3, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 1, 4, 0, KEY_EN_4, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 1, 5, 0, KEY_EN_5, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 1, 6, 0, KEY_EN_6, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 1, 7, 0, KEY_EN_7, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 1, 8, 0, KEY_EN_8, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 1, 9, 0, KEY_EN_9, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 1, 10, 0, KEY_EN_0, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 1, 11, 0, KEY_EN_MINUS, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 1, 12, 0, KEY_EN_EQUALS, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 1, 13, 0, KEY_EN_BACKSPACE, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 2, 0, 0, KEY_EN_TAB, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 2, 1, 0, KEY_EN_Q, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 2, 2, 0, KEY_EN_W, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 2, 3, 0, KEY_EN_E, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 2, 4, 0, KEY_EN_R, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 2, 5, 0, KEY_EN_T, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 2, 6, 0, KEY_EN_Y, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 2, 7, 0, KEY_EN_U, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 2, 8, 0, KEY_EN_I, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 2, 9, 0, KEY_EN_O, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 2, 10, 0, KEY_EN_P, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 2, 11, 0, KEY_EN_LEFT_BRACKET, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 2, 12, 0, KEY_EN_RIGHT_BRACKET, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 2, 13, 0, KEY_EN_ANSI_BACK_SLASH, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 3, 0, 0, KEY_EN_CAPS_LOCK, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 3, 1, 0, KEY_EN_A, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 3, 2, 0, KEY_EN_S, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 3, 3, 0, KEY_EN_D, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 3, 4, 0, KEY_EN_F, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 3, 5, 0, KEY_EN_G, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 3, 6, 0, KEY_EN_H, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 3, 7, 0, KEY_EN_J, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 3, 8, 0, KEY_EN_K, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 3, 9, 0, KEY_EN_L, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 3, 10, 0, KEY_EN_SEMICOLON, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 3, 11, 0, KEY_EN_QUOTE, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 3, 13, 0, KEY_EN_ANSI_ENTER, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 4, 0, 0, KEY_EN_LEFT_SHIFT, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 4, 2, 0, KEY_EN_Z, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 4, 3, 0, KEY_EN_X, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 4, 4, 0, KEY_EN_C, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 4, 5, 0, KEY_EN_V, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 4, 6, 0, KEY_EN_B, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 4, 7, 0, KEY_EN_N, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 4, 8, 0, KEY_EN_M, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 4, 9, 0, KEY_EN_COMMA, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 4, 10, 0, KEY_EN_PERIOD, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 4, 11, 0, KEY_EN_FORWARD_SLASH, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 4, 13, 0, KEY_EN_RIGHT_SHIFT, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 5, 0, 0, KEY_EN_LEFT_CONTROL, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 5, 1, 0, KEY_EN_LEFT_WINDOWS, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 5, 2, 0, KEY_EN_LEFT_ALT, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 5, 6, 0, KEY_EN_SPACE, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 5, 10, 0, KEY_EN_RIGHT_ALT, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 5, 11, 0, KEY_EN_RIGHT_FUNCTION, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 5, 12, 0, KEY_EN_MENU, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 5, 13, 0, KEY_EN_RIGHT_CONTROL, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
};
static const std::vector<keyboard_led> keyboard_zone_fn_row =
{
/*---------------------------------------------------------------------*\
| Zone, Row, Column, Value, Key |
\*---------------------------------------------------------------------*/
{ 0, 0, 0, 0, KEY_EN_ESCAPE, },
{ 0, 0, 2, 0, KEY_EN_F1, },
{ 0, 0, 3, 0, KEY_EN_F2, },
{ 0, 0, 4, 0, KEY_EN_F3, },
{ 0, 0, 5, 0, KEY_EN_F4, },
{ 0, 0, 6, 0, KEY_EN_F5, },
{ 0, 0, 7, 0, KEY_EN_F6, },
{ 0, 0, 8, 0, KEY_EN_F7, },
{ 0, 0, 9, 0, KEY_EN_F8, },
{ 0, 0, 10, 0, KEY_EN_F9, },
{ 0, 0, 11, 0, KEY_EN_F10, },
{ 0, 0, 12, 0, KEY_EN_F11, },
{ 0, 0, 13, 0, KEY_EN_F12, },
/*---------------------------------------------------------------------------------------------------------*\
| Zone, Row, Column, Value, Key, OpCode, |
\*---------------------------------------------------------------------------------------------------------*/
{ 0, 0, 0, 0, KEY_EN_ESCAPE, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 2, 0, KEY_EN_F1, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 3, 0, KEY_EN_F2, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 4, 0, KEY_EN_F3, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 5, 0, KEY_EN_F4, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 6, 0, KEY_EN_F5, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 7, 0, KEY_EN_F6, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 8, 0, KEY_EN_F7, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 9, 0, KEY_EN_F8, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 10, 0, KEY_EN_F9, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 11, 0, KEY_EN_F10, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 12, 0, KEY_EN_F11, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 13, 0, KEY_EN_F12, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
};
static const std::vector<keyboard_led> keyboard_zone_extras =
{
/*---------------------------------------------------------------------*\
| Zone, Row, Column, Value, Key |
\*---------------------------------------------------------------------*/
{ 0, 0, 14, 0, KEY_EN_PRINT_SCREEN, },
{ 0, 0, 15, 0, KEY_EN_SCROLL_LOCK, },
{ 0, 0, 16, 0, KEY_EN_PAUSE_BREAK, },
{ 0, 1, 14, 0, KEY_EN_INSERT, },
{ 0, 1, 15, 0, KEY_EN_HOME, },
{ 0, 1, 16, 0, KEY_EN_PAGE_UP, },
{ 0, 2, 14, 0, KEY_EN_DELETE, },
{ 0, 2, 15, 0, KEY_EN_END, },
{ 0, 2, 16, 0, KEY_EN_PAGE_DOWN, },
{ 0, 4, 15, 0, KEY_EN_UP_ARROW, },
{ 0, 5, 14, 0, KEY_EN_LEFT_ARROW, },
{ 0, 5, 15, 0, KEY_EN_DOWN_ARROW, },
{ 0, 5, 16, 0, KEY_EN_RIGHT_ARROW, },
/*---------------------------------------------------------------------------------------------------------*\
| Zone, Row, Column, Value, Key, OpCode, |
\*---------------------------------------------------------------------------------------------------------*/
{ 0, 0, 14, 0, KEY_EN_PRINT_SCREEN, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 15, 0, KEY_EN_SCROLL_LOCK, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 16, 0, KEY_EN_PAUSE_BREAK, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 1, 14, 0, KEY_EN_INSERT, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 1, 15, 0, KEY_EN_HOME, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 1, 16, 0, KEY_EN_PAGE_UP, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 2, 14, 0, KEY_EN_DELETE, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 2, 15, 0, KEY_EN_END, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 2, 16, 0, KEY_EN_PAGE_DOWN, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 4, 15, 0, KEY_EN_UP_ARROW, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 5, 14, 0, KEY_EN_LEFT_ARROW, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 5, 15, 0, KEY_EN_DOWN_ARROW, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 5, 16, 0, KEY_EN_RIGHT_ARROW, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
};
static const std::vector<keyboard_led> keyboard_zone_numpad =
{
/*---------------------------------------------------------------------*\
| Zone, Row, Column, Value, Key |
\*---------------------------------------------------------------------*/
{ 0, 1, 17, 0, KEY_EN_NUMPAD_LOCK, },
{ 0, 1, 18, 0, KEY_EN_NUMPAD_DIVIDE, },
{ 0, 1, 19, 0, KEY_EN_NUMPAD_TIMES, },
{ 0, 1, 20, 0, KEY_EN_NUMPAD_MINUS, },
{ 0, 2, 17, 0, KEY_EN_NUMPAD_7, },
{ 0, 2, 18, 0, KEY_EN_NUMPAD_8, },
{ 0, 2, 19, 0, KEY_EN_NUMPAD_9, },
{ 0, 2, 20, 0, KEY_EN_NUMPAD_PLUS, },
{ 0, 3, 17, 0, KEY_EN_NUMPAD_4, },
{ 0, 3, 18, 0, KEY_EN_NUMPAD_5, },
{ 0, 3, 19, 0, KEY_EN_NUMPAD_6, },
{ 0, 4, 17, 0, KEY_EN_NUMPAD_1, },
{ 0, 4, 18, 0, KEY_EN_NUMPAD_2, },
{ 0, 4, 19, 0, KEY_EN_NUMPAD_3, },
{ 0, 4, 20, 0, KEY_EN_NUMPAD_ENTER, },
{ 0, 5, 18, 0, KEY_EN_NUMPAD_0, },
{ 0, 5, 19, 0, KEY_EN_NUMPAD_PERIOD, },
/*---------------------------------------------------------------------------------------------------------*\
| Zone, Row, Column, Value, Key, OpCode, |
\*---------------------------------------------------------------------------------------------------------*/
{ 0, 1, 17, 0, KEY_EN_NUMPAD_LOCK, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 1, 18, 0, KEY_EN_NUMPAD_DIVIDE, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 1, 19, 0, KEY_EN_NUMPAD_TIMES, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 1, 20, 0, KEY_EN_NUMPAD_MINUS, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 2, 17, 0, KEY_EN_NUMPAD_7, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 2, 18, 0, KEY_EN_NUMPAD_8, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 2, 19, 0, KEY_EN_NUMPAD_9, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 2, 20, 0, KEY_EN_NUMPAD_PLUS, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 3, 17, 0, KEY_EN_NUMPAD_4, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 3, 18, 0, KEY_EN_NUMPAD_5, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 3, 19, 0, KEY_EN_NUMPAD_6, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 4, 17, 0, KEY_EN_NUMPAD_1, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 4, 18, 0, KEY_EN_NUMPAD_2, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 4, 19, 0, KEY_EN_NUMPAD_3, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 4, 20, 0, KEY_EN_NUMPAD_ENTER, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 5, 18, 0, KEY_EN_NUMPAD_0, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 5, 19, 0, KEY_EN_NUMPAD_PERIOD, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
};
keyboard_keymap_overlay iso_azerty
{
KEYBOARD_SIZE_FULL,
{
/*---------------------------------------------------------------------*\
| Insert Keys |
\*---------------------------------------------------------------------*/
},
{
/*---------------------------------------------------------------------*\
| Swap Keys |
\*---------------------------------------------------------------------*/
{ 0, 3, 12, 0, KEY_FR_ASTERIX, },
{ 0, 4, 1, 0, KEY_NORD_ANGLE_BRACKET, },
{ 0, 1, 0, 0, KEY_FR_SUPER_2, },
{ 0, 1, 1, 0, KEY_FR_AMPERSAND, },
{ 0, 1, 2, 0, KEY_FR_ACUTE_E, },
{ 0, 1, 3, 0, KEY_FR_DOUBLEQUOTE, },
{ 0, 1, 4, 0, KEY_EN_QUOTE, },
{ 0, 1, 5, 0, KEY_FR_LEFT_PARENTHESIS, },
{ 0, 1, 6, 0, KEY_EN_MINUS, },
{ 0, 1, 7, 0, KEY_FR_GRAVE_E, },
{ 0, 1, 8, 0, KEY_FR_UNDERSCORE, },
{ 0, 1, 9, 0, KEY_FR_CEDILLA_C, },
{ 0, 1, 10, 0, KEY_FR_GRAVE_A, },
{ 0, 1, 11, 0, KEY_FR_RIGHT_PARENTHESIS, },
{ 0, 2, 1, 0, KEY_EN_A, },
{ 0, 2, 2, 0, KEY_EN_Z, },
{ 0, 2, 11, 0, KEY_JP_CHEVRON, },
{ 0, 2, 12, 0, KEY_FR_DOLLAR, },
{ 0, 2, 13, 0, KEY_EN_UNUSED, },
{ 0, 3, 1, 0, KEY_EN_Q, },
{ 0, 3, 10, 0, KEY_EN_M, },
{ 0, 3, 11, 0, KEY_FR_GRAVE_U, },
{ 0, 4, 2, 0, KEY_EN_W, },
{ 0, 4, 8, 0, KEY_EN_COMMA, },
{ 0, 4, 9, 0, KEY_EN_SEMICOLON, },
{ 0, 4, 10, 0, KEY_JP_COLON, },
{ 0, 4, 11, 0, KEY_FR_EXCLAIMATION, },
/*---------------------------------------------------------------------------------------------------------*\
| Edit Keys |
\*---------------------------------------------------------------------------------------------------------*/
{ 0, 3, 12, 0, KEY_FR_ASTERIX, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 4, 1, 0, KEY_NORD_ANGLE_BRACKET, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 1, 0, 0, KEY_FR_SUPER_2, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 1, 1, 0, KEY_FR_AMPERSAND, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 1, 2, 0, KEY_FR_ACUTE_E, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 1, 3, 0, KEY_FR_DOUBLEQUOTE, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 1, 4, 0, KEY_EN_QUOTE, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 1, 5, 0, KEY_FR_LEFT_PARENTHESIS, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 1, 6, 0, KEY_EN_MINUS, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 1, 7, 0, KEY_FR_GRAVE_E, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 1, 8, 0, KEY_FR_UNDERSCORE, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 1, 9, 0, KEY_FR_CEDILLA_C, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 1, 10, 0, KEY_FR_GRAVE_A, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 1, 11, 0, KEY_FR_RIGHT_PARENTHESIS, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 2, 1, 0, KEY_EN_A, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 2, 2, 0, KEY_EN_Z, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 2, 11, 0, KEY_JP_CHEVRON, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 2, 12, 0, KEY_FR_DOLLAR, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 2, 13, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 3, 1, 0, KEY_EN_Q, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 3, 10, 0, KEY_EN_M, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 3, 11, 0, KEY_FR_GRAVE_U, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 4, 2, 0, KEY_EN_W, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 4, 8, 0, KEY_EN_COMMA, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 4, 9, 0, KEY_EN_SEMICOLON, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 4, 10, 0, KEY_JP_COLON, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 4, 11, 0, KEY_FR_EXCLAIMATION, KEYBOARD_OPCODE_SWAP_ONLY, },
}
};
@ -227,17 +224,12 @@ keyboard_keymap_overlay iso_qwerty
{
KEYBOARD_SIZE_FULL,
{
/*---------------------------------------------------------------------*\
| Insert Keys |
\*---------------------------------------------------------------------*/
},
{
/*---------------------------------------------------------------------*\
| Swap Keys |
\*---------------------------------------------------------------------*/
{ 0, 3, 12, 0, KEY_EN_POUND, },
{ 0, 4, 1, 0, KEY_EN_ISO_BACK_SLASH, },
{ 0, 2, 13, 0, KEY_EN_UNUSED, },
/*---------------------------------------------------------------------------------------------------------*\
| Edit Keys |
\*---------------------------------------------------------------------------------------------------------*/
{ 0, 3, 12, 0, KEY_EN_POUND, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 4, 1, 0, KEY_EN_ISO_BACK_SLASH, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 2, 13, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_SWAP_ONLY, },
}
};
@ -245,27 +237,22 @@ keyboard_keymap_overlay iso_qwertz
{
KEYBOARD_SIZE_FULL,
{
/*---------------------------------------------------------------------*\
| Insert Keys |
\*---------------------------------------------------------------------*/
},
{
/*---------------------------------------------------------------------*\
| Swap Keys |
\*---------------------------------------------------------------------*/
{ 0, 3, 12, 0, KEY_EN_POUND, },
{ 0, 4, 1, 0, KEY_NORD_ANGLE_BRACKET, },
{ 0, 1, 0, 0, KEY_JP_CHEVRON, },
{ 0, 1, 11, 0, KEY_DE_ESZETT, },
{ 0, 1, 12, 0, KEY_EN_BACK_TICK, },
{ 0, 2, 6, 0, KEY_EN_Z, },
{ 0, 2, 11, 0, KEY_DE_DIAERESIS_U, },
{ 0, 2, 12, 0, KEY_EN_PLUS, },
{ 0, 2, 13, 0, KEY_EN_UNUSED, },
{ 0, 3, 10, 0, KEY_DE_DIAERESIS_O, },
{ 0, 3, 11, 0, KEY_DE_DIAERESIS_A, },
{ 0, 4, 2, 0, KEY_EN_Y, },
{ 0, 4, 11, 0, KEY_EN_MINUS, },
/*---------------------------------------------------------------------------------------------------------*\
| Edit Keys |
\*---------------------------------------------------------------------------------------------------------*/
{ 0, 3, 12, 0, KEY_EN_POUND, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 4, 1, 0, KEY_NORD_ANGLE_BRACKET, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 1, 0, 0, KEY_JP_CHEVRON, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 1, 11, 0, KEY_DE_ESZETT, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 1, 12, 0, KEY_EN_BACK_TICK, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 2, 6, 0, KEY_EN_Z, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 2, 11, 0, KEY_DE_DIAERESIS_U, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 2, 12, 0, KEY_EN_PLUS, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 2, 13, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 3, 10, 0, KEY_DE_DIAERESIS_O, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 3, 11, 0, KEY_DE_DIAERESIS_A, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 4, 2, 0, KEY_EN_Y, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 4, 11, 0, KEY_EN_MINUS, KEYBOARD_OPCODE_SWAP_ONLY, },
}
};
@ -273,21 +260,16 @@ keyboard_keymap_overlay jis
{
KEYBOARD_SIZE_FULL,
{
/*---------------------------------------------------------------------*\
| Insert Keys |
\*---------------------------------------------------------------------*/
},
{
/*---------------------------------------------------------------------*\
| Swap Keys |
\*---------------------------------------------------------------------*/
{ 0, 3, 12, 0, KEY_EN_RIGHT_BRACKET, },
{ 0, 4, 12, 0, KEY_EN_BACK_SLASH, },
{ 0, 1, 12, 0, KEY_JP_CHEVRON, },
{ 0, 2, 11, 0, KEY_JP_AT, },
{ 0, 2, 12, 0, KEY_EN_LEFT_BRACKET, },
{ 0, 3, 11, 0, KEY_JP_COLON, },
{ 0, 2, 13, 0, KEY_EN_UNUSED, },
/*---------------------------------------------------------------------------------------------------------*\
| Edit Keys |
\*---------------------------------------------------------------------------------------------------------*/
{ 0, 3, 12, 0, KEY_EN_RIGHT_BRACKET, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 4, 12, 0, KEY_EN_BACK_SLASH, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 1, 12, 0, KEY_JP_CHEVRON, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 2, 11, 0, KEY_JP_AT, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 2, 12, 0, KEY_EN_LEFT_BRACKET, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 3, 11, 0, KEY_JP_COLON, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 2, 13, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_SWAP_ONLY, },
}
};
@ -396,6 +378,10 @@ KeyboardLayoutManager::KeyboardLayoutManager(KEYBOARD_LAYOUT layout, KEYBOARD_SI
name = KEYBOARD_NAME_SIXTY;
break;
case KEYBOARD_SIZE::KEYBOARD_SIZE_SEVENTY_FIVE:
name = KEYBOARD_NAME_SEVENTY_FIVE;
break;
case KEYBOARD_SIZE::KEYBOARD_SIZE_TKL:
name = KEYBOARD_NAME_TKL;
break;
@ -404,6 +390,11 @@ KeyboardLayoutManager::KeyboardLayoutManager(KEYBOARD_LAYOUT layout, KEYBOARD_SI
name = KEYBOARD_NAME_FULL;
}
/*---------------------------------------------------------------------*\
| Ensure rows and cols are accurate by updating dimensions |
\*---------------------------------------------------------------------*/
UpdateDimensions();
LOG_INFO(LOG_MSG_CREATED_NEW, KLM_CLASS_NAME, name.c_str(), tmp_name.c_str(), rows, cols, keymap.size());
}
@ -412,42 +403,63 @@ KeyboardLayoutManager::~KeyboardLayoutManager()
}
void KeyboardLayoutManager::ChangeKeys(key_set edit_keys)
{
OpCodeSwitch(edit_keys);
}
void KeyboardLayoutManager::ChangeKeys(keyboard_keymap_overlay new_layout)
{
InsertKeys(new_layout.insert);
SwapKeys(new_layout.swap);
RemoveKeys(new_layout.remove);
UpdateDimensions();
OpCodeSwitch(new_layout.edit_keys);
}
void KeyboardLayoutManager::ChangeKeys(keyboard_keymap_overlay_values new_layout)
{
InsertKeys(new_layout.insert);
SwapKeys(new_layout.swap);
RemoveKeys(new_layout.remove);
OpCodeSwitch(new_layout.edit_keys);
}
void KeyboardLayoutManager::OpCodeSwitch(key_set change_keys)
{
LOG_DEBUG("[%s] %d keys to edit", KLM_CLASS_NAME, change_keys.size());
for(size_t chg_key_idx = 0; chg_key_idx < change_keys.size(); chg_key_idx++)
{
switch(change_keys[chg_key_idx].opcode)
{
case KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT:
InsertKey(change_keys[chg_key_idx]);
break;
case KEYBOARD_OPCODE_SWAP_ONLY:
SwapKey(change_keys[chg_key_idx]);
break;
case KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT:
RemoveKey(change_keys[chg_key_idx]);
break;
case KEYBOARD_OPCODE_INS_SHFT_ADJACENT:
//TODO: Insert, then find next unused and remove shift left
//SwapKey(change_keys[chg_key_idx]);
break;
default:
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);
}
}
UpdateDimensions();
}
void KeyboardLayoutManager::InsertKeys(std::vector<keyboard_led> ins_keys)
{
LOG_DEBUG("[%s] %d keys to insert", KLM_CLASS_NAME, ins_keys.size());
/*---------------------------------------------------------------------*\
| Ensure rows and cols are accurate by updating dimensions before insert|
\*---------------------------------------------------------------------*/
UpdateDimensions();
/*---------------------------------------------------------------------*\
| Insert new keys one by one |
\*---------------------------------------------------------------------*/
for(unsigned int ins_key_idx = 0; ins_key_idx < ins_keys.size(); ins_key_idx++)
void KeyboardLayoutManager::InsertKey(keyboard_led ins_key)
{
/*---------------------------------------------------------------------*\
| Get the insertion point |
\*---------------------------------------------------------------------*/
unsigned int ins_row = ins_keys[ins_key_idx].row;
unsigned int ins_col = ins_keys[ins_key_idx].col;
const char* ins_name = ins_keys[ins_key_idx].name;
unsigned int ins_row = ins_key.row;
unsigned int ins_col = ins_key.col;
const char* ins_name = ins_key.name;
unsigned int key_idx = 0;
@ -474,7 +486,7 @@ void KeyboardLayoutManager::InsertKeys(std::vector<keyboard_led> ins_keys)
if(key_idx == keymap.size())
{
LOG_DEBUG(LOG_MSG_INSERT_BEFORE, KLM_CLASS_NAME, ins_name, "the end", ins_row, ins_col, KEY_EN_UNUSED);
keymap.push_back(ins_keys[ins_key_idx]);
keymap.push_back(ins_key);
update_row = false;
}
@ -490,7 +502,7 @@ void KeyboardLayoutManager::InsertKeys(std::vector<keyboard_led> ins_keys)
else
{
LOG_DEBUG(LOG_MSG_INSERT_BEFORE, KLM_CLASS_NAME, ins_name, keymap[key_idx].name, ins_row, ins_col, KEY_EN_UNUSED);
keymap.insert(keymap.begin() + key_idx, ins_keys[ins_key_idx]);
keymap.insert(keymap.begin() + key_idx, ins_key);
key_idx++;
}
@ -516,36 +528,41 @@ void KeyboardLayoutManager::InsertKeys(std::vector<keyboard_led> ins_keys)
}
}
void KeyboardLayoutManager::InsertKeys(std::vector<keyboard_led> ins_keys)
{
LOG_DEBUG("[%s] %d keys to insert", KLM_CLASS_NAME, ins_keys.size());
/*---------------------------------------------------------------------*\
| Insert new keys one by one |
\*---------------------------------------------------------------------*/
for(unsigned int ins_key_idx = 0; ins_key_idx < ins_keys.size(); ins_key_idx++)
{
InsertKey(ins_keys[ins_key_idx]);
}
/*---------------------------------------------------------------------*\
| Ensure rows and cols are accurate by updating dimensions after insert |
\*---------------------------------------------------------------------*/
UpdateDimensions();
}
void KeyboardLayoutManager::SwapKeys(std::vector<keyboard_led> swp_keys)
{
LOG_DEBUG("[%s] %d keys to swap", KLM_CLASS_NAME, swp_keys.size());
/*---------------------------------------------------------------------*\
| Swap keys one by one |
\*---------------------------------------------------------------------*/
for(unsigned int swp_key_idx = 0; swp_key_idx < swp_keys.size(); swp_key_idx++)
void KeyboardLayoutManager::SwapKey(keyboard_led swp_key)
{
/*---------------------------------------------------------------------*\
| Get the swap point |
\*---------------------------------------------------------------------*/
unsigned int swp_row = swp_keys[swp_key_idx].row;
unsigned int swp_col = swp_keys[swp_key_idx].col;
const char* swp_name = swp_keys[swp_key_idx].name;
unsigned int swp_value = swp_keys[swp_key_idx].value;
unsigned int swp_row = swp_key.row;
unsigned int swp_col = swp_key.col;
const char* swp_name = swp_key.name;
unsigned int swp_value = swp_key.value;
/*---------------------------------------------------------------------*\
| If the keymap is empty, insert the key |
\*---------------------------------------------------------------------*/
if(keymap.size() == 0)
{
keymap.push_back(swp_keys[swp_key_idx]);
break;
keymap.push_back(swp_key);
return;
}
/*---------------------------------------------------------------------*\
@ -597,28 +614,33 @@ void KeyboardLayoutManager::SwapKeys(std::vector<keyboard_led> swp_keys)
if(strlen(swp_name) != 0)
{
LOG_DEBUG(LOG_MSG_INSERT_BEFORE, KLM_CLASS_NAME, swp_name, keymap[key_idx].name, swp_row, swp_col, KEY_EN_UNUSED);
keymap.insert(keymap.begin() + (key_idx - 1), swp_keys[swp_key_idx]);
keymap.insert(keymap.begin() + (key_idx - 1), swp_key);
}
break;
}
}
}
void KeyboardLayoutManager::SwapKeys(std::vector<keyboard_led> swp_keys)
{
LOG_DEBUG("[%s] %d keys to swap", KLM_CLASS_NAME, swp_keys.size());
/*---------------------------------------------------------------------*\
| Swap keys one by one |
\*---------------------------------------------------------------------*/
for(unsigned int swp_key_idx = 0; swp_key_idx < swp_keys.size(); swp_key_idx++)
{
SwapKey(swp_keys[swp_key_idx]);
}
}
void KeyboardLayoutManager::RemoveKeys(std::vector<keyboard_led> rmv_keys)
{
/*---------------------------------------------------------------------*\
| Remove keys one by one |
\*---------------------------------------------------------------------*/
for(unsigned int rmv_key_idx = 0; rmv_key_idx < rmv_keys.size(); rmv_key_idx++)
void KeyboardLayoutManager::RemoveKey(keyboard_led rmv_key)
{
/*---------------------------------------------------------------------*\
| Get the remove point |
\*---------------------------------------------------------------------*/
unsigned int rmv_row = rmv_keys[rmv_key_idx].row;
unsigned int rmv_col = rmv_keys[rmv_key_idx].col;
const char* rmv_name = rmv_keys[rmv_key_idx].name;
unsigned int rmv_value = rmv_keys[rmv_key_idx].value;
unsigned int rmv_row = rmv_key.row;
unsigned int rmv_col = rmv_key.col;
/*---------------------------------------------------------------------*\
| Loop through and find the entry to remove |
@ -668,7 +690,6 @@ void KeyboardLayoutManager::RemoveKeys(std::vector<keyboard_led> rmv_keys)
}
}
}
}
std::string KeyboardLayoutManager::GetName()

View file

@ -17,6 +17,7 @@ extern const char* KLM_CLASS_NAME;
extern const char* KEYBOARD_NAME_FULL;
extern const char* KEYBOARD_NAME_TKL;
extern const char* KEYBOARD_NAME_SIXTY;
extern const char* KEYBOARD_NAME_SEVENTY_FIVE;
extern const char* LOG_MSG_UNUSED_KEY;
enum KEYBOARD_ZONE_BITS
@ -30,8 +31,10 @@ enum KEYBOARD_ZONE_BITS
enum KEYBOARD_SIZE
{
KEYBOARD_SIZE_EMPTY = 0,
KEYBOARD_SIZE_FULL = ( KEYBOARD_ZONE_MAIN | KEYBOARD_ZONE_FN_ROW | KEYBOARD_ZONE_EXTRA | KEYBOARD_ZONE_NUMPAD ),
KEYBOARD_SIZE_FULL = ( KEYBOARD_ZONE_MAIN | KEYBOARD_ZONE_FN_ROW |
KEYBOARD_ZONE_EXTRA | KEYBOARD_ZONE_NUMPAD ),
KEYBOARD_SIZE_TKL = ( KEYBOARD_ZONE_MAIN | KEYBOARD_ZONE_FN_ROW | KEYBOARD_ZONE_EXTRA ),
KEYBOARD_SIZE_SEVENTY_FIVE = ( KEYBOARD_ZONE_MAIN | KEYBOARD_ZONE_FN_ROW ),
KEYBOARD_SIZE_SIXTY = ( KEYBOARD_ZONE_MAIN ),
};
@ -51,6 +54,14 @@ enum KEYBOARD_MAP_FILL_TYPE
KEYBOARD_MAP_FILL_TYPE_VALUE,
};
enum KEYBOARD_OPCODE
{
KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT = 0,
KEYBOARD_OPCODE_SWAP_ONLY = 1,
KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT = 2,
KEYBOARD_OPCODE_INS_SHFT_ADJACENT = 3,
};
typedef struct
{
uint8_t zone;
@ -58,6 +69,7 @@ typedef struct
uint8_t col;
unsigned int value;
const char* name;
KEYBOARD_OPCODE opcode;
} keyboard_led;
typedef
@ -72,18 +84,14 @@ typedef struct
typedef struct
{
KEYBOARD_SIZE base_size;
key_set insert;
key_set swap;
key_set remove;
key_set edit_keys;
} keyboard_keymap_overlay;
typedef struct
{
KEYBOARD_SIZE base_size;
layout_values key_values;
key_set insert;
key_set swap;
key_set remove;
key_set edit_keys;
} keyboard_keymap_overlay_values;
class KeyboardLayoutManager
@ -93,10 +101,9 @@ public:
KeyboardLayoutManager(KEYBOARD_LAYOUT, KEYBOARD_SIZE, layout_values values);
~KeyboardLayoutManager();
void ChangeKeys(key_set edit_keys);
void ChangeKeys(keyboard_keymap_overlay new_layout);
void ChangeKeys(keyboard_keymap_overlay_values new_layout);
void InsertKeys(std::vector<keyboard_led> keys);
void SwapKeys(std::vector<keyboard_led> keys);
void UpdateDimensions();
std::string GetName();
@ -119,7 +126,12 @@ public:
uint8_t height, uint8_t width);
private:
void RemoveKeys(std::vector<keyboard_led> keys);
void OpCodeSwitch(key_set change_keys);
void InsertKey(keyboard_led key);
void InsertKeys(std::vector<keyboard_led> keys);
void SwapKey(keyboard_led keys);
void SwapKeys(std::vector<keyboard_led> keys);
void RemoveKey(keyboard_led keys);
KEYBOARD_LAYOUT layout;
KEYBOARD_SIZE physical_size;