Merge remote-tracking branch 'origin/develop' into xap

This commit is contained in:
QMK Bot 2022-05-20 00:39:32 +00:00
commit 8356cb615f
2 changed files with 34 additions and 1 deletions

View File

@ -87,7 +87,7 @@ bool process_caps_word(uint16_t keycode, keyrecord_t* record) {
return true;
}
if (!(mods & ~MOD_MASK_SHIFT)) {
if (!(mods & ~(MOD_MASK_SHIFT | MOD_BIT(KC_RALT)))) {
switch (keycode) {
// Ignore MO, TO, TG, TT, and OSL layer switch keys.
case QK_MOMENTARY ... QK_MOMENTARY_MAX:
@ -95,6 +95,9 @@ bool process_caps_word(uint16_t keycode, keyrecord_t* record) {
case QK_TOGGLE_LAYER ... QK_TOGGLE_LAYER_MAX:
case QK_LAYER_TAP_TOGGLE ... QK_LAYER_TAP_TOGGLE_MAX:
case QK_ONE_SHOT_LAYER ... QK_ONE_SHOT_LAYER_MAX:
// Ignore AltGr.
case KC_RALT:
case OSM(MOD_RALT):
return true;
#ifndef NO_ACTION_TAPPING

View File

@ -212,6 +212,36 @@ TEST_F(CapsWord, SpaceTurnsOffCapsWord) {
testing::Mock::VerifyAndClearExpectations(&driver);
}
// Tests that typing "AltGr + A" produces "Shift + AltGr + A".
TEST_F(CapsWord, ShiftsAltGrSymbols) {
TestDriver driver;
KeymapKey key_a(0, 0, 0, KC_A);
KeymapKey key_altgr(0, 1, 0, KC_RALT);
set_keymap({key_a, key_altgr});
// Allow any number of reports with no keys or only modifiers.
// clang-format off
EXPECT_CALL(driver, send_keyboard_mock(AnyOf(
KeyboardReport(),
KeyboardReport(KC_RALT),
KeyboardReport(KC_LSFT, KC_RALT))))
.Times(AnyNumber());
// Expect "Shift + AltGr + A, Space".
EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LSFT, KC_RALT, KC_A)));
// clang-format on
// Turn on Caps Word and type "AltGr + A".
caps_word_on();
key_altgr.press();
run_one_scan_loop();
TapKeys(key_a);
run_one_scan_loop();
key_altgr.release();
testing::Mock::VerifyAndClearExpectations(&driver);
}
struct CapsWordBothShiftsParams {
std::string name;
uint16_t left_shift_keycode;