summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Kerkmann <karlk90@pm.me>2022-08-06 12:51:13 +0200
committerGitHub <noreply@github.com>2022-08-06 20:51:13 +1000
commitf27b617f36d55ac5469247016a1b79304f892366 (patch)
tree3334b3b4cf653fa131eef0729529c06450e12168
parente9f9f99a3374ad46e9a2baf2fe35c3f1d0715d4b (diff)
[Core] Process all changed keys in one scan loop, deprecate `QMK_KEYS_PER_SCAN` (#15292)
-rw-r--r--data/mappings/info_config.json2
-rw-r--r--docs/config_options.md9
-rw-r--r--docs/ja/config_options.md2
-rw-r--r--keyboards/40percentclub/gherkin/keymaps/stevexyz/config.h2
-rw-r--r--keyboards/ai03/jp60/keymaps/default/config.h20
-rw-r--r--keyboards/ai03/jp60/keymaps/via/config.h20
-rw-r--r--keyboards/bioi/morgan65/config.h2
-rw-r--r--keyboards/doio/kb16/config.h3
-rw-r--r--keyboards/dztech/dz60rgb/keymaps/kgreulich/config.h2
-rw-r--r--keyboards/dztech/dz60rgb/keymaps/matthewrobo/config.h2
-rw-r--r--keyboards/dztech/dz60rgb/keymaps/xunz/config.h2
-rw-r--r--keyboards/dztech/dz65rgb/keymaps/matthewrobo/config.h2
-rw-r--r--keyboards/dztech/dz65rgb/keymaps/yuannan/config.h2
-rw-r--r--keyboards/ergodox_ez/keymaps/dvorak_42_key/keymap.c2
-rw-r--r--keyboards/ergodox_ez/keymaps/hacker_dvorak/config.h1
-rw-r--r--keyboards/ergodox_ez/keymaps/rgb_layer/config.h6
-rw-r--r--keyboards/ergodox_ez/keymaps/rmw/config.h1
-rw-r--r--keyboards/eternal_keypad/keymaps/kyek/config.h2
-rw-r--r--keyboards/gmmk/gmmk2/p96/config.h4
-rw-r--r--keyboards/gmmk/pro/config.h3
-rw-r--r--keyboards/gopolar/gg86/config.h3
-rw-r--r--keyboards/handwired/marauder/config.h2
-rw-r--r--keyboards/handwired/xealous/config.h1
-rw-r--r--keyboards/horrortroll/chinese_pcb/black_e65/config.h3
-rw-r--r--keyboards/horrortroll/chinese_pcb/devil68_pro/config.h3
-rw-r--r--keyboards/horrortroll/handwired_k552/config.h3
-rw-r--r--keyboards/horrortroll/lemon40/config.h3
-rw-r--r--keyboards/horrortroll/paws60/config.h3
-rw-r--r--keyboards/ianklug/grooveboard/config.h2
-rw-r--r--keyboards/jadookb/jkb2/keymaps/via/config.h19
-rw-r--r--keyboards/jadookb/jkb65/keymaps/via/config.h19
-rw-r--r--keyboards/kbdfans/kbd67/mkiirgb/keymaps/dnsnrk/config.h2
-rw-r--r--keyboards/kbdfans/kbd67/mkiirgb/keymaps/pascalpfeil/config.h3
-rw-r--r--keyboards/keystonecaps/gameroyadvance/config.h4
-rw-r--r--keyboards/kprepublic/bm40hsrgb/keymaps/34keys/config.h5
-rw-r--r--keyboards/kprepublic/bm40hsrgb/keymaps/gabustoledo/config.h3
-rw-r--r--keyboards/kprepublic/bm68hsrgb/rev1/keymaps/peepeetee/config.h1
-rw-r--r--keyboards/kprepublic/bm80hsrgb/keymaps/peepeetee/config.h1
-rw-r--r--keyboards/kprepublic/jj40/keymaps/stevexyz/config.h2
-rw-r--r--keyboards/lets_split/keymaps/piemod/config.h3
-rw-r--r--keyboards/lfkeyboards/lfkpad/keymaps/pascalpfeil/config.h3
-rw-r--r--keyboards/maple_computing/minidox/keymaps/norman/config.h1
-rw-r--r--keyboards/massdrop/alt/keymaps/b_/config.h1
-rw-r--r--keyboards/massdrop/alt/keymaps/pregame/config.h1
-rw-r--r--keyboards/massdrop/ctrl/keymaps/endgame/config.h1
-rw-r--r--keyboards/massdrop/ctrl/keymaps/matthewrobo/config.h1
-rw-r--r--keyboards/massdrop/ctrl/keymaps/xanimos/config.h1
-rw-r--r--keyboards/ml/gas75/config.h3
-rw-r--r--keyboards/mmkzoo65/config.h1
-rw-r--r--keyboards/mss_studio/m63_rgb/config.h3
-rw-r--r--keyboards/mss_studio/m64_rgb/config.h3
-rw-r--r--keyboards/mwstudio/mw65_rgb/keymaps/horrortroll/config.h4
-rw-r--r--keyboards/mwstudio/mw65_rgb/keymaps/thearesia/config.h4
-rw-r--r--keyboards/pierce/keymaps/durken1/config.h4
-rw-r--r--keyboards/rgbkb/zen/rev1/keymaps/cwebster2/config.h2
-rw-r--r--keyboards/sanctified/dystopia/config.h2
-rw-r--r--keyboards/signum/3_0/keymaps/sgurenkov/config.h3
-rw-r--r--keyboards/skme/zeno/config.h3
-rw-r--r--keyboards/sofle/keymaps/killmaster/config.h1
-rw-r--r--keyboards/splitkb/kyria/keymaps/cwebster2/config.h2
-rw-r--r--keyboards/synthlabs/solo/config.h2
-rw-r--r--keyboards/xelus/dharma/keymaps/default/config.h18
-rw-r--r--keyboards/xelus/dharma/keymaps/via/config.h18
-rw-r--r--keyboards/xelus/kangaroo/keymaps/default/config.h18
-rw-r--r--keyboards/xelus/kangaroo/keymaps/via/config.h18
-rw-r--r--keyboards/xelus/la_plus/keymaps/default/config.h19
-rw-r--r--keyboards/xelus/la_plus/keymaps/via/config.h2
-rw-r--r--keyboards/xelus/pachi/mini_32u4/keymaps/default/config.h18
-rw-r--r--keyboards/xelus/pachi/mini_32u4/keymaps/via/config.h2
-rw-r--r--keyboards/xelus/pachi/rev1/keymaps/default/config.h18
-rw-r--r--keyboards/xelus/pachi/rev1/keymaps/via/config.h2
-rw-r--r--keyboards/xelus/pachi/rgb/keymaps/default/config.h18
-rw-r--r--keyboards/xelus/pachi/rgb/keymaps/via/config.h2
-rw-r--r--keyboards/xelus/rs60/keymaps/default/config.h18
-rw-r--r--keyboards/xelus/rs60/keymaps/via/config.h18
-rw-r--r--keyboards/xelus/valor/rev2/keymaps/default/config.h18
-rw-r--r--keyboards/xelus/valor/rev2/keymaps/via/config.h2
-rw-r--r--keyboards/xelus/valor_frl_tkl/keymaps/default/config.h18
-rw-r--r--keyboards/xelus/valor_frl_tkl/keymaps/via/config.h18
-rw-r--r--keyboards/xelus/xs60/keymaps/default/config.h18
-rw-r--r--keyboards/xelus/xs60/keymaps/via/config.h2
-rw-r--r--keyboards/xiudi/xd75/keymaps/tdl-jturner/config.h1
-rw-r--r--layouts/community/65_ansi_blocker/brandonschlack/config.h2
-rw-r--r--layouts/community/65_ansi_blocker_split_bs/brandonschlack-split/config.h2
-rw-r--r--quantum/keyboard.c138
-rw-r--r--quantum/keyboard.h8
-rw-r--r--tests/basic/test_keypress.cpp22
-rw-r--r--tests/tap_dance/test_examples.cpp3
-rw-r--r--users/curry/config.h4
-rw-r--r--users/drashna/post_config.h4
-rwxr-xr-xusers/ishtob/config.h1
-rw-r--r--users/issmirnov/config.h3
-rw-r--r--users/kuchosauronad0/config.h4
-rw-r--r--users/miles2go/config.h4
-rw-r--r--users/yet-another-developer/config.h4
-rw-r--r--users/zer09/config.h4
96 files changed, 86 insertions, 603 deletions
diff --git a/data/mappings/info_config.json b/data/mappings/info_config.json
index 3891ef6437..d03f50c51e 100644
--- a/data/mappings/info_config.json
+++ b/data/mappings/info_config.json
@@ -82,7 +82,6 @@
82 "VENDOR_ID": {"info_key": "usb.vid", "value_type": "hex"}, 82 "VENDOR_ID": {"info_key": "usb.vid", "value_type": "hex"},
83 "QMK_ESC_OUTPUT": {"info_key": "qmk_lufa_bootloader.esc_output"}, 83 "QMK_ESC_OUTPUT": {"info_key": "qmk_lufa_bootloader.esc_output"},
84 "QMK_ESC_INPUT": {"info_key": "qmk_lufa_bootloader.esc_input"}, 84 "QMK_ESC_INPUT": {"info_key": "qmk_lufa_bootloader.esc_input"},
85 "QMK_KEYS_PER_SCAN": {"info_key": "qmk.keys_per_scan", "value_type": "int"},
86 "QMK_LED": {"info_key": "qmk_lufa_bootloader.led"}, 85 "QMK_LED": {"info_key": "qmk_lufa_bootloader.led"},
87 "QMK_SPEAKER": {"info_key": "qmk_lufa_bootloader.speaker"}, 86 "QMK_SPEAKER": {"info_key": "qmk_lufa_bootloader.speaker"},
88 "SECURE_UNLOCK_SEQUENCE": {"info_key": "secure.unlock_sequence", "value_type": "array.array.int", "to_json": false}, 87 "SECURE_UNLOCK_SEQUENCE": {"info_key": "secure.unlock_sequence", "value_type": "array.array.int", "to_json": false},
@@ -114,4 +113,5 @@
114 "DEBOUNCING_DELAY": {"info_key": "_invalid.debouncing_delay", "invalid": true}, 113 "DEBOUNCING_DELAY": {"info_key": "_invalid.debouncing_delay", "invalid": true},
115 "PREVENT_STUCK_MODIFIERS": {"info_key": "_invalid.prevent_stuck_mods", "invalid": true}, 114 "PREVENT_STUCK_MODIFIERS": {"info_key": "_invalid.prevent_stuck_mods", "invalid": true},
116 "RGBLIGHT_ANIMATIONS": {"info_key": "rgblight.animations.all", "value_type": "bool", "deprecated": true}, 115 "RGBLIGHT_ANIMATIONS": {"info_key": "rgblight.animations.all", "value_type": "bool", "deprecated": true},
116 "QMK_KEYS_PER_SCAN": {"info_key": "qmk.keys_per_scan", "value_type": "int", "deprecated": true},
117} 117}
diff --git a/docs/config_options.md b/docs/config_options.md
index f50748b950..c0a150e405 100644
--- a/docs/config_options.md
+++ b/docs/config_options.md
@@ -182,15 +182,6 @@ If you define these options you will enable the associated feature, which may in
182 * how long before oneshot times out 182 * how long before oneshot times out
183* `#define ONESHOT_TAP_TOGGLE 2` 183* `#define ONESHOT_TAP_TOGGLE 2`
184 * how many taps before oneshot toggle is triggered 184 * how many taps before oneshot toggle is triggered
185* `#define QMK_KEYS_PER_SCAN 4`
186 * Allows sending more than one key per scan. By default, only one key event gets
187 sent via `process_record()` per scan. This has little impact on most typing, but
188 if you're doing a lot of chords, or your scan rate is slow to begin with, you can
189 have some delay in processing key events. Each press and release is a separate
190 event. For a keyboard with 1ms or so scan times, even a very fast typist isn't
191 going to produce the 500 keystrokes a second needed to actually get more than a
192 few ms of delay from this. But if you're doing chording on something with 3-4ms
193 scan times? You probably want this.
194* `#define COMBO_COUNT 2` 185* `#define COMBO_COUNT 2`
195 * Set this to the number of combos that you're using in the [Combo](feature_combo.md) feature. Or leave it undefined and programmatically set the count. 186 * Set this to the number of combos that you're using in the [Combo](feature_combo.md) feature. Or leave it undefined and programmatically set the count.
196* `#define COMBO_TERM 200` 187* `#define COMBO_TERM 200`
diff --git a/docs/ja/config_options.md b/docs/ja/config_options.md
index 5236230a10..c95753bd5d 100644
--- a/docs/ja/config_options.md
+++ b/docs/ja/config_options.md
@@ -181,8 +181,6 @@ QMK での全ての利用可能な設定にはデフォルトがあります。
181 * ワンショットがタイムアウトするまでの時間 181 * ワンショットがタイムアウトするまでの時間
182* `#define ONESHOT_TAP_TOGGLE 2` 182* `#define ONESHOT_TAP_TOGGLE 2`
183 * ワンショットトグルが引き起こされるまでのタップ数 183 * ワンショットトグルが引き起こされるまでのタップ数
184* `#define QMK_KEYS_PER_SCAN 4`
185 * 走査ごとに1つ以上のキーを送信できるようにします。デフォルトでは、走査ごとに `process_record()` 経由で1つのキーイベントのみが送信されます。これはほとんどのタイピングにほとんど影響しませんが、多くのコードを入力しているか、走査レートが最初から遅い場合、キーイベントの処理に多少の遅延が生じる可能性があります。それぞれのプレスとリリースは別のイベントです。スキャン時間が 1ms 程度のキーボードの場合、とても高速なタイピストでさえ、実際にキーボードから数 ms 以上の遅延を発生させるのに必要な 500 キーストロークを1秒間に生成することはないでしょう。しかし、3~4ms の走査時間でコードを入力している場合はどうでしょうか?おそらくこれが必要です。
186* `#define COMBO_COUNT 2` 184* `#define COMBO_COUNT 2`
187 * [コンボ](ja/feature_combo.md)機能で使っているコンボの数にこれを設定します。 185 * [コンボ](ja/feature_combo.md)機能で使っているコンボの数にこれを設定します。
188* `#define COMBO_TERM 200` 186* `#define COMBO_TERM 200`
diff --git a/keyboards/40percentclub/gherkin/keymaps/stevexyz/config.h b/keyboards/40percentclub/gherkin/keymaps/stevexyz/config.h
index c708babf16..d837be8ba1 100644
--- a/keyboards/40percentclub/gherkin/keymaps/stevexyz/config.h
+++ b/keyboards/40percentclub/gherkin/keymaps/stevexyz/config.h
@@ -39,8 +39,6 @@
39 // how long before oneshot times out 39 // how long before oneshot times out
40 #define ONESHOT_TAP_TOGGLE 2 40 #define ONESHOT_TAP_TOGGLE 2
41 // how many taps before oneshot toggle is triggered 41 // how many taps before oneshot toggle is triggered
42 #define QMK_KEYS_PER_SCAN 4
43 // Allows sending more than one key per scan. By default, only one key event gets sent via process_record() per scan. This has little impact on most typing, but if you're doing a lot of chords, or your scan rate is slow to begin with, you can have some delay in processing key events. Each press and release is a separate event. For a keyboard with 1ms or so scan times, even a very fast typist isn't going to produce the 500 keystrokes a second needed to actually get more than a few ms of delay from this. But if you're doing chording on something with 3-4ms scan times? You probably want this.
44 #define COMBO_COUNT 2 42 #define COMBO_COUNT 2
45 // Set this to the number of combos that you're using in the Combo feature. 43 // Set this to the number of combos that you're using in the Combo feature.
46 #define COMBO_TERM 200 44 #define COMBO_TERM 200
diff --git a/keyboards/ai03/jp60/keymaps/default/config.h b/keyboards/ai03/jp60/keymaps/default/config.h
deleted file mode 100644
index 9e0623524a..0000000000
--- a/keyboards/ai03/jp60/keymaps/default/config.h
+++ /dev/null
@@ -1,20 +0,0 @@
1/* Copyright 2021 ai03
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16
17#pragma once
18
19/* Increase scan quantity for improved performance */
20#define QMK_KEYS_PER_SCAN 12
diff --git a/keyboards/ai03/jp60/keymaps/via/config.h b/keyboards/ai03/jp60/keymaps/via/config.h
deleted file mode 100644
index 9e0623524a..0000000000
--- a/keyboards/ai03/jp60/keymaps/via/config.h
+++ /dev/null
@@ -1,20 +0,0 @@
1/* Copyright 2021 ai03
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16
17#pragma once
18
19/* Increase scan quantity for improved performance */
20#define QMK_KEYS_PER_SCAN 12
diff --git a/keyboards/bioi/morgan65/config.h b/keyboards/bioi/morgan65/config.h
index e4ad58c3a7..2ce3c7a56b 100644
--- a/keyboards/bioi/morgan65/config.h
+++ b/keyboards/bioi/morgan65/config.h
@@ -37,8 +37,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
37#define MATRIX_ROW_PINS { E6, C6, F4, B2, D4 } 37#define MATRIX_ROW_PINS { E6, C6, F4, B2, D4 }
38#define MATRIX_COL_PINS { F5, F6, F7, C7, B0, B7, B5, D5, B4, D7, D6, D1, D0, B3 } 38#define MATRIX_COL_PINS { F5, F6, F7, C7, B0, B7, B5, D5, B4, D7, D6, D1, D0, B3 }
39 39
40//#define QMK_KEYS_PER_SCAN 4
41
42/* Backlight Setup */ 40/* Backlight Setup */
43#define BACKLIGHT_PIN B6 41#define BACKLIGHT_PIN B6
44#define BACKLIGHT_LEVELS 12 42#define BACKLIGHT_LEVELS 12
diff --git a/keyboards/doio/kb16/config.h b/keyboards/doio/kb16/config.h
index 043a492006..911ba9d3d5 100644
--- a/keyboards/doio/kb16/config.h
+++ b/keyboards/doio/kb16/config.h
@@ -39,9 +39,6 @@
39/* Forcing to use NKRO instead 6KRO */ 39/* Forcing to use NKRO instead 6KRO */
40#define FORCE_NKRO 40#define FORCE_NKRO
41 41
42/* Larger keys per scan */
43#define QMK_KEYS_PER_SCAN 12
44
45/* Use the custom font */ 42/* Use the custom font */
46#define OLED_FONT_H "lib/glcdfont.c" 43#define OLED_FONT_H "lib/glcdfont.c"
47 44
diff --git a/keyboards/dztech/dz60rgb/keymaps/kgreulich/config.h b/keyboards/dztech/dz60rgb/keymaps/kgreulich/config.h
index fc836b5ebb..e3250acef1 100644
--- a/keyboards/dztech/dz60rgb/keymaps/kgreulich/config.h
+++ b/keyboards/dztech/dz60rgb/keymaps/kgreulich/config.h
@@ -7,8 +7,6 @@
7#define TAP_HOLD_CAPS_DELAY 0 7#define TAP_HOLD_CAPS_DELAY 0
8#define USB_POLLING_INTERVAL_MS 1 8#define USB_POLLING_INTERVAL_MS 1
9 9
10#define QMK_KEYS_PER_SCAN 4
11
12// some speed shit 10// some speed shit
13#define NO_ACTION_MACRO 11#define NO_ACTION_MACRO
14#define NO_ACTION_FUNCTION 12#define NO_ACTION_FUNCTION
diff --git a/keyboards/dztech/dz60rgb/keymaps/matthewrobo/config.h b/keyboards/dztech/dz60rgb/keymaps/matthewrobo/config.h
index c2b14f5284..ca64eeb69b 100644
--- a/keyboards/dztech/dz60rgb/keymaps/matthewrobo/config.h
+++ b/keyboards/dztech/dz60rgb/keymaps/matthewrobo/config.h
@@ -51,8 +51,6 @@
51// #undef ENABLE_RGB_MATRIX_SOLID_SPLASH 51// #undef ENABLE_RGB_MATRIX_SOLID_SPLASH
52// #undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH 52// #undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
53 53
54#define QMK_KEYS_PER_SCAN 4
55
56// #define RGB_MATRIX_KEYRELEASES 54// #define RGB_MATRIX_KEYRELEASES
57 55
58// some speed shit 56// some speed shit
diff --git a/keyboards/dztech/dz60rgb/keymaps/xunz/config.h b/keyboards/dztech/dz60rgb/keymaps/xunz/config.h
index cfeba003bd..2fdb3e5f4c 100644
--- a/keyboards/dztech/dz60rgb/keymaps/xunz/config.h
+++ b/keyboards/dztech/dz60rgb/keymaps/xunz/config.h
@@ -46,8 +46,6 @@
46// #undef ENABLE_RGB_MATRIX_SOLID_SPLASH 46// #undef ENABLE_RGB_MATRIX_SOLID_SPLASH
47// #undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH 47// #undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
48 48
49#define QMK_KEYS_PER_SCAN 4
50
51// #define RGB_MATRIX_KEYRELEASES 49// #define RGB_MATRIX_KEYRELEASES
52 50
53#define NO_ACTION_ONESHOT 51#define NO_ACTION_ONESHOT
diff --git a/keyboards/dztech/dz65rgb/keymaps/matthewrobo/config.h b/keyboards/dztech/dz65rgb/keymaps/matthewrobo/config.h
index 586e5765aa..25842ac186 100644
--- a/keyboards/dztech/dz65rgb/keymaps/matthewrobo/config.h
+++ b/keyboards/dztech/dz65rgb/keymaps/matthewrobo/config.h
@@ -47,8 +47,6 @@
47// #undef ENABLE_RGB_MATRIX_SOLID_SPLASH 47// #undef ENABLE_RGB_MATRIX_SOLID_SPLASH
48// #undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH 48// #undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
49 49
50#define QMK_KEYS_PER_SCAN 4
51
52// #define RGB_MATRIX_KEYRELEASES 50// #define RGB_MATRIX_KEYRELEASES
53 51
54// some speed shit 52// some speed shit
diff --git a/keyboards/dztech/dz65rgb/keymaps/yuannan/config.h b/keyboards/dztech/dz65rgb/keymaps/yuannan/config.h
index 0a005cbca3..ef5023f8c6 100644
--- a/keyboards/dztech/dz65rgb/keymaps/yuannan/config.h
+++ b/keyboards/dztech/dz65rgb/keymaps/yuannan/config.h
@@ -30,8 +30,6 @@
30#define RGB_MATRIX_VAL_STEP 8 30#define RGB_MATRIX_VAL_STEP 8
31#define RGB_MATRIX_SPD_STEP 8 31#define RGB_MATRIX_SPD_STEP 8
32 32
33//#define QMK_KEYS_PER_SCAN 12nn
34
35#define MOUSEKEY_DELAY 0 33#define MOUSEKEY_DELAY 0
36#define MOUSEKEY_INTERVAL 1 34#define MOUSEKEY_INTERVAL 1
37#define MOUSEKEY_MOVE_DELTA 1 35#define MOUSEKEY_MOVE_DELTA 1
diff --git a/keyboards/ergodox_ez/keymaps/dvorak_42_key/keymap.c b/keyboards/ergodox_ez/keymaps/dvorak_42_key/keymap.c
index ff9ae77bdd..93b82df8cf 100644
--- a/keyboards/ergodox_ez/keymaps/dvorak_42_key/keymap.c
+++ b/keyboards/ergodox_ez/keymaps/dvorak_42_key/keymap.c
@@ -20,8 +20,6 @@
20// debounce settings 20// debounce settings
21// remove these after getting a new keyboard 21// remove these after getting a new keyboard
22// #define DEBOUNCE 50 22// #define DEBOUNCE 50
23// #define QMK_KEYS_PER_SCAN 4
24
25 23
26enum custom_keycodes { 24enum custom_keycodes {
27 PLACEHOLDER = SAFE_RANGE, // can always be here 25 PLACEHOLDER = SAFE_RANGE, // can always be here
diff --git a/keyboards/ergodox_ez/keymaps/hacker_dvorak/config.h b/keyboards/ergodox_ez/keymaps/hacker_dvorak/config.h
index c35963d842..acd3a44e16 100644
--- a/keyboards/ergodox_ez/keymaps/hacker_dvorak/config.h
+++ b/keyboards/ergodox_ez/keymaps/hacker_dvorak/config.h
@@ -25,7 +25,6 @@
25 25
26#define LEADER_TIMEOUT 1000 26#define LEADER_TIMEOUT 1000
27#define PERMISSIVE_HOLD 27#define PERMISSIVE_HOLD
28#define QMK_KEYS_PER_SCAN 4
29#define DANCING_TERM 175 28#define DANCING_TERM 175
30 29
31#define ONESHOT_TAP_TOGGLE 5 30#define ONESHOT_TAP_TOGGLE 5
diff --git a/keyboards/ergodox_ez/keymaps/rgb_layer/config.h b/keyboards/ergodox_ez/keymaps/rgb_layer/config.h
index 1913a2d369..84c5adfc9e 100644
--- a/keyboards/ergodox_ez/keymaps/rgb_layer/config.h
+++ b/keyboards/ergodox_ez/keymaps/rgb_layer/config.h
@@ -2,13 +2,9 @@
2#define KEYMAP_CONFIG_H 2#define KEYMAP_CONFIG_H
3 3
4 4
5 #define RGBLIGHT_SLEEP 5#define RGBLIGHT_SLEEP
6 6
7 7
8#ifndef QMK_KEYS_PER_SCAN
9#define QMK_KEYS_PER_SCAN 4
10#endif // !QMK_KEYS_PER_SCAN
11
12#define IGNORE_MOD_TAP_INTERRUPT 8#define IGNORE_MOD_TAP_INTERRUPT
13#undef PERMISSIVE_HOLD 9#undef PERMISSIVE_HOLD
14 10
diff --git a/keyboards/ergodox_ez/keymaps/rmw/config.h b/keyboards/ergodox_ez/keymaps/rmw/config.h
index 1ecf8b8b79..1b7528a4a7 100644
--- a/keyboards/ergodox_ez/keymaps/rmw/config.h
+++ b/keyboards/ergodox_ez/keymaps/rmw/config.h
@@ -22,7 +22,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
22 22
23#define USB_MAX_POWER_CONSUMPTION 500 23#define USB_MAX_POWER_CONSUMPTION 500
24 24
25#define QMK_KEYS_PER_SCAN 4
26/* Set 0 if debouncing isn't needed */ 25/* Set 0 if debouncing isn't needed */
27#undef DEBOUNCE 26#undef DEBOUNCE
28#define DEBOUNCE 5 27#define DEBOUNCE 5
diff --git a/keyboards/eternal_keypad/keymaps/kyek/config.h b/keyboards/eternal_keypad/keymaps/kyek/config.h
index 226b16e546..36ab46334c 100644
--- a/keyboards/eternal_keypad/keymaps/kyek/config.h
+++ b/keyboards/eternal_keypad/keymaps/kyek/config.h
@@ -17,5 +17,3 @@
17 17
18#define ONESHOT_TIMEOUT 2000 18#define ONESHOT_TIMEOUT 2000
19#define FORCE_NKRO 19#define FORCE_NKRO
20#define USB_POLLING_INTERVAL_MS 1
21#define QMK_KEYS_PER_SCAN 12
diff --git a/keyboards/gmmk/gmmk2/p96/config.h b/keyboards/gmmk/gmmk2/p96/config.h
index 1b3a92dd53..fec383c240 100644
--- a/keyboards/gmmk/gmmk2/p96/config.h
+++ b/keyboards/gmmk/gmmk2/p96/config.h
@@ -119,10 +119,6 @@
119#define ENABLE_RGB_MATRIX_SOLID_SPLASH 119#define ENABLE_RGB_MATRIX_SOLID_SPLASH
120#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH 120#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
121 121
122
123/* Send up to 4 key press events per scan */
124#define QMK_KEYS_PER_SCAN 4
125
126/* Set debounce time to 5ms */ 122/* Set debounce time to 5ms */
127#define DEBOUNCE 5 123#define DEBOUNCE 5
128 124
diff --git a/keyboards/gmmk/pro/config.h b/keyboards/gmmk/pro/config.h
index aba69c8872..aea22c5434 100644
--- a/keyboards/gmmk/pro/config.h
+++ b/keyboards/gmmk/pro/config.h
@@ -113,9 +113,6 @@
113#define ENABLE_RGB_MATRIX_SOLID_SPLASH 113#define ENABLE_RGB_MATRIX_SOLID_SPLASH
114#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH 114#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
115 115
116/* Send up to 4 key press events per scan */
117#define QMK_KEYS_PER_SCAN 4
118
119/* Set debounce time to 5ms */ 116/* Set debounce time to 5ms */
120#define DEBOUNCE 5 117#define DEBOUNCE 5
121 118
diff --git a/keyboards/gopolar/gg86/config.h b/keyboards/gopolar/gg86/config.h
index 7566bd2c3f..7964834623 100644
--- a/keyboards/gopolar/gg86/config.h
+++ b/keyboards/gopolar/gg86/config.h
@@ -35,9 +35,6 @@
35/* Forcing to use NKRO instead 6KRO */ 35/* Forcing to use NKRO instead 6KRO */
36#define FORCE_NKRO 36#define FORCE_NKRO
37 37
38/* Change larger keys per scan for elite gaming */
39#define QMK_KEYS_PER_SCAN 12
40
41/* Use the custom font */ 38/* Use the custom font */
42#define OLED_FONT_H "lib/glcdfont.c" 39#define OLED_FONT_H "lib/glcdfont.c"
43 40
diff --git a/keyboards/handwired/marauder/config.h b/keyboards/handwired/marauder/config.h
index fdc269fb7f..a3165c480d 100644
--- a/keyboards/handwired/marauder/config.h
+++ b/keyboards/handwired/marauder/config.h
@@ -36,7 +36,7 @@
36#define MATRIX_COL_PINS { B6, B2, B3, B1, F7, F6, F5, F4, B0 } 36#define MATRIX_COL_PINS { B6, B2, B3, B1, F7, F6, F5, F4, B0 }
37#define DIODE_DIRECTION COL2ROW 37#define DIODE_DIRECTION COL2ROW
38#define LAYER_STATE_8BIT 38#define LAYER_STATE_8BIT
39#define QMK_KEYS_PER_SCAN 12 // moar gaming code 39
40#define RGB_DI_PIN D3 40#define RGB_DI_PIN D3
41#ifdef RGB_DI_PIN 41#ifdef RGB_DI_PIN
42 #define RGBLED_NUM 7 42 #define RGBLED_NUM 7
diff --git a/keyboards/handwired/xealous/config.h b/keyboards/handwired/xealous/config.h
index 5c1469b1f0..2502b4d196 100644
--- a/keyboards/handwired/xealous/config.h
+++ b/keyboards/handwired/xealous/config.h
@@ -29,7 +29,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
29//#define DEBUG_MATRIX_SCAN_RATE //Use this to determine scan-rate. 29//#define DEBUG_MATRIX_SCAN_RATE //Use this to determine scan-rate.
30#define FORCE_NKRO 30#define FORCE_NKRO
31 31
32#define QMK_KEYS_PER_SCAN 4 //if we press four keys simultaneously, lets process them simultaneously...
33#define DIODE_DIRECTION COL2ROW 32#define DIODE_DIRECTION COL2ROW
34 33
35 34
diff --git a/keyboards/horrortroll/chinese_pcb/black_e65/config.h b/keyboards/horrortroll/chinese_pcb/black_e65/config.h
index f544206b81..bcd38d62c7 100644
--- a/keyboards/horrortroll/chinese_pcb/black_e65/config.h
+++ b/keyboards/horrortroll/chinese_pcb/black_e65/config.h
@@ -38,9 +38,6 @@
38/* Forcing to use NKRO instead 6KRO */ 38/* Forcing to use NKRO instead 6KRO */
39#define FORCE_NKRO 39#define FORCE_NKRO
40 40
41/* Change larger keys per scan for elite gaming */
42#define QMK_KEYS_PER_SCAN 12
43
44/* LED Indicator */ 41/* LED Indicator */
45#define LED_CAPS_LOCK_PIN C7 42#define LED_CAPS_LOCK_PIN C7
46 43
diff --git a/keyboards/horrortroll/chinese_pcb/devil68_pro/config.h b/keyboards/horrortroll/chinese_pcb/devil68_pro/config.h
index 82465cf99c..8a227f3c49 100644
--- a/keyboards/horrortroll/chinese_pcb/devil68_pro/config.h
+++ b/keyboards/horrortroll/chinese_pcb/devil68_pro/config.h
@@ -38,9 +38,6 @@
38/* Forcing to use NKRO instead 6KRO */ 38/* Forcing to use NKRO instead 6KRO */
39#define FORCE_NKRO 39#define FORCE_NKRO
40 40
41/* Change larger keys per scan for elite gaming */
42#define QMK_KEYS_PER_SCAN 12
43
44#ifdef RGB_MATRIX_ENABLE 41#ifdef RGB_MATRIX_ENABLE
45 #define DRIVER_LED_TOTAL 86 42 #define DRIVER_LED_TOTAL 86
46 #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200 43 #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200
diff --git a/keyboards/horrortroll/handwired_k552/config.h b/keyboards/horrortroll/handwired_k552/config.h
index 09e89b13c4..d3c385f64e 100644
--- a/keyboards/horrortroll/handwired_k552/config.h
+++ b/keyboards/horrortroll/handwired_k552/config.h
@@ -39,9 +39,6 @@
39/* Forcing to use NKRO instead 6KRO */ 39/* Forcing to use NKRO instead 6KRO */
40#define FORCE_NKRO 40#define FORCE_NKRO
41 41
42/* Change larger keys per scan for elite gaming */
43#define QMK_KEYS_PER_SCAN 12
44
45/* EEPROM size */ 42/* EEPROM size */
46#define EEPROM_PAGE_SIZE 43#define EEPROM_PAGE_SIZE
47#define FEE_PAGE_SIZE 0x800 44#define FEE_PAGE_SIZE 0x800
diff --git a/keyboards/horrortroll/lemon40/config.h b/keyboards/horrortroll/lemon40/config.h
index 600ef01657..c3e1972ae3 100644
--- a/keyboards/horrortroll/lemon40/config.h
+++ b/keyboards/horrortroll/lemon40/config.h
@@ -38,9 +38,6 @@
38/* Forcing to use NKRO instead 6KRO */ 38/* Forcing to use NKRO instead 6KRO */
39#define FORCE_NKRO 39#define FORCE_NKRO
40 40
41/* Larger keys per scan */
42#define QMK_KEYS_PER_SCAN 12
43
44/* RGB light config */ 41/* RGB light config */
45#ifdef RGBLIGHT_ENABLE 42#ifdef RGBLIGHT_ENABLE
46 43
diff --git a/keyboards/horrortroll/paws60/config.h b/keyboards/horrortroll/paws60/config.h
index 7bd3ac8be3..055a6ae319 100644
--- a/keyboards/horrortroll/paws60/config.h
+++ b/keyboards/horrortroll/paws60/config.h
@@ -37,6 +37,3 @@
37 37
38/* Forcing to use NKRO instead 6KRO */ 38/* Forcing to use NKRO instead 6KRO */
39#define FORCE_NKRO 39#define FORCE_NKRO
40
41/* Larger keys per scan */
42#define QMK_KEYS_PER_SCAN 12
diff --git a/keyboards/ianklug/grooveboard/config.h b/keyboards/ianklug/grooveboard/config.h
index 007a86529c..2d255a2c18 100644
--- a/keyboards/ianklug/grooveboard/config.h
+++ b/keyboards/ianklug/grooveboard/config.h
@@ -142,5 +142,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
142/* Bootmagic Lite key configuration */ 142/* Bootmagic Lite key configuration */
143//#define BOOTMAGIC_LITE_ROW 0 143//#define BOOTMAGIC_LITE_ROW 0
144//#define BOOTMAGIC_LITE_COLUMN 0 144//#define BOOTMAGIC_LITE_COLUMN 0
145
146#define QMK_KEYS_PER_SCAN 4
diff --git a/keyboards/jadookb/jkb2/keymaps/via/config.h b/keyboards/jadookb/jkb2/keymaps/via/config.h
deleted file mode 100644
index 31022ca535..0000000000
--- a/keyboards/jadookb/jkb2/keymaps/via/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
1
2 /* Copyright 2021 Wizard-GG
3 *
4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation, either version 2 of the License, or
7 * (at your option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program. If not, see <http://www.gnu.org/licenses/>.
16 */
17#pragma once
18
19#define QMK_KEYS_PER_SCAN 4
diff --git a/keyboards/jadookb/jkb65/keymaps/via/config.h b/keyboards/jadookb/jkb65/keymaps/via/config.h
deleted file mode 100644
index 9d4eaf74ee..0000000000
--- a/keyboards/jadookb/jkb65/keymaps/via/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
1 /* Copyright 2021 Wizard-GG
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16
17#pragma once
18
19#define QMK_KEYS_PER_SCAN 12
diff --git a/keyboards/kbdfans/kbd67/mkiirgb/keymaps/dnsnrk/config.h b/keyboards/kbdfans/kbd67/mkiirgb/keymaps/dnsnrk/config.h
index 25f645f734..bb3409256c 100644
--- a/keyboards/kbdfans/kbd67/mkiirgb/keymaps/dnsnrk/config.h
+++ b/keyboards/kbdfans/kbd67/mkiirgb/keymaps/dnsnrk/config.h
@@ -16,8 +16,6 @@
16#pragma once 16#pragma once
17 17
18/* place overrides here */ 18/* place overrides here */
19#undef QMK_KEYS_PER_SCAN
20#define QMK_KEYS_PER_SCAN 4
21#undef DEBOUNCE 19#undef DEBOUNCE
22#define DEBOUNCE 8 20#define DEBOUNCE 8
23#undef TAPPING_TOGGLE 21#undef TAPPING_TOGGLE
diff --git a/keyboards/kbdfans/kbd67/mkiirgb/keymaps/pascalpfeil/config.h b/keyboards/kbdfans/kbd67/mkiirgb/keymaps/pascalpfeil/config.h
index 2cd513223a..cda14c4bc0 100644
--- a/keyboards/kbdfans/kbd67/mkiirgb/keymaps/pascalpfeil/config.h
+++ b/keyboards/kbdfans/kbd67/mkiirgb/keymaps/pascalpfeil/config.h
@@ -19,9 +19,6 @@
19/* 1000Hz USB polling */ 19/* 1000Hz USB polling */
20#define USB_POLLING_INTERVAL_MS 1 20#define USB_POLLING_INTERVAL_MS 1
21 21
22/* Send up to 4 key press events per scan */
23#define QMK_KEYS_PER_SCAN 4
24
25/* Force NKRO on boot up */ 22/* Force NKRO on boot up */
26#define FORCE_NKRO 23#define FORCE_NKRO
27 24
diff --git a/keyboards/keystonecaps/gameroyadvance/config.h b/keyboards/keystonecaps/gameroyadvance/config.h
index b8d5a69122..06b40b5e66 100644
--- a/keyboards/keystonecaps/gameroyadvance/config.h
+++ b/keyboards/keystonecaps/gameroyadvance/config.h
@@ -55,10 +55,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
55/* Locking resynchronize hack */ 55/* Locking resynchronize hack */
56#define LOCKING_RESYNC_ENABLE 56#define LOCKING_RESYNC_ENABLE
57 57
58
59
60#define QMK_KEYS_PER_SCAN 12
61
62#define RGB_DI_PIN C7 58#define RGB_DI_PIN C7
63#ifdef RGB_DI_PIN 59#ifdef RGB_DI_PIN
64#define RGBLIGHT_EFFECT_BREATHING 60#define RGBLIGHT_EFFECT_BREATHING
diff --git a/keyboards/kprepublic/bm40hsrgb/keymaps/34keys/config.h b/keyboards/kprepublic/bm40hsrgb/keymaps/34keys/config.h
index 63176adb50..2534ffd554 100644
--- a/keyboards/kprepublic/bm40hsrgb/keymaps/34keys/config.h
+++ b/keyboards/kprepublic/bm40hsrgb/keymaps/34keys/config.h
@@ -14,9 +14,6 @@
14// Enable rapid switch from tap to hold, disables double tap hold auto-repeat. 14// Enable rapid switch from tap to hold, disables double tap hold auto-repeat.
15#define TAPPING_FORCE_HOLD 15#define TAPPING_FORCE_HOLD
16 16
17// Recommended for heavy chording.
18#define QMK_KEYS_PER_SCAN 4
19
20// Mouse key speed and acceleration. 17// Mouse key speed and acceleration.
21#undef MOUSEKEY_DELAY 18#undef MOUSEKEY_DELAY
22#define MOUSEKEY_DELAY 0 19#define MOUSEKEY_DELAY 0
@@ -56,4 +53,4 @@
56# undef ENABLE_RGB_MATRIX_DIGITAL_RAIN 53# undef ENABLE_RGB_MATRIX_DIGITAL_RAIN
57# undef RGB_MATRIX_STARTUP_MODE 54# undef RGB_MATRIX_STARTUP_MODE
58// # define RGBLIGHT_HUE_STEP 20 55// # define RGBLIGHT_HUE_STEP 20
59#endif \ No newline at end of file 56#endif
diff --git a/keyboards/kprepublic/bm40hsrgb/keymaps/gabustoledo/config.h b/keyboards/kprepublic/bm40hsrgb/keymaps/gabustoledo/config.h
index ba18295ead..e71078415a 100644
--- a/keyboards/kprepublic/bm40hsrgb/keymaps/gabustoledo/config.h
+++ b/keyboards/kprepublic/bm40hsrgb/keymaps/gabustoledo/config.h
@@ -30,9 +30,6 @@
30#define AUTO_SHIFT_TIMEOUT TAPPING_TERM 30#define AUTO_SHIFT_TIMEOUT TAPPING_TERM
31#define AUTO_SHIFT_NO_SETUP 31#define AUTO_SHIFT_NO_SETUP
32 32
33// Recommended for heavy chording.
34#define QMK_KEYS_PER_SCAN 4
35
36// Mouse key speed and acceleration. 33// Mouse key speed and acceleration.
37#undef MOUSEKEY_DELAY 34#undef MOUSEKEY_DELAY
38#define MOUSEKEY_DELAY 0 35#define MOUSEKEY_DELAY 0
diff --git a/keyboards/kprepublic/bm68hsrgb/rev1/keymaps/peepeetee/config.h b/keyboards/kprepublic/bm68hsrgb/rev1/keymaps/peepeetee/config.h
index 0748f83cdc..3ddb813486 100644
--- a/keyboards/kprepublic/bm68hsrgb/rev1/keymaps/peepeetee/config.h
+++ b/keyboards/kprepublic/bm68hsrgb/rev1/keymaps/peepeetee/config.h
@@ -35,7 +35,6 @@
35// #define MOUSEKEY_MAX_SPEED 10 35// #define MOUSEKEY_MAX_SPEED 10
36// #define MOUSEKEY_WHEEL_DELAY 0 36// #define MOUSEKEY_WHEEL_DELAY 0
37#define FORCE_NKRO // NKRO by default requires to be turned on, this forces it on during keyboard startup regardless of EEPROM setting. NKRO can still be turned off but will be turned on again if the keyboard reboots. 37#define FORCE_NKRO // NKRO by default requires to be turned on, this forces it on during keyboard startup regardless of EEPROM setting. NKRO can still be turned off but will be turned on again if the keyboard reboots.
38// #define QMK_KEYS_PER_SCAN 4 // Allows sending more than one key per scan. By default, only one key event gets sent via process_record() per scan. This has little impact on most typing, but if you're doing a lot of chords, or your scan rate is slow to begin with, you can have some delay in processing key events. Each press and release is a separate event. For a keyboard with 1ms or so scan times, even a very fast typist isn't going to produce the 500 keystrokes a second needed to actually get more than a few ms of delay from this. But if you're doing chording on something with 3-4ms scan times? You probably want this.
39// #define STRICT_LAYER_RELEASE // Force a key release to be evaluated using the current layer stack instead of remembering which layer it came from (used for advanced cases) 38// #define STRICT_LAYER_RELEASE // Force a key release to be evaluated using the current layer stack instead of remembering which layer it came from (used for advanced cases)
40// #define LOCKING_SUPPORT_ENABLE // Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap 39// #define LOCKING_SUPPORT_ENABLE // Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap
41// #define LOCKING_RESYNC_ENABLE // Tries to keep switch state consistent with keyboard LED state 40// #define LOCKING_RESYNC_ENABLE // Tries to keep switch state consistent with keyboard LED state
diff --git a/keyboards/kprepublic/bm80hsrgb/keymaps/peepeetee/config.h b/keyboards/kprepublic/bm80hsrgb/keymaps/peepeetee/config.h
index b322afae9b..97cae26cbd 100644
--- a/keyboards/kprepublic/bm80hsrgb/keymaps/peepeetee/config.h
+++ b/keyboards/kprepublic/bm80hsrgb/keymaps/peepeetee/config.h
@@ -22,7 +22,6 @@
22// #define TERMINAL_HELP 22// #define TERMINAL_HELP
23 23
24#define FORCE_NKRO // NKRO by default requires to be turned on, this forces it on during keyboard startup regardless of EEPROM setting. NKRO can still be turned off but will be turned on again if the keyboard reboots. 24#define FORCE_NKRO // NKRO by default requires to be turned on, this forces it on during keyboard startup regardless of EEPROM setting. NKRO can still be turned off but will be turned on again if the keyboard reboots.
25// #define QMK_KEYS_PER_SCAN 4 // Allows sending more than one key per scan. By default, only one key event gets sent via process_record() per scan. This has little impact on most typing, but if you're doing a lot of chords, or your scan rate is slow to begin with, you can have some delay in processing key events. Each press and release is a separate event. For a keyboard with 1ms or so scan times, even a very fast typist isn't going to produce the 500 keystrokes a second needed to actually get more than a few ms of delay from this. But if you're doing chording on something with 3-4ms scan times? You probably want this.
26// #define STRICT_LAYER_RELEASE // Force a key release to be evaluated using the current layer stack instead of remembering which layer it came from (used for advanced cases) 25// #define STRICT_LAYER_RELEASE // Force a key release to be evaluated using the current layer stack instead of remembering which layer it came from (used for advanced cases)
27// #define TAPPING_TERM 200 // How long before a tap becomes a hold, if set above 500, a key tapped during the tapping term will turn it into a hold too 26// #define TAPPING_TERM 200 // How long before a tap becomes a hold, if set above 500, a key tapped during the tapping term will turn it into a hold too
28// #define TAPPING_TERM_PER_KEY // Enables handling for per key TAPPING_TERM settings 27// #define TAPPING_TERM_PER_KEY // Enables handling for per key TAPPING_TERM settings
diff --git a/keyboards/kprepublic/jj40/keymaps/stevexyz/config.h b/keyboards/kprepublic/jj40/keymaps/stevexyz/config.h
index 84c02dddd6..a4d3d37561 100644
--- a/keyboards/kprepublic/jj40/keymaps/stevexyz/config.h
+++ b/keyboards/kprepublic/jj40/keymaps/stevexyz/config.h
@@ -34,8 +34,6 @@
34 // how long before oneshot times out 34 // how long before oneshot times out
35 #define ONESHOT_TAP_TOGGLE 2 35 #define ONESHOT_TAP_TOGGLE 2
36 // how many taps before oneshot toggle is triggered 36 // how many taps before oneshot toggle is triggered
37 #define QMK_KEYS_PER_SCAN 4
38 // Allows sending more than one key per scan. By default, only one key event gets sent via process_record() per scan. This has little impact on most typing, but if you're doing a lot of chords, or your scan rate is slow to begin with, you can have some delay in processing key events. Each press and release is a separate event. For a keyboard with 1ms or so scan times, even a very fast typist isn't going to produce the 500 keystrokes a second needed to actually get more than a few ms of delay from this. But if you're doing chording on something with 3-4ms scan times? You probably want this.
39 #define COMBO_COUNT 2 37 #define COMBO_COUNT 2
40 // Set this to the number of combos that you're using in the Combo feature. 38 // Set this to the number of combos that you're using in the Combo feature.
41 #define COMBO_TERM 200 39 #define COMBO_TERM 200
diff --git a/keyboards/lets_split/keymaps/piemod/config.h b/keyboards/lets_split/keymaps/piemod/config.h
index 1b3fd7544e..c3975da3ca 100644
--- a/keyboards/lets_split/keymaps/piemod/config.h
+++ b/keyboards/lets_split/keymaps/piemod/config.h
@@ -42,7 +42,4 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
42#define RGBLIGHT_EFFECT_SNAKE_LENGTH 1 42#define RGBLIGHT_EFFECT_SNAKE_LENGTH 1
43#define RGBLIGHT_EFFECT_KNIGHT_LENGTH 1 43#define RGBLIGHT_EFFECT_KNIGHT_LENGTH 1
44 44
45// Typing Options
46#define QMK_KEYS_PER_SCAN 4
47
48#endif 45#endif
diff --git a/keyboards/lfkeyboards/lfkpad/keymaps/pascalpfeil/config.h b/keyboards/lfkeyboards/lfkpad/keymaps/pascalpfeil/config.h
index a9f61f849c..0f9ddaef31 100644
--- a/keyboards/lfkeyboards/lfkpad/keymaps/pascalpfeil/config.h
+++ b/keyboards/lfkeyboards/lfkpad/keymaps/pascalpfeil/config.h
@@ -19,9 +19,6 @@
19/* 1000Hz USB polling */ 19/* 1000Hz USB polling */
20#define USB_POLLING_INTERVAL_MS 1 20#define USB_POLLING_INTERVAL_MS 1
21 21
22/* Send up to 4 key press events per scan */
23#define QMK_KEYS_PER_SCAN 4
24
25/* Force NKRO on boot up */ 22/* Force NKRO on boot up */
26#define FORCE_NKRO 23#define FORCE_NKRO
27 24
diff --git a/keyboards/maple_computing/minidox/keymaps/norman/config.h b/keyboards/maple_computing/minidox/keymaps/norman/config.h
index 0d3542a03e..ecdf080c2c 100644
--- a/keyboards/maple_computing/minidox/keymaps/norman/config.h
+++ b/keyboards/maple_computing/minidox/keymaps/norman/config.h
@@ -1,5 +1,4 @@
1#pragma once 1#pragma once
2 2
3#define PERMISSIVE_HOLD 3#define PERMISSIVE_HOLD
4#define QMK_KEYS_PER_SCAN 4
5#define TAPPING_TERM 160 4#define TAPPING_TERM 160
diff --git a/keyboards/massdrop/alt/keymaps/b_/config.h b/keyboards/massdrop/alt/keymaps/b_/config.h
index ca4424bd3f..b7112c9ea7 100644
--- a/keyboards/massdrop/alt/keymaps/b_/config.h
+++ b/keyboards/massdrop/alt/keymaps/b_/config.h
@@ -23,7 +23,6 @@
23// #define MOUSEKEY_MAX_SPEED 10 23// #define MOUSEKEY_MAX_SPEED 10
24// #define MOUSEKEY_WHEEL_DELAY 0 24// #define MOUSEKEY_WHEEL_DELAY 0
25//#define FORCE_NKRO // NKRO by default requires to be turned on, this forces it on during keyboard startup regardless of EEPROM setting. NKRO can still be turned off but will be turned on again if the keyboard reboots. 25//#define FORCE_NKRO // NKRO by default requires to be turned on, this forces it on during keyboard startup regardless of EEPROM setting. NKRO can still be turned off but will be turned on again if the keyboard reboots.
26// #define QMK_KEYS_PER_SCAN 4 // Allows sending more than one key per scan. By default, only one key event gets sent via process_record() per scan. This has little impact on most typing, but if you're doing a lot of chords, or your scan rate is slow to begin with, you can have some delay in processing key events. Each press and release is a separate event. For a keyboard with 1ms or so scan times, even a very fast typist isn't going to produce the 500 keystrokes a second needed to actually get more than a few ms of delay from this. But if you're doing chording on something with 3-4ms scan times? You probably want this.
27// #define STRICT_LAYER_RELEASE // Force a key release to be evaluated using the current layer stack instead of remembering which layer it came from (used for advanced cases) 26// #define STRICT_LAYER_RELEASE // Force a key release to be evaluated using the current layer stack instead of remembering which layer it came from (used for advanced cases)
28// #define LOCKING_SUPPORT_ENABLE // Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap 27// #define LOCKING_SUPPORT_ENABLE // Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap
29// #define LOCKING_RESYNC_ENABLE // Tries to keep switch state consistent with keyboard LED state 28// #define LOCKING_RESYNC_ENABLE // Tries to keep switch state consistent with keyboard LED state
diff --git a/keyboards/massdrop/alt/keymaps/pregame/config.h b/keyboards/massdrop/alt/keymaps/pregame/config.h
index 19fc4fed34..936951e34a 100644
--- a/keyboards/massdrop/alt/keymaps/pregame/config.h
+++ b/keyboards/massdrop/alt/keymaps/pregame/config.h
@@ -36,7 +36,6 @@
36// #define MOUSEKEY_MAX_SPEED 10 36// #define MOUSEKEY_MAX_SPEED 10
37// #define MOUSEKEY_WHEEL_DELAY 0 37// #define MOUSEKEY_WHEEL_DELAY 0
38#define FORCE_NKRO // NKRO by default requires to be turned on, this forces it on during keyboard startup regardless of EEPROM setting. NKRO can still be turned off but will be turned on again if the keyboard reboots. 38#define FORCE_NKRO // NKRO by default requires to be turned on, this forces it on during keyboard startup regardless of EEPROM setting. NKRO can still be turned off but will be turned on again if the keyboard reboots.
39// #define QMK_KEYS_PER_SCAN 4 // Allows sending more than one key per scan. By default, only one key event gets sent via process_record() per scan. This has little impact on most typing, but if you're doing a lot of chords, or your scan rate is slow to begin with, you can have some delay in processing key events. Each press and release is a separate event. For a keyboard with 1ms or so scan times, even a very fast typist isn't going to produce the 500 keystrokes a second needed to actually get more than a few ms of delay from this. But if you're doing chording on something with 3-4ms scan times? You probably want this.
40// #define STRICT_LAYER_RELEASE // Force a key release to be evaluated using the current layer stack instead of remembering which layer it came from (used for advanced cases) 39// #define STRICT_LAYER_RELEASE // Force a key release to be evaluated using the current layer stack instead of remembering which layer it came from (used for advanced cases)
41// #define LOCKING_SUPPORT_ENABLE // Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap 40// #define LOCKING_SUPPORT_ENABLE // Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap
42// #define LOCKING_RESYNC_ENABLE // Tries to keep switch state consistent with keyboard LED state 41// #define LOCKING_RESYNC_ENABLE // Tries to keep switch state consistent with keyboard LED state
diff --git a/keyboards/massdrop/ctrl/keymaps/endgame/config.h b/keyboards/massdrop/ctrl/keymaps/endgame/config.h
index 4850d7eed2..d0bbfd2103 100644
--- a/keyboards/massdrop/ctrl/keymaps/endgame/config.h
+++ b/keyboards/massdrop/ctrl/keymaps/endgame/config.h
@@ -20,7 +20,6 @@
20#define MOUSEKEY_MAX_SPEED 10 20#define MOUSEKEY_MAX_SPEED 10
21#define MOUSEKEY_WHEEL_DELAY 0 21#define MOUSEKEY_WHEEL_DELAY 0
22#define FORCE_NKRO // NKRO by default requires to be turned on, this forces it on during keyboard startup regardless of EEPROM setting. NKRO can still be turned off but will be turned on again if the keyboard reboots. 22#define FORCE_NKRO // NKRO by default requires to be turned on, this forces it on during keyboard startup regardless of EEPROM setting. NKRO can still be turned off but will be turned on again if the keyboard reboots.
23// #define QMK_KEYS_PER_SCAN 4 // Allows sending more than one key per scan. By default, only one key event gets sent via process_record() per scan. This has little impact on most typing, but if you're doing a lot of chords, or your scan rate is slow to begin with, you can have some delay in processing key events. Each press and release is a separate event. For a keyboard with 1ms or so scan times, even a very fast typist isn't going to produce the 500 keystrokes a second needed to actually get more than a few ms of delay from this. But if you're doing chording on something with 3-4ms scan times? You probably want this.
24// #define STRICT_LAYER_RELEASE // Force a key release to be evaluated using the current layer stack instead of remembering which layer it came from (used for advanced cases) 23// #define STRICT_LAYER_RELEASE // Force a key release to be evaluated using the current layer stack instead of remembering which layer it came from (used for advanced cases)
25// #define LOCKING_SUPPORT_ENABLE // Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap 24// #define LOCKING_SUPPORT_ENABLE // Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap
26// #define LOCKING_RESYNC_ENABLE // Tries to keep switch state consistent with keyboard LED state 25// #define LOCKING_RESYNC_ENABLE // Tries to keep switch state consistent with keyboard LED state
diff --git a/keyboards/massdrop/ctrl/keymaps/matthewrobo/config.h b/keyboards/massdrop/ctrl/keymaps/matthewrobo/config.h
index 81e7764a9e..692faa35a2 100644
--- a/keyboards/massdrop/ctrl/keymaps/matthewrobo/config.h
+++ b/keyboards/massdrop/ctrl/keymaps/matthewrobo/config.h
@@ -37,7 +37,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
37// #define MOUSEKEY_MAX_SPEED 10 37// #define MOUSEKEY_MAX_SPEED 10
38// #define MOUSEKEY_WHEEL_DELAY 0 38// #define MOUSEKEY_WHEEL_DELAY 0
39#define FORCE_NKRO // NKRO by default requires to be turned on, this forces it on during keyboard startup regardless of EEPROM setting. NKRO can still be turned off but will be turned on again if the keyboard reboots. 39#define FORCE_NKRO // NKRO by default requires to be turned on, this forces it on during keyboard startup regardless of EEPROM setting. NKRO can still be turned off but will be turned on again if the keyboard reboots.
40// #define QMK_KEYS_PER_SCAN 4 // Allows sending more than one key per scan. By default, only one key event gets sent via process_record() per scan. This has little impact on most typing, but if you're doing a lot of chords, or your scan rate is slow to begin with, you can have some delay in processing key events. Each press and release is a separate event. For a keyboard with 1ms or so scan times, even a very fast typist isn't going to produce the 500 keystrokes a second needed to actually get more than a few ms of delay from this. But if you're doing chording on something with 3-4ms scan times? You probably want this.
41// #define STRICT_LAYER_RELEASE // Force a key release to be evaluated using the current layer stack instead of remembering which layer it came from (used for advanced cases) 40// #define STRICT_LAYER_RELEASE // Force a key release to be evaluated using the current layer stack instead of remembering which layer it came from (used for advanced cases)
42// #define LOCKING_SUPPORT_ENABLE // Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap 41// #define LOCKING_SUPPORT_ENABLE // Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap
43// #define LOCKING_RESYNC_ENABLE // Tries to keep switch state consistent with keyboard LED state 42// #define LOCKING_RESYNC_ENABLE // Tries to keep switch state consistent with keyboard LED state
diff --git a/keyboards/massdrop/ctrl/keymaps/xanimos/config.h b/keyboards/massdrop/ctrl/keymaps/xanimos/config.h
index 37987340ce..f1cbd5f3b0 100644
--- a/keyboards/massdrop/ctrl/keymaps/xanimos/config.h
+++ b/keyboards/massdrop/ctrl/keymaps/xanimos/config.h
@@ -36,7 +36,6 @@
36#define MOUSEKEY_MAX_SPEED 10 36#define MOUSEKEY_MAX_SPEED 10
37#define MOUSEKEY_WHEEL_DELAY 0 37#define MOUSEKEY_WHEEL_DELAY 0
38#define FORCE_NKRO // NKRO by default requires to be turned on, this forces it on during keyboard startup regardless of EEPROM setting. NKRO can still be turned off but will be turned on again if the keyboard reboots. 38#define FORCE_NKRO // NKRO by default requires to be turned on, this forces it on during keyboard startup regardless of EEPROM setting. NKRO can still be turned off but will be turned on again if the keyboard reboots.
39// #define QMK_KEYS_PER_SCAN 4 // Allows sending more than one key per scan. By default, only one key event gets sent via process_record() per scan. This has little impact on most typing, but if you're doing a lot of chords, or your scan rate is slow to begin with, you can have some delay in processing key events. Each press and release is a separate event. For a keyboard with 1ms or so scan times, even a very fast typist isn't going to produce the 500 keystrokes a second needed to actually get more than a few ms of delay from this. But if you're doing chording on something with 3-4ms scan times? You probably want this.
40// #define STRICT_LAYER_RELEASE // Force a key release to be evaluated using the current layer stack instead of remembering which layer it came from (used for advanced cases) 39// #define STRICT_LAYER_RELEASE // Force a key release to be evaluated using the current layer stack instead of remembering which layer it came from (used for advanced cases)
41// #define LOCKING_SUPPORT_ENABLE // Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap 40// #define LOCKING_SUPPORT_ENABLE // Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap
42// #define LOCKING_RESYNC_ENABLE // Tries to keep switch state consistent with keyboard LED state 41// #define LOCKING_RESYNC_ENABLE // Tries to keep switch state consistent with keyboard LED state
diff --git a/keyboards/ml/gas75/config.h b/keyboards/ml/gas75/config.h
index 4f35c4c265..82d8c134a0 100644
--- a/keyboards/ml/gas75/config.h
+++ b/keyboards/ml/gas75/config.h
@@ -38,9 +38,6 @@
38/* Forcing to use NKRO instead 6KRO */ 38/* Forcing to use NKRO instead 6KRO */
39#define FORCE_NKRO 39#define FORCE_NKRO
40 40
41/* Larger keys per scan */
42#define QMK_KEYS_PER_SCAN 12
43
44/* Encoder pins */ 41/* Encoder pins */
45#define ENCODERS_PAD_A { F0 } 42#define ENCODERS_PAD_A { F0 }
46#define ENCODERS_PAD_B { F1 } 43#define ENCODERS_PAD_B { F1 }
diff --git a/keyboards/mmkzoo65/config.h b/keyboards/mmkzoo65/config.h
index b562a40859..b874fdef8a 100644
--- a/keyboards/mmkzoo65/config.h
+++ b/keyboards/mmkzoo65/config.h
@@ -38,4 +38,3 @@
38 38
39/* 将USB 轮询速率更改为 1000hz 并为精英游戏每次扫描使用更大的密钥*/ 39/* 将USB 轮询速率更改为 1000hz 并为精英游戏每次扫描使用更大的密钥*/
40#define USB_POLLING_INTERVAL_MS 2 40#define USB_POLLING_INTERVAL_MS 2
41#define QMK_KEYS_PER_SCAN 12
diff --git a/keyboards/mss_studio/m63_rgb/config.h b/keyboards/mss_studio/m63_rgb/config.h
index e2aae8469f..a7220ab1c6 100644
--- a/keyboards/mss_studio/m63_rgb/config.h
+++ b/keyboards/mss_studio/m63_rgb/config.h
@@ -36,9 +36,6 @@
36/* Forcing to use NKRO instead 6KRO */ 36/* Forcing to use NKRO instead 6KRO */
37#define FORCE_NKRO 37#define FORCE_NKRO
38 38
39/* Change larger keys per scan for elite gaming */
40#define QMK_KEYS_PER_SCAN 12
41
42#ifdef RGB_MATRIX_ENABLE 39#ifdef RGB_MATRIX_ENABLE
43 #define DRIVER_LED_TOTAL 75 40 #define DRIVER_LED_TOTAL 75
44 #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200 41 #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200
diff --git a/keyboards/mss_studio/m64_rgb/config.h b/keyboards/mss_studio/m64_rgb/config.h
index d8ac27024b..c9a1e3f3db 100644
--- a/keyboards/mss_studio/m64_rgb/config.h
+++ b/keyboards/mss_studio/m64_rgb/config.h
@@ -36,9 +36,6 @@
36/* Forcing to use NKRO instead 6KRO */ 36/* Forcing to use NKRO instead 6KRO */
37#define FORCE_NKRO 37#define FORCE_NKRO
38 38
39/* Change larger keys per scan for elite gaming */
40#define QMK_KEYS_PER_SCAN 12
41
42#ifdef RGB_MATRIX_ENABLE 39#ifdef RGB_MATRIX_ENABLE
43 #define DRIVER_LED_TOTAL 76 40 #define DRIVER_LED_TOTAL 76
44 #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200 41 #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200
diff --git a/keyboards/mwstudio/mw65_rgb/keymaps/horrortroll/config.h b/keyboards/mwstudio/mw65_rgb/keymaps/horrortroll/config.h
index 13cffea4da..0d2051ffd5 100644
--- a/keyboards/mwstudio/mw65_rgb/keymaps/horrortroll/config.h
+++ b/keyboards/mwstudio/mw65_rgb/keymaps/horrortroll/config.h
@@ -21,10 +21,6 @@
21/* Forcing to use NKRO instead 6KRO */ 21/* Forcing to use NKRO instead 6KRO */
22#define FORCE_NKRO 22#define FORCE_NKRO
23 23
24/* Change USB Polling Rate to 1000hz and a larger keys per scan for elite gaming */
25#define USB_POLLING_INTERVAL_MS 1
26#define QMK_KEYS_PER_SCAN 12
27
28#ifdef RGB_MATRIX_ENABLE 24#ifdef RGB_MATRIX_ENABLE
29 /* RGB Matrix config */ 25 /* RGB Matrix config */
30 #undef ENABLE_RGB_MATRIX_BAND_SAT 26 #undef ENABLE_RGB_MATRIX_BAND_SAT
diff --git a/keyboards/mwstudio/mw65_rgb/keymaps/thearesia/config.h b/keyboards/mwstudio/mw65_rgb/keymaps/thearesia/config.h
index ba574e1e3c..fef62c6374 100644
--- a/keyboards/mwstudio/mw65_rgb/keymaps/thearesia/config.h
+++ b/keyboards/mwstudio/mw65_rgb/keymaps/thearesia/config.h
@@ -20,7 +20,3 @@
20 20
21/* Forcing to use NKRO instead 6KRO */ 21/* Forcing to use NKRO instead 6KRO */
22#define FORCE_NKRO 22#define FORCE_NKRO
23
24/* Change USB Polling Rate to 1000hz and a larger keys per scan for elite gaming */
25#define USB_POLLING_INTERVAL_MS 1
26#define QMK_KEYS_PER_SCAN 12
diff --git a/keyboards/pierce/keymaps/durken1/config.h b/keyboards/pierce/keymaps/durken1/config.h
index 7d19a0b83b..bc0bb1c4b8 100644
--- a/keyboards/pierce/keymaps/durken1/config.h
+++ b/keyboards/pierce/keymaps/durken1/config.h
@@ -27,9 +27,6 @@
27 27
28#define PERMISSIVE_HOLD 28#define PERMISSIVE_HOLD
29 29
30// Recommended for heavy chording.
31#define QMK_KEYS_PER_SCAN 4
32
33// Combo settings 30// Combo settings
34#define COMBO_COUNT 3 31#define COMBO_COUNT 3
35#define COMBO_TERM 35 32#define COMBO_TERM 35
@@ -74,4 +71,3 @@
74#ifdef AUTO_BUTTONS 71#ifdef AUTO_BUTTONS
75 #define AUTO_BUTTONS_TIMEOUT 750 72 #define AUTO_BUTTONS_TIMEOUT 750
76#endif 73#endif
77
diff --git a/keyboards/rgbkb/zen/rev1/keymaps/cwebster2/config.h b/keyboards/rgbkb/zen/rev1/keymaps/cwebster2/config.h
index 211e3517ec..cdffe6fd50 100644
--- a/keyboards/rgbkb/zen/rev1/keymaps/cwebster2/config.h
+++ b/keyboards/rgbkb/zen/rev1/keymaps/cwebster2/config.h
@@ -29,6 +29,4 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
29 #define COMBO_COUNT 2 29 #define COMBO_COUNT 2
30#endif 30#endif
31 31
32#define QMK_KEYS_PER_SCAN 4
33
34#define EE_HANDS 32#define EE_HANDS
diff --git a/keyboards/sanctified/dystopia/config.h b/keyboards/sanctified/dystopia/config.h
index a818d3e84f..cf9d91d551 100644
--- a/keyboards/sanctified/dystopia/config.h
+++ b/keyboards/sanctified/dystopia/config.h
@@ -27,5 +27,3 @@
27#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, C7, C6, B6, B5, D4, D6, D7, B4 } 27#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, C7, C6, B6, B5, D4, D6, D7, B4 }
28 28
29#define DIODE_DIRECTION COL2ROW 29#define DIODE_DIRECTION COL2ROW
30
31#define QMK_KEYS_PER_SCAN 12
diff --git a/keyboards/signum/3_0/keymaps/sgurenkov/config.h b/keyboards/signum/3_0/keymaps/sgurenkov/config.h
index 5f8d0d02b8..7d164aa3a9 100644
--- a/keyboards/signum/3_0/keymaps/sgurenkov/config.h
+++ b/keyboards/signum/3_0/keymaps/sgurenkov/config.h
@@ -29,9 +29,6 @@
29// Auto Shift and Retro Shift (Auto Shift for Tap Hold). 29// Auto Shift and Retro Shift (Auto Shift for Tap Hold).
30#define AUTO_SHIFT_TIMEOUT TAPPING_TERM 30#define AUTO_SHIFT_TIMEOUT TAPPING_TERM
31 31
32// Recommended for heavy chording.
33#define QMK_KEYS_PER_SCAN 4
34
35// Mouse key speed and acceleration. 32// Mouse key speed and acceleration.
36#undef MOUSEKEY_DELAY 33#undef MOUSEKEY_DELAY
37#define MOUSEKEY_DELAY 0 34#define MOUSEKEY_DELAY 0
diff --git a/keyboards/skme/zeno/config.h b/keyboards/skme/zeno/config.h
index a6404a8ff4..53aa1cd621 100644
--- a/keyboards/skme/zeno/config.h
+++ b/keyboards/skme/zeno/config.h
@@ -34,6 +34,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
34#define LOCKING_SUPPORT_ENABLE 34#define LOCKING_SUPPORT_ENABLE
35/* Locking resynchronize hack */ 35/* Locking resynchronize hack */
36#define LOCKING_RESYNC_ENABLE 36#define LOCKING_RESYNC_ENABLE
37/*Enable 1khz polling by default*/
38#define USB_POLLING_INTERVAL_MS 1
39#define QMK_KEYS_PER_SCAN 4
diff --git a/keyboards/sofle/keymaps/killmaster/config.h b/keyboards/sofle/keymaps/killmaster/config.h
index 2e6abe84e3..9d1de12d5a 100644
--- a/keyboards/sofle/keymaps/killmaster/config.h
+++ b/keyboards/sofle/keymaps/killmaster/config.h
@@ -61,4 +61,3 @@ for more options.
61#define MEDIA_KEY_DELAY 2 61#define MEDIA_KEY_DELAY 2
62 62
63#define USB_POLLING_INTERVAL_MS 1 63#define USB_POLLING_INTERVAL_MS 1
64#define QMK_KEYS_PER_SCAN 12
diff --git a/keyboards/splitkb/kyria/keymaps/cwebster2/config.h b/keyboards/splitkb/kyria/keymaps/cwebster2/config.h
index 9a58f7751a..59994e01fa 100644
--- a/keyboards/splitkb/kyria/keymaps/cwebster2/config.h
+++ b/keyboards/splitkb/kyria/keymaps/cwebster2/config.h
@@ -47,8 +47,6 @@
47 #define COMBO_COUNT 5 47 #define COMBO_COUNT 5
48#endif 48#endif
49 49
50#define QMK_KEYS_PER_SCAN 4
51
52#define EE_HANDS 50#define EE_HANDS
53 51
54//#define DEBUG_MATRIX_SCAN_RATE 52//#define DEBUG_MATRIX_SCAN_RATE
diff --git a/keyboards/synthlabs/solo/config.h b/keyboards/synthlabs/solo/config.h
index affb70befc..112d12d1ee 100644
--- a/keyboards/synthlabs/solo/config.h
+++ b/keyboards/synthlabs/solo/config.h
@@ -16,8 +16,6 @@
16#define MATRIX_ROWS 3 16#define MATRIX_ROWS 3
17#define MATRIX_COLS 7 17#define MATRIX_COLS 7
18 18
19#define QMK_KEYS_PER_SCAN 17
20
21/* 19/*
22 * Force NKRO 20 * Force NKRO
23 * 21 *
diff --git a/keyboards/xelus/dharma/keymaps/default/config.h b/keyboards/xelus/dharma/keymaps/default/config.h
deleted file mode 100644
index 5d972dd48c..0000000000
--- a/keyboards/xelus/dharma/keymaps/default/config.h
+++ /dev/null
@@ -1,18 +0,0 @@
1/* Copyright 2021 Harrison Chan (Xelus)
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16#pragma once
17
18#define QMK_KEYS_PER_SCAN 4
diff --git a/keyboards/xelus/dharma/keymaps/via/config.h b/keyboards/xelus/dharma/keymaps/via/config.h
deleted file mode 100644
index 5d972dd48c..0000000000
--- a/keyboards/xelus/dharma/keymaps/via/config.h
+++ /dev/null
@@ -1,18 +0,0 @@
1/* Copyright 2021 Harrison Chan (Xelus)
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16#pragma once
17
18#define QMK_KEYS_PER_SCAN 4
diff --git a/keyboards/xelus/kangaroo/keymaps/default/config.h b/keyboards/xelus/kangaroo/keymaps/default/config.h
deleted file mode 100644
index 5d972dd48c..0000000000
--- a/keyboards/xelus/kangaroo/keymaps/default/config.h
+++ /dev/null
@@ -1,18 +0,0 @@
1/* Copyright 2021 Harrison Chan (Xelus)
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16#pragma once
17
18#define QMK_KEYS_PER_SCAN 4
diff --git a/keyboards/xelus/kangaroo/keymaps/via/config.h b/keyboards/xelus/kangaroo/keymaps/via/config.h
deleted file mode 100644
index 5d972dd48c..0000000000
--- a/keyboards/xelus/kangaroo/keymaps/via/config.h
+++ /dev/null
@@ -1,18 +0,0 @@
1/* Copyright 2021 Harrison Chan (Xelus)
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16#pragma once
17
18#define QMK_KEYS_PER_SCAN 4
diff --git a/keyboards/xelus/la_plus/keymaps/default/config.h b/keyboards/xelus/la_plus/keymaps/default/config.h
deleted file mode 100644
index e559a15426..0000000000
--- a/keyboards/xelus/la_plus/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
1/* Copyright 2021 Harrison Chan (Xelus)
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16
17#pragma once
18
19#define QMK_KEYS_PER_SCAN 4
diff --git a/keyboards/xelus/la_plus/keymaps/via/config.h b/keyboards/xelus/la_plus/keymaps/via/config.h
index 58c086282c..43760bd281 100644
--- a/keyboards/xelus/la_plus/keymaps/via/config.h
+++ b/keyboards/xelus/la_plus/keymaps/via/config.h
@@ -18,5 +18,3 @@
18 18
19// Enable RGB Matrix 19// Enable RGB Matrix
20#define VIA_QMK_RGBLIGHT_ENABLE 20#define VIA_QMK_RGBLIGHT_ENABLE
21
22#define QMK_KEYS_PER_SCAN 4
diff --git a/keyboards/xelus/pachi/mini_32u4/keymaps/default/config.h b/keyboards/xelus/pachi/mini_32u4/keymaps/default/config.h
deleted file mode 100644
index 5d972dd48c..0000000000
--- a/keyboards/xelus/pachi/mini_32u4/keymaps/default/config.h
+++ /dev/null
@@ -1,18 +0,0 @@
1/* Copyright 2021 Harrison Chan (Xelus)
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16#pragma once
17
18#define QMK_KEYS_PER_SCAN 4
diff --git a/keyboards/xelus/pachi/mini_32u4/keymaps/via/config.h b/keyboards/xelus/pachi/mini_32u4/keymaps/via/config.h
index fc3a2bd0b2..47bbf2bf81 100644
--- a/keyboards/xelus/pachi/mini_32u4/keymaps/via/config.h
+++ b/keyboards/xelus/pachi/mini_32u4/keymaps/via/config.h
@@ -18,5 +18,3 @@
18 18
19// 3 layers or else it will not fit in EEPROM 19// 3 layers or else it will not fit in EEPROM
20#define DYNAMIC_KEYMAP_LAYER_COUNT 3 20#define DYNAMIC_KEYMAP_LAYER_COUNT 3
21
22#define QMK_KEYS_PER_SCAN 4
diff --git a/keyboards/xelus/pachi/rev1/keymaps/default/config.h b/keyboards/xelus/pachi/rev1/keymaps/default/config.h
deleted file mode 100644
index 5d972dd48c..0000000000
--- a/keyboards/xelus/pachi/rev1/keymaps/default/config.h
+++ /dev/null
@@ -1,18 +0,0 @@
1/* Copyright 2021 Harrison Chan (Xelus)
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16#pragma once
17
18#define QMK_KEYS_PER_SCAN 4
diff --git a/keyboards/xelus/pachi/rev1/keymaps/via/config.h b/keyboards/xelus/pachi/rev1/keymaps/via/config.h
index fc3a2bd0b2..47bbf2bf81 100644
--- a/keyboards/xelus/pachi/rev1/keymaps/via/config.h
+++ b/keyboards/xelus/pachi/rev1/keymaps/via/config.h
@@ -18,5 +18,3 @@
18 18
19// 3 layers or else it will not fit in EEPROM 19// 3 layers or else it will not fit in EEPROM
20#define DYNAMIC_KEYMAP_LAYER_COUNT 3 20#define DYNAMIC_KEYMAP_LAYER_COUNT 3
21
22#define QMK_KEYS_PER_SCAN 4
diff --git a/keyboards/xelus/pachi/rgb/keymaps/default/config.h b/keyboards/xelus/pachi/rgb/keymaps/default/config.h
deleted file mode 100644
index 5d972dd48c..0000000000
--- a/keyboards/xelus/pachi/rgb/keymaps/default/config.h
+++ /dev/null
@@ -1,18 +0,0 @@
1/* Copyright 2021 Harrison Chan (Xelus)
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16#pragma once
17
18#define QMK_KEYS_PER_SCAN 4
diff --git a/keyboards/xelus/pachi/rgb/keymaps/via/config.h b/keyboards/xelus/pachi/rgb/keymaps/via/config.h
index 1213e7a8f2..0e34ad2c1a 100644
--- a/keyboards/xelus/pachi/rgb/keymaps/via/config.h
+++ b/keyboards/xelus/pachi/rgb/keymaps/via/config.h
@@ -21,5 +21,3 @@
21 21
22// Enable RGB Matrix 22// Enable RGB Matrix
23#define VIA_QMK_RGBLIGHT_ENABLE 23#define VIA_QMK_RGBLIGHT_ENABLE
24
25#define QMK_KEYS_PER_SCAN 4
diff --git a/keyboards/xelus/rs60/keymaps/default/config.h b/keyboards/xelus/rs60/keymaps/default/config.h
deleted file mode 100644
index 5d972dd48c..0000000000
--- a/keyboards/xelus/rs60/keymaps/default/config.h
+++ /dev/null
@@ -1,18 +0,0 @@
1/* Copyright 2021 Harrison Chan (Xelus)
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16#pragma once
17
18#define QMK_KEYS_PER_SCAN 4
diff --git a/keyboards/xelus/rs60/keymaps/via/config.h b/keyboards/xelus/rs60/keymaps/via/config.h
deleted file mode 100644
index 5d972dd48c..0000000000
--- a/keyboards/xelus/rs60/keymaps/via/config.h
+++ /dev/null
@@ -1,18 +0,0 @@
1/* Copyright 2021 Harrison Chan (Xelus)
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16#pragma once
17
18#define QMK_KEYS_PER_SCAN 4
diff --git a/keyboards/xelus/valor/rev2/keymaps/default/config.h b/keyboards/xelus/valor/rev2/keymaps/default/config.h
deleted file mode 100644
index 5d972dd48c..0000000000
--- a/keyboards/xelus/valor/rev2/keymaps/default/config.h
+++ /dev/null
@@ -1,18 +0,0 @@
1/* Copyright 2021 Harrison Chan (Xelus)
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16#pragma once
17
18#define QMK_KEYS_PER_SCAN 4
diff --git a/keyboards/xelus/valor/rev2/keymaps/via/config.h b/keyboards/xelus/valor/rev2/keymaps/via/config.h
index 490964f272..e7fb31cb23 100644
--- a/keyboards/xelus/valor/rev2/keymaps/via/config.h
+++ b/keyboards/xelus/valor/rev2/keymaps/via/config.h
@@ -20,5 +20,3 @@
20 20
21// More layers 21// More layers
22#define DYNAMIC_KEYMAP_LAYER_COUNT 8 22#define DYNAMIC_KEYMAP_LAYER_COUNT 8
23
24#define QMK_KEYS_PER_SCAN 4
diff --git a/keyboards/xelus/valor_frl_tkl/keymaps/default/config.h b/keyboards/xelus/valor_frl_tkl/keymaps/default/config.h
deleted file mode 100644
index 7b8de5510e..0000000000
--- a/keyboards/xelus/valor_frl_tkl/keymaps/default/config.h
+++ /dev/null
@@ -1,18 +0,0 @@
1/* Copyright 2020 Harrison Chan (Xelus)
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16#pragma once
17
18#define QMK_KEYS_PER_SCAN 4
diff --git a/keyboards/xelus/valor_frl_tkl/keymaps/via/config.h b/keyboards/xelus/valor_frl_tkl/keymaps/via/config.h
deleted file mode 100644
index 7b8de5510e..0000000000
--- a/keyboards/xelus/valor_frl_tkl/keymaps/via/config.h
+++ /dev/null
@@ -1,18 +0,0 @@
1/* Copyright 2020 Harrison Chan (Xelus)
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16#pragma once
17
18#define QMK_KEYS_PER_SCAN 4
diff --git a/keyboards/xelus/xs60/keymaps/default/config.h b/keyboards/xelus/xs60/keymaps/default/config.h
deleted file mode 100644
index 5d972dd48c..0000000000
--- a/keyboards/xelus/xs60/keymaps/default/config.h
+++ /dev/null
@@ -1,18 +0,0 @@
1/* Copyright 2021 Harrison Chan (Xelus)
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16#pragma once
17
18#define QMK_KEYS_PER_SCAN 4
diff --git a/keyboards/xelus/xs60/keymaps/via/config.h b/keyboards/xelus/xs60/keymaps/via/config.h
index b608adcfc4..8c0ed0c6e3 100644
--- a/keyboards/xelus/xs60/keymaps/via/config.h
+++ b/keyboards/xelus/xs60/keymaps/via/config.h
@@ -17,5 +17,3 @@
17 17
18// More layers 18// More layers
19#define DYNAMIC_KEYMAP_LAYER_COUNT 8 19#define DYNAMIC_KEYMAP_LAYER_COUNT 8
20
21#define QMK_KEYS_PER_SCAN 4
diff --git a/keyboards/xiudi/xd75/keymaps/tdl-jturner/config.h b/keyboards/xiudi/xd75/keymaps/tdl-jturner/config.h
index 596aaff665..210c4441c3 100644
--- a/keyboards/xiudi/xd75/keymaps/tdl-jturner/config.h
+++ b/keyboards/xiudi/xd75/keymaps/tdl-jturner/config.h
@@ -24,7 +24,6 @@
24//#define TAPPING_TERM 200 24//#define TAPPING_TERM 200
25#define TAPPING_TOGGLE 2 25#define TAPPING_TOGGLE 2
26//#define PERMISSIVE_HOLD 26//#define PERMISSIVE_HOLD
27//#define QMK_KEYS_PER_SCAN 4
28#define FORCE_NKRO 27#define FORCE_NKRO
29 28
30#define MOUSEKEY_INTERVAL 16 29#define MOUSEKEY_INTERVAL 16
diff --git a/layouts/community/65_ansi_blocker/brandonschlack/config.h b/layouts/community/65_ansi_blocker/brandonschlack/config.h
index ea8ca61901..d7687315ed 100644
--- a/layouts/community/65_ansi_blocker/brandonschlack/config.h
+++ b/layouts/community/65_ansi_blocker/brandonschlack/config.h
@@ -54,8 +54,6 @@
54# undef ENABLE_RGB_MATRIX_SOLID_SPLASH 54# undef ENABLE_RGB_MATRIX_SOLID_SPLASH
55# undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH 55# undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
56 56
57# define QMK_KEYS_PER_SCAN 4
58
59# define USB_LED_CAPS_LOCK_SCANCODE 30 57# define USB_LED_CAPS_LOCK_SCANCODE 30
60#endif 58#endif
61 59
diff --git a/layouts/community/65_ansi_blocker_split_bs/brandonschlack-split/config.h b/layouts/community/65_ansi_blocker_split_bs/brandonschlack-split/config.h
index fe3dcd41c2..38b827ba32 100644
--- a/layouts/community/65_ansi_blocker_split_bs/brandonschlack-split/config.h
+++ b/layouts/community/65_ansi_blocker_split_bs/brandonschlack-split/config.h
@@ -54,8 +54,6 @@
54# undef ENABLE_RGB_MATRIX_SOLID_SPLASH 54# undef ENABLE_RGB_MATRIX_SOLID_SPLASH
55# undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH 55# undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
56 56
57# define QMK_KEYS_PER_SCAN 4
58
59# define USB_LED_CAPS_LOCK_SCANCODE 30 57# define USB_LED_CAPS_LOCK_SCANCODE 30
60#endif 58#endif
61 59
diff --git a/quantum/keyboard.c b/quantum/keyboard.c
index 2364e3167b..1c62a43d9d 100644
--- a/quantum/keyboard.c
+++ b/quantum/keyboard.c
@@ -212,6 +212,12 @@ static inline bool has_ghost_in_row(uint8_t row, matrix_row_t rowdata) {
212 return false; 212 return false;
213} 213}
214 214
215#else
216
217static inline bool has_ghost_in_row(uint8_t row, matrix_row_t rowdata) {
218 return false;
219}
220
215#endif 221#endif
216 222
217/** \brief matrix_setup 223/** \brief matrix_setup
@@ -426,64 +432,74 @@ void switch_events(uint8_t row, uint8_t col, bool pressed) {
426#endif 432#endif
427} 433}
428 434
429/** \brief Perform scan of keyboard matrix 435/**
436 * @brief Generates a tick event at a maximum rate of 1KHz that drives the
437 * internal QMK state machine.
438 */
439static inline void generate_tick_event(void) {
440 static uint16_t last_tick = 0;
441 const uint16_t now = timer_read();
442 if (TIMER_DIFF_16(now, last_tick) != 0) {
443 action_exec(TICK_EVENT);
444 last_tick = now;
445 }
446}
447
448/**
449 * @brief This task scans the keyboards matrix and processes any key presses
450 * that occur.
430 * 451 *
431 * Any detected changes in state are sent out as part of the processing 452 * @return true Matrix did change
453 * @return false Matrix didn't change
432 */ 454 */
433bool matrix_scan_task(void) { 455static bool matrix_task(void) {
434 static matrix_row_t matrix_prev[MATRIX_ROWS]; 456 static matrix_row_t matrix_previous[MATRIX_ROWS];
435 matrix_row_t matrix_row = 0;
436 matrix_row_t matrix_change = 0;
437#ifdef QMK_KEYS_PER_SCAN
438 uint8_t keys_processed = 0;
439#endif
440 457
441 uint8_t matrix_changed = matrix_scan(); 458 matrix_scan();
442 if (matrix_changed) last_matrix_activity_trigger();
443 459
444 for (uint8_t r = 0; r < MATRIX_ROWS; r++) { 460 bool matrix_changed = false;
445 matrix_row = matrix_get_row(r); 461 for (uint8_t row = 0; row < MATRIX_ROWS && !matrix_changed; row++) {
446 matrix_change = matrix_row ^ matrix_prev[r]; 462 matrix_changed |= matrix_previous[row] ^ matrix_get_row(row);
447 if (matrix_change) { 463 }
448#ifdef MATRIX_HAS_GHOST 464
449 if (has_ghost_in_row(r, matrix_row)) { 465 matrix_scan_perf_task();
450 continue; 466
451 } 467 // Short-circuit the complete matrix processing if it is not necessary
452#endif 468 if (!matrix_changed) {
453 if (debug_matrix) matrix_print(); 469 generate_tick_event();
454 matrix_row_t col_mask = 1; 470 return matrix_changed;
455 for (uint8_t c = 0; c < MATRIX_COLS; c++, col_mask <<= 1) { 471 }
456 if (matrix_change & col_mask) { 472
457 if (should_process_keypress()) { 473 if (debug_config.matrix) {
458 action_exec((keyevent_t){ 474 matrix_print();
459 .key = (keypos_t){.row = r, .col = c}, .pressed = (matrix_row & col_mask), .time = (timer_read() | 1) /* time should not be 0 */ 475 }
460 }); 476
461 } 477 const bool process_keypress = should_process_keypress();
462 // record a processed key 478
463 matrix_prev[r] ^= col_mask; 479 for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
464 480 const matrix_row_t current_row = matrix_get_row(row);
465 switch_events(r, c, (matrix_row & col_mask)); 481 const matrix_row_t row_changes = current_row ^ matrix_previous[row];
466 482
467#ifdef QMK_KEYS_PER_SCAN 483 if (!row_changes || has_ghost_in_row(row, current_row)) {
468 // only jump out if we have processed "enough" keys. 484 continue;
469 if (++keys_processed >= QMK_KEYS_PER_SCAN) 485 }
470#endif 486
471 // process a key per task call 487 matrix_row_t col_mask = 1;
472 goto MATRIX_LOOP_END; 488 for (uint8_t col = 0; col < MATRIX_COLS; col++, col_mask <<= 1) {
489 if (row_changes & col_mask) {
490 const bool key_pressed = current_row & col_mask;
491
492 if (process_keypress) {
493 action_exec(MAKE_KEYEVENT(row, col, key_pressed));
473 } 494 }
495
496 switch_events(row, col, key_pressed);
474 } 497 }
475 } 498 }
476 }
477 // call with pseudo tick event when no real key event.
478#ifdef QMK_KEYS_PER_SCAN
479 // we can get here with some keys processed now.
480 if (!keys_processed)
481#endif
482 action_exec(TICK_EVENT);
483 499
484MATRIX_LOOP_END: 500 matrix_previous[row] = current_row;
501 }
485 502
486 matrix_scan_perf_task();
487 return matrix_changed; 503 return matrix_changed;
488} 504}
489 505
@@ -562,20 +578,12 @@ void quantum_task(void) {
562#endif 578#endif
563} 579}
564 580
565/** \brief Keyboard task: Do keyboard routine jobs 581/** \brief Main task that is repeatedly called as fast as possible. */
566 *
567 * Do routine keyboard jobs:
568 *
569 * * scan matrix
570 * * handle mouse movements
571 * * handle midi commands
572 * * light LEDs
573 *
574 * This is repeatedly called as fast as possible.
575 */
576void keyboard_task(void) { 582void keyboard_task(void) {
577 bool matrix_changed = matrix_scan_task(); 583 const bool matrix_changed = matrix_task();
578 (void)matrix_changed; 584 if (matrix_changed) {
585 last_matrix_activity_trigger();
586 }
579 587
580 quantum_task(); 588 quantum_task();
581 589
@@ -597,8 +605,10 @@ void keyboard_task(void) {
597#endif 605#endif
598 606
599#ifdef ENCODER_ENABLE 607#ifdef ENCODER_ENABLE
600 bool encoders_changed = encoder_read(); 608 const bool encoders_changed = encoder_read();
601 if (encoders_changed) last_encoder_activity_trigger(); 609 if (encoders_changed) {
610 last_encoder_activity_trigger();
611 }
602#endif 612#endif
603 613
604#ifdef OLED_ENABLE 614#ifdef OLED_ENABLE
diff --git a/quantum/keyboard.h b/quantum/keyboard.h
index fe0736a515..86ce65aac1 100644
--- a/quantum/keyboard.h
+++ b/quantum/keyboard.h
@@ -71,9 +71,15 @@ static inline bool IS_RELEASED(keyevent_t event) {
71 71
72/* Common keyevent object factory */ 72/* Common keyevent object factory */
73#define MAKE_KEYPOS(row_num, col_num) ((keypos_t){.row = (row_num), .col = (col_num)}) 73#define MAKE_KEYPOS(row_num, col_num) ((keypos_t){.row = (row_num), .col = (col_num)})
74
75/**
76 * @brief Constructs a key event for a pressed or released key.
77 */
74#define MAKE_KEYEVENT(row_num, col_num, press) ((keyevent_t){.key = MAKE_KEYPOS((row_num), (col_num)), .pressed = (press), .time = (timer_read() | 1)}) 78#define MAKE_KEYEVENT(row_num, col_num, press) ((keyevent_t){.key = MAKE_KEYPOS((row_num), (col_num)), .pressed = (press), .time = (timer_read() | 1)})
75 79
76/* Tick event */ 80/**
81 * @brief Constructs a internal tick event that is used to drive the internal QMK state machine.
82 */
77#define TICK_EVENT MAKE_KEYEVENT(KEYLOC_TICK, KEYLOC_TICK, false) 83#define TICK_EVENT MAKE_KEYEVENT(KEYLOC_TICK, KEYLOC_TICK, false)
78 84
79#ifdef ENCODER_MAP_ENABLE 85#ifdef ENCODER_MAP_ENABLE
diff --git a/tests/basic/test_keypress.cpp b/tests/basic/test_keypress.cpp
index bb68ced557..6d5b502a00 100644
--- a/tests/basic/test_keypress.cpp
+++ b/tests/basic/test_keypress.cpp
@@ -64,11 +64,7 @@ TEST_F(KeyPress, CorrectKeysAreReportedWhenTwoKeysArePressed) {
64 64
65 key_b.press(); 65 key_b.press();
66 key_c.press(); 66 key_c.press();
67 // Note that QMK only processes one key at a time
68 // See issue #1476 for more information
69 EXPECT_REPORT(driver, (key_b.report_code)); 67 EXPECT_REPORT(driver, (key_b.report_code));
70 keyboard_task();
71
72 EXPECT_REPORT(driver, (key_b.report_code, key_c.report_code)); 68 EXPECT_REPORT(driver, (key_b.report_code, key_c.report_code));
73 keyboard_task(); 69 keyboard_task();
74 70
@@ -76,8 +72,6 @@ TEST_F(KeyPress, CorrectKeysAreReportedWhenTwoKeysArePressed) {
76 key_c.release(); 72 key_c.release();
77 // Note that the first key released is the first one in the matrix order 73 // Note that the first key released is the first one in the matrix order
78 EXPECT_REPORT(driver, (key_c.report_code)); 74 EXPECT_REPORT(driver, (key_c.report_code));
79 keyboard_task();
80
81 EXPECT_EMPTY_REPORT(driver); 75 EXPECT_EMPTY_REPORT(driver);
82 keyboard_task(); 76 keyboard_task();
83} 77}
@@ -92,10 +86,7 @@ TEST_F(KeyPress, LeftShiftIsReportedCorrectly) {
92 key_lsft.press(); 86 key_lsft.press();
93 key_a.press(); 87 key_a.press();
94 88
95 // Unfortunately modifiers are also processed in the wrong order
96 // See issue #1476 for more information
97 EXPECT_REPORT(driver, (key_a.report_code)); 89 EXPECT_REPORT(driver, (key_a.report_code));
98 keyboard_task();
99 EXPECT_REPORT(driver, (key_a.report_code, key_lsft.report_code)); 90 EXPECT_REPORT(driver, (key_a.report_code, key_lsft.report_code));
100 keyboard_task(); 91 keyboard_task();
101 92
@@ -118,11 +109,7 @@ TEST_F(KeyPress, PressLeftShiftAndControl) {
118 key_lsft.press(); 109 key_lsft.press();
119 key_lctrl.press(); 110 key_lctrl.press();
120 111
121 // Unfortunately modifiers are also processed in the wrong order
122 // See issue #1476 for more information
123 EXPECT_REPORT(driver, (key_lsft.report_code)); 112 EXPECT_REPORT(driver, (key_lsft.report_code));
124 keyboard_task();
125
126 EXPECT_REPORT(driver, (key_lsft.report_code, key_lctrl.report_code)); 113 EXPECT_REPORT(driver, (key_lsft.report_code, key_lctrl.report_code));
127 keyboard_task(); 114 keyboard_task();
128 115
@@ -130,8 +117,6 @@ TEST_F(KeyPress, PressLeftShiftAndControl) {
130 key_lctrl.release(); 117 key_lctrl.release();
131 118
132 EXPECT_REPORT(driver, (key_lctrl.report_code)); 119 EXPECT_REPORT(driver, (key_lctrl.report_code));
133 keyboard_task();
134
135 EXPECT_EMPTY_REPORT(driver); 120 EXPECT_EMPTY_REPORT(driver);
136 keyboard_task(); 121 keyboard_task();
137} 122}
@@ -145,20 +130,13 @@ TEST_F(KeyPress, LeftAndRightShiftCanBePressedAtTheSameTime) {
145 130
146 key_lsft.press(); 131 key_lsft.press();
147 key_rsft.press(); 132 key_rsft.press();
148 // Unfortunately modifiers are also processed in the wrong order
149 // See issue #1476 for more information
150 EXPECT_REPORT(driver, (key_lsft.report_code)); 133 EXPECT_REPORT(driver, (key_lsft.report_code));
151 keyboard_task();
152
153 EXPECT_REPORT(driver, (key_lsft.report_code, key_rsft.report_code)); 134 EXPECT_REPORT(driver, (key_lsft.report_code, key_rsft.report_code));
154 keyboard_task(); 135 keyboard_task();
155 136
156 key_lsft.release(); 137 key_lsft.release();
157 key_rsft.release(); 138 key_rsft.release();
158
159 EXPECT_REPORT(driver, (key_rsft.report_code)); 139 EXPECT_REPORT(driver, (key_rsft.report_code));
160 keyboard_task();
161
162 EXPECT_EMPTY_REPORT(driver); 140 EXPECT_EMPTY_REPORT(driver);
163 keyboard_task(); 141 keyboard_task();
164} 142}
diff --git a/tests/tap_dance/test_examples.cpp b/tests/tap_dance/test_examples.cpp
index e67e6cb907..6dabc45513 100644
--- a/tests/tap_dance/test_examples.cpp
+++ b/tests/tap_dance/test_examples.cpp
@@ -92,10 +92,9 @@ TEST_F(TapDance, DoubleTapWithMod) {
92 key_shift.release(); 92 key_shift.release();
93 key_esc_caps.press(); 93 key_esc_caps.press();
94 EXPECT_REPORT(driver, (KC_LSFT, KC_CAPS)); 94 EXPECT_REPORT(driver, (KC_LSFT, KC_CAPS));
95 EXPECT_REPORT(driver, (KC_CAPS));
95 run_one_scan_loop(); 96 run_one_scan_loop();
96 key_esc_caps.release(); 97 key_esc_caps.release();
97 EXPECT_REPORT(driver, (KC_LSFT));
98 run_one_scan_loop();
99 EXPECT_EMPTY_REPORT(driver); 98 EXPECT_EMPTY_REPORT(driver);
100 run_one_scan_loop(); 99 run_one_scan_loop();
101} 100}
diff --git a/users/curry/config.h b/users/curry/config.h
index 3301ebe533..0c96293bd5 100644
--- a/users/curry/config.h
+++ b/users/curry/config.h
@@ -65,10 +65,6 @@
65# define ONESHOT_TIMEOUT 3000 65# define ONESHOT_TIMEOUT 3000
66#endif // !ONESHOT_TIMEOUT 66#endif // !ONESHOT_TIMEOUT
67 67
68#if !defined(QMK_KEYS_PER_SCAN)
69# define QMK_KEYS_PER_SCAN 4
70#endif // !QMK_KEYS_PER_SCAN
71
72#define IGNORE_MOD_TAP_INTERRUPT 68#define IGNORE_MOD_TAP_INTERRUPT
73#undef PERMISSIVE_HOLD 69#undef PERMISSIVE_HOLD
74 70
diff --git a/users/drashna/post_config.h b/users/drashna/post_config.h
index 2d5e6438d6..85c028076e 100644
--- a/users/drashna/post_config.h
+++ b/users/drashna/post_config.h
@@ -37,10 +37,6 @@
37# define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_REST_MODE 37# define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_REST_MODE
38#endif 38#endif
39 39
40#ifndef QMK_KEYS_PER_SCAN
41# define QMK_KEYS_PER_SCAN 8
42#endif
43
44#ifdef MOUSEKEY_ENABLE 40#ifdef MOUSEKEY_ENABLE
45// mouse movement config 41// mouse movement config
46# ifdef MK_3_SPEED 42# ifdef MK_3_SPEED
diff --git a/users/ishtob/config.h b/users/ishtob/config.h
index 6c07d2f2fd..695077528c 100755
--- a/users/ishtob/config.h
+++ b/users/ishtob/config.h
@@ -16,7 +16,6 @@
16//#define LEADER_TIMEOUT 300 16//#define LEADER_TIMEOUT 300
17//#define BACKLIGHT_BREATHING 17//#define BACKLIGHT_BREATHING
18//#define PERMISSIVE_HOLD 18//#define PERMISSIVE_HOLD
19// #define QMK_KEYS_PER_SCAN 4
20 19
21//audio clicky 20//audio clicky
22 //#define AUDIO_CLICKY 21 //#define AUDIO_CLICKY
diff --git a/users/issmirnov/config.h b/users/issmirnov/config.h
index 664ebfe8a3..5fe78f7a53 100644
--- a/users/issmirnov/config.h
+++ b/users/issmirnov/config.h
@@ -1,8 +1,5 @@
1#pragma once 1#pragma once
2 2
3// Allows sending more than one key per scan. Useful for chords.
4#define QMK_KEYS_PER_SCAN 4
5
6// how long before a tap becomes a hold 3// how long before a tap becomes a hold
7#undef TAPPING_TERM 4#undef TAPPING_TERM
8#define TAPPING_TERM 100 5#define TAPPING_TERM 100
diff --git a/users/kuchosauronad0/config.h b/users/kuchosauronad0/config.h
index 58542dc184..8502031f02 100644
--- a/users/kuchosauronad0/config.h
+++ b/users/kuchosauronad0/config.h
@@ -41,10 +41,6 @@
41# define ONESHOT_TIMEOUT 3000 41# define ONESHOT_TIMEOUT 3000
42#endif// !ONESHOT_TIMEOUT 42#endif// !ONESHOT_TIMEOUT
43 43
44#ifndef QMK_KEYS_PER_SCAN
45# define QMK_KEYS_PER_SCAN 4
46#endif // !QMK_KEYS_PER_SCAN
47
48#if defined(LEADER_ENABLE) 44#if defined(LEADER_ENABLE)
49# define LEADER_PER_KEY_TIMING 45# define LEADER_PER_KEY_TIMING
50# define LEADER_TIMEOUT 250 46# define LEADER_TIMEOUT 250
diff --git a/users/miles2go/config.h b/users/miles2go/config.h
index a704df4b55..2a1d6504d6 100644
--- a/users/miles2go/config.h
+++ b/users/miles2go/config.h
@@ -6,10 +6,6 @@
6#define RGBLIGHT_EFFECT_BREATHING 6#define RGBLIGHT_EFFECT_BREATHING
7#endif // RGBLIGHT_ENABLE 7#endif // RGBLIGHT_ENABLE
8 8
9#ifndef QMK_KEYS_PER_SCAN
10#define QMK_KEYS_PER_SCAN 4
11#endif // !QMK_KEYS_PER_SCAN
12
13#undef FORCE_NKRO 9#undef FORCE_NKRO
14 10
15#ifndef TAPPING_TOGGLE 11#ifndef TAPPING_TOGGLE
diff --git a/users/yet-another-developer/config.h b/users/yet-another-developer/config.h
index d46d487fe3..6d1bf83f0b 100644
--- a/users/yet-another-developer/config.h
+++ b/users/yet-another-developer/config.h
@@ -11,10 +11,6 @@
11 #define ONESHOT_TIMEOUT 2000 11 #define ONESHOT_TIMEOUT 2000
12#endif // !ONESHOT_TIMEOUT 12#endif // !ONESHOT_TIMEOUT
13 13
14#ifndef QMK_KEYS_PER_SCAN
15 #define QMK_KEYS_PER_SCAN 4
16#endif // !QMK_KEYS_PER_SCAN
17
18#if defined(LEADER_ENABLE) 14#if defined(LEADER_ENABLE)
19 #define LEADER_PER_KEY_TIMING 15 #define LEADER_PER_KEY_TIMING
20 #define LEADER_TIMEOUT 250 16 #define LEADER_TIMEOUT 250
diff --git a/users/zer09/config.h b/users/zer09/config.h
index c5ab32f8d4..0324aaa7d3 100644
--- a/users/zer09/config.h
+++ b/users/zer09/config.h
@@ -1,10 +1,6 @@
1#ifndef USERSPACE_CONFIG_H 1#ifndef USERSPACE_CONFIG_H
2#define USERSPACE_CONFIG_H 2#define USERSPACE_CONFIG_H
3 3
4#ifndef QMK_KEYS_PER_SCAN
5#define QMK_KEYS_PER_SCAN 4
6#endif // !QMK_KEYS_PER_SCAN
7
8// this makes it possible to do rolling combos (zx) with keys that 4// this makes it possible to do rolling combos (zx) with keys that
9// convert to other keys on hold (z becomes ctrl when you hold it, 5// convert to other keys on hold (z becomes ctrl when you hold it,
10// and when this option isn't enabled, z rapidly followed by x 6// and when this option isn't enabled, z rapidly followed by x