aboutsummaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
Diffstat (limited to 'docs')
-rw-r--r--docs/_summary.md1
-rw-r--r--docs/feature_dip_switch.md90
-rw-r--r--docs/features.md1
-rw-r--r--docs/zh-cn/_summary.md1
4 files changed, 93 insertions, 0 deletions
diff --git a/docs/_summary.md b/docs/_summary.md
index d7a49a968..4e87d8f1f 100644
--- a/docs/_summary.md
+++ b/docs/_summary.md
@@ -63,6 +63,7 @@
63 * [Combos](feature_combo.md) 63 * [Combos](feature_combo.md)
64 * [Command](feature_command.md) 64 * [Command](feature_command.md)
65 * [Debounce API](feature_debounce_type.md) 65 * [Debounce API](feature_debounce_type.md)
66 * [DIP Switch](feature_dip_switch.md)
66 * [Dynamic Macros](feature_dynamic_macros.md) 67 * [Dynamic Macros](feature_dynamic_macros.md)
67 * [Encoders](feature_encoders.md) 68 * [Encoders](feature_encoders.md)
68 * [Grave Escape](feature_grave_esc.md) 69 * [Grave Escape](feature_grave_esc.md)
diff --git a/docs/feature_dip_switch.md b/docs/feature_dip_switch.md
new file mode 100644
index 000000000..bce47fed8
--- /dev/null
+++ b/docs/feature_dip_switch.md
@@ -0,0 +1,90 @@
1# DIP Switches
2
3DIP switches are supported by adding this to your `rules.mk`:
4
5 DIP_SWITCH_ENABLE = yes
6
7and this to your `config.h`:
8
9```c
10#define DIP_SWITCH_PINS { B14, A15, A10, B9 }
11```
12
13## Callbacks
14
15The callback functions can be inserted into your `<keyboard>.c`:
16
17```c
18void dip_switch_update_kb(uint8_t index, bool active) {
19 dip_switch_update_user(index, active);
20}
21```
22
23
24or `keymap.c`:
25
26```c
27void dip_switch_update_user(uint8_t index, bool active) {
28 switch (index) {
29 case 0:
30 if(active) { audio_on(); } else { audio_off(); }
31 break;
32 case 1:
33 if(active) { clicky_on(); } else { clicky_off(); }
34 break;
35 case 2:
36 if(active) { music_on(); } else { music_off(); }
37 break;
38 case 3:
39 if (active) {
40 #ifdef AUDIO_ENABLE
41 PLAY_SONG(plover_song);
42 #endif
43 layer_on(_PLOVER);
44 } else {
45 #ifdef AUDIO_ENABLE
46 PLAY_SONG(plover_gb_song);
47 #endif
48 layer_off(_PLOVER);
49 }
50 break;
51 }
52}
53```
54
55Additionally, we support bit mask functions which allow for more complex handling.
56
57
58```c
59void dip_switch_update_mask_kb(uint32_t state) {
60 dip_switch_update_mask_user(state);
61}
62```
63
64
65or `keymap.c`:
66
67```c
68void dip_switch_update_mask_user(uint32_t state) {
69 if (state & (1UL<<0) && state & (1UL<<1)) {
70 layer_on(_ADJUST); // C on esc
71 } else {
72 layer_off(_ADJUST);
73 }
74 if (state & (1UL<<0)) {
75 layer_on(_TEST_A); // A on ESC
76 } else {
77 layer_off(_TEST_A);
78 }
79 if (state & (1UL<<1)) {
80 layer_on(_TEST_B); // B on esc
81 } else {
82 layer_off(_TEST_B);
83 }
84}
85```
86
87
88## Hardware
89
90One side of the DIP switch should be wired directly to the pin on the MCU, and the other side to ground. It should not matter which side is connected to which, as it should be functionally the same.
diff --git a/docs/features.md b/docs/features.md
index f230c7c23..44299bf10 100644
--- a/docs/features.md
+++ b/docs/features.md
@@ -12,6 +12,7 @@ QMK has a staggering number of features for building your keyboard. It can take
12* [Combos](feature_combo.md) - Custom actions for multiple key holds. 12* [Combos](feature_combo.md) - Custom actions for multiple key holds.
13* [Command](feature_command.md) - Runtime version of bootmagic (Formerly known as "Magic"). 13* [Command](feature_command.md) - Runtime version of bootmagic (Formerly known as "Magic").
14* [Debounce API](feature_debounce_type.md) - Customization of debouncing algorithms, and the ability to add more/custom debouncing. 14* [Debounce API](feature_debounce_type.md) - Customization of debouncing algorithms, and the ability to add more/custom debouncing.
15* [DIP Switch](feature_dip_switch.md) - Toggle switches for customizing board function.
15* [Dynamic Macros](feature_dynamic_macros.md) - Record and playback macros from the keyboard itself. 16* [Dynamic Macros](feature_dynamic_macros.md) - Record and playback macros from the keyboard itself.
16* [Encoders](feature_encoders.md) - Rotary encoders! 17* [Encoders](feature_encoders.md) - Rotary encoders!
17* [Grave Escape](feature_grave_esc.md) - Lets you use a single key for Esc and Grave. 18* [Grave Escape](feature_grave_esc.md) - Lets you use a single key for Esc and Grave.
diff --git a/docs/zh-cn/_summary.md b/docs/zh-cn/_summary.md
index b0d9f1c06..98b1440d9 100644
--- a/docs/zh-cn/_summary.md
+++ b/docs/zh-cn/_summary.md
@@ -54,6 +54,7 @@
54 * [热改键](feature_bootmagic.md) 54 * [热改键](feature_bootmagic.md)
55 * [组合](feature_combo) 55 * [组合](feature_combo)
56 * [命令](feature_command.md) 56 * [命令](feature_command.md)
57 * [拨动开关](feature_dip_switch.md)
57 * [动态宏指令](feature_dynamic_macros.md) 58 * [动态宏指令](feature_dynamic_macros.md)
58 * [编码器](feature_encoders.md) 59 * [编码器](feature_encoders.md)
59 * [重音号Esc复合键](feature_grave_esc.md) 60 * [重音号Esc复合键](feature_grave_esc.md)