aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjack <[email protected]>2022-11-03 14:24:15 -0600
committerjack <[email protected]>2022-11-03 15:42:58 -0600
commite55177fb5b88a09c8d9882a33c33c5bfbc19e1fb (patch)
tree87f3c2132755066249a5eee7286b88654dce7a78
parent731ae4f105356608ba2f3fceafa2ccef7df53b39 (diff)
downloadqmk_me-e55177fb5b88a09c8d9882a33c33c5bfbc19e1fb.tar.gz
qmk_me-e55177fb5b88a09c8d9882a33c33c5bfbc19e1fb.zip
various readme updates
-rw-r--r--img/bark.pngbin0 -> 297 bytes
-rw-r--r--img/num.pngbin0 -> 929 bytes
-rw-r--r--img/run.pngbin0 -> 286 bytes
-rw-r--r--img/sit.pngbin0 -> 259 bytes
-rw-r--r--img/sneak.pngbin0 -> 255 bytes
-rw-r--r--img/sym.pngbin0 -> 929 bytes
-rw-r--r--img/sys.pngbin0 -> 1034 bytes
-rw-r--r--img/walk.pngbin0 -> 280 bytes
-rw-r--r--img/wpm_graph.gifbin0 -> 3114411 bytes
-rw-r--r--keyboards/minidox/keymaps/default/keymap.c15
-rw-r--r--keymaps/crkbd/readme.md15
-rw-r--r--keymaps/crkbd/rules.mk1
-rw-r--r--keymaps/ferris/readme.md4
-rw-r--r--keymaps/kyria/readme.md4
-rw-r--r--keymaps/microdox/readme.md3
-rw-r--r--readme.md88
-rw-r--r--waffle/raw.py2
-rw-r--r--waffle/tapping.c4
18 files changed, 97 insertions, 39 deletions
diff --git a/img/bark.png b/img/bark.png
new file mode 100644
index 0000000..4b31319
--- /dev/null
+++ b/img/bark.png
Binary files differ
diff --git a/img/num.png b/img/num.png
new file mode 100644
index 0000000..b42e334
--- /dev/null
+++ b/img/num.png
Binary files differ
diff --git a/img/run.png b/img/run.png
new file mode 100644
index 0000000..4ce1a82
--- /dev/null
+++ b/img/run.png
Binary files differ
diff --git a/img/sit.png b/img/sit.png
new file mode 100644
index 0000000..765e8ef
--- /dev/null
+++ b/img/sit.png
Binary files differ
diff --git a/img/sneak.png b/img/sneak.png
new file mode 100644
index 0000000..9c99f82
--- /dev/null
+++ b/img/sneak.png
Binary files differ
diff --git a/img/sym.png b/img/sym.png
new file mode 100644
index 0000000..9e8f0f1
--- /dev/null
+++ b/img/sym.png
Binary files differ
diff --git a/img/sys.png b/img/sys.png
new file mode 100644
index 0000000..176edd5
--- /dev/null
+++ b/img/sys.png
Binary files differ
diff --git a/img/walk.png b/img/walk.png
new file mode 100644
index 0000000..b475da3
--- /dev/null
+++ b/img/walk.png
Binary files differ
diff --git a/img/wpm_graph.gif b/img/wpm_graph.gif
new file mode 100644
index 0000000..8f53716
--- /dev/null
+++ b/img/wpm_graph.gif
Binary files differ
diff --git a/keyboards/minidox/keymaps/default/keymap.c b/keyboards/minidox/keymaps/default/keymap.c
deleted file mode 100644
index e354440..0000000
--- a/keyboards/minidox/keymaps/default/keymap.c
+++ /dev/null
@@ -1,15 +0,0 @@
-#include QMK_KEYBOARD_H
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [0] = LAYOUT_split_3x5_3(
- KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
- KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,
- KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,
- MO(1), KC_SPC, KC_MS_L, KC_MS_R, KC_BSPC, MO(2)
- ),
- [1] = LAYOUT_split_3x5_3(
- KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
- KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN,
- KC_ESC, KC_TAB, KC_CAPS, KC_TILD, KC_GRV, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT, KC_RGUI,
- KC_TRNS, KC_SPC, KC_LGUI, KC_PGUP, KC_VOLU, KC_MS_U
- )
-};
diff --git a/keymaps/crkbd/readme.md b/keymaps/crkbd/readme.md
index e1257ea..308791e 100644
--- a/keymaps/crkbd/readme.md
+++ b/keymaps/crkbd/readme.md
@@ -1,2 +1,17 @@
### [proton-c crkbd](https://github.com/waffle87/waffle_corne)
![img](https://i.imgur.com/ob8D0hY.jpeg)
+
+#### notes
+[low scan mode](https://github.com/waffle87/qmk.me/blob/master/keymaps/crkbd/keymap.c#L24-#L46) to avoid unecessary scans if there's no matrix activity (5s timeout)\
+[audio configuration](https://github.com/waffle87/qmk.me/blob/master/keymaps/crkbd/keymap.c#L49-#L57) to pass output from B1 to A5 (proper dac pin).
+```c
+extern LED_TYPE rgb_matrix_ws2812_array[RGB_MATRIX_LED_COUNT];
+bool rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
+ pimoroni_trackball_set_rgbw(rgb_matrix_ws2812_array[29].r, rgb_matrix_ws2812_array[29].g, rgb_matrix_ws2812_array[29].b, 0);
+ for (uint8_t i = led_min; i <= led_max; i++)
+ if (g_led_config.flags[i] & LED_FLAG_UNDERGLOW)
+ rgb_matrix_set_color(i, RGB_YELLOW);
+ return false;
+}
+```
+above snippet aligns pimoronic trackball rgb led with the active rgb matrix animation, & sets the underglow leds to yellow.
diff --git a/keymaps/crkbd/rules.mk b/keymaps/crkbd/rules.mk
index eef496f..a08817e 100644
--- a/keymaps/crkbd/rules.mk
+++ b/keymaps/crkbd/rules.mk
@@ -4,6 +4,7 @@ SERIAL_DRIVER = usart
WS2812_DRIVER = pwm
OLED_ENABLE = yes
AUDIO_ENABLE = yes
+AUDIO_DRIVER = dac_basic
RGB_MATRIX_ENABLE = yes
ENCODER_ENABLE = yes
ENCODER_MAP_ENABLE = yes
diff --git a/keymaps/ferris/readme.md b/keymaps/ferris/readme.md
index 1e54d11..c3ac9ca 100644
--- a/keymaps/ferris/readme.md
+++ b/keymaps/ferris/readme.md
@@ -2,3 +2,7 @@
![parts](https://i.imgur.com/zKJoYMa.jpeg)
![switches](https://i.imgur.com/ZSEpMGf.jpeg)
![complete](https://i.imgur.com/Op0bU0N.jpeg)
+
+#### notes
+an elite-c was required for this pcb, as it exposes an io pin where most pro-micro's have a raw power pin.\
+this means no diodes are required :^)
diff --git a/keymaps/kyria/readme.md b/keymaps/kyria/readme.md
index e473b8a..cc9bab8 100644
--- a/keymaps/kyria/readme.md
+++ b/keymaps/kyria/readme.md
@@ -1,4 +1,4 @@
-### RP2040 Kyria rev2
+### rp2040 kyria rev2
![photo](https://i.imgur.com/P0urp7n.jpeg)
#### parts & notes
@@ -25,3 +25,5 @@ from there, wired trackpad directly to oled header pins on pcb. looks a bit iffy
![trackpad wiring](https://i.imgur.com/tvLVEe0.jpeg)
* [pucks](https://splitkb.com/collections/keyboard-parts/products/tenting-puck) and [tripods](https://www.amazon.com/Manfrotto-MP3-BK-Large-Pocket-Support/dp/B00HCAB8MU) for tenting-puck
+
+* wpm graph is very resource intensive and drops matrix scan rate to ~200/s...
diff --git a/keymaps/microdox/readme.md b/keymaps/microdox/readme.md
index 025c17b..0291124 100644
--- a/keymaps/microdox/readme.md
+++ b/keymaps/microdox/readme.md
@@ -1,7 +1,6 @@
-### RP2040 Microdox v2
+### rp2040 microdox v2
![photo](https://raw.githubusercontent.com/waffle87/microdox/master/images/mdox.png)
* microcontrollers: [sparkfun rp2040 pro micro](https://www.sparkfun.com/products/18288)
only complaint is the added height from the buttons, qwiic connector, & usb-c port, but still seems to work with [low profile sockets](https://www.digikey.com/product-detail/en/mill-max-manufacturing-corp/315-43-164-41-003000/ED4764-64-ND/1212143).
-`CONVERT_TO = promicro_rp2040` is all the configuration this keyboard needs thanks to the recent converter work :^)
diff --git a/readme.md b/readme.md
index 5a9fe82..c647131 100644
--- a/readme.md
+++ b/readme.md
@@ -1,8 +1,27 @@
+### qmk.me
+this is a self-contained repository for my personal [qmk](https://github.com/qmk/qmk_firmware) userspace & keyboard code.\
+![keyboard](https://i.imgur.com/s0dN0JDh.jpeg)
+
+### building
+symlinks are used to compile this code in a proper `qmk_firmware` repository.\
+eg.
+```shell
+ln -s ~/qmk.me/waffle ~/qmk_firmware/users/waffle
+ln -s ~/qmk.me/keyboards/relic ~/qmk_firmware/keyboards/relic
+echo "users/waffle\nkeyboards/relic" >> ~/qmk_firmware/.git/info/exclude
+qmk compile -kb relic -km waffle
+
+```
+
### layout
![layout](https://i.imgur.com/uKNJuKi.png)
### combos
-`#define COMBO_TERM 50`
+[combos.h](waffle/combos.h) contains macros that allow for combos be simply defined in a `combos.def` file as
+```
+CMB(<name>, <output>, <trigger keycodes>)
+```
+`#define COMBO_TERM 40`
| trigger | output (single/double tap) |
| :-----: | :------------------------: |
| r + u | enter |
@@ -20,14 +39,21 @@
| f + g | right click |
### oled
-[font file](oledfont.h) can be viewed and modified at [qmk logo editor](https://joric.github.io/qle)\
-all the boring animation code is stored in [oled.h](https://github.com/waffle87/qmk_firmware/blob/waffle_develop/users/waffle/oled.h)
+[font file](waffle/oledfont.h) can be viewed and modified at [qmk logo editor](https://joric.github.io/qle)\
+all the boring animation code is stored in [oled.h](waffle/oled.h)
**animations:**\
-[felix the dog](https://github.com/waffle87/qmk_firmware/blob/waffle_develop/users/waffle/oled.c#L133-#L151)\
-[bongo cat](https://github.com/waffle87/qmk_firmware/blob/waffle_develop/users/waffle/oled.c#L155-#L172)\
-[layer animation](https://github.com/waffle87/qmk_firmware/blob/waffle_develop/users/waffle/oled.c#L206-#L229)\
-below snippet can be used to render the big byte arrays used by animations.
+[felix the dog](https://github.com/waffle87/qmk.me/blob/master/waffle/oled.c#L128-#L149)\
+![sit](img/sit.png) ![walk](img/walk.png) ![run](img/run.png) ![bark](img/bark.png) ![sneak](img/sneak.png)\
+[layer animation](https://github.com/waffle87/qmk.me/blob/master/waffle/oled.c#L203-#L226)\
+![num](img/num.png)\
+![sym](img/sym.png)\
+![sys](img/sys.png)\
+[wpm graph](https://github.com/waffle87/qmk.me/blob/master/waffle/oled.c#L170-#L201)\
+![gif](img/wpm_graph.gif)\
+[bongo cat](https://github.com/waffle87/qmk.me/blob/master/waffle/oled.c#L151-#L168)
+
+the below snippet is used to render the big byte arrays used by animations.
where `size` is the array size and `action` is the animation frame name.
```c
void anim_frame(uint16_t size, char const action[][size]) {
@@ -37,9 +63,11 @@ void anim_frame(uint16_t size, char const action[][size]) {
}
```
**custom timeout:**\
-some animations don't respect `OLED_TIMEOUT`, so a custom timeout from [drashna](https://github.com/qmk/qmk_firmware/blob/develop/users/drashna/oled/oled_stuff.c) can be used.
-this depends on `OLED_DISABLE_TIMEOUT` & `SPLIT_OLED_ENABLE` being defined.
+some animations don't respect `OLED_TIMEOUT`, so a custom timeout from [drashna](https://github.com/qmk/qmk_firmware/blob/master/users/drashna/oled/oled_stuff.c) can be used.
+(this depends on `OLED_DISABLE_TIMEOUT` & `SPLIT_OLED_ENABLE` being defined)
```c
+uint32_t oled_timer = 0;
+
bool oled_task_user(void) {
if (is_keyboard_master()) {
if (timer_elapsed32(oled_timer) > 180000) { //turn off after 3min
@@ -53,7 +81,6 @@ bool oled_task_user(void) {
return false;
}
-uint32_t oled_timer = 0;
void oled_timer_reset(void) {
oled_timer = timer_read32();
}
@@ -67,7 +94,8 @@ the above snippet is also neat because global oled behavior can be placed in `ol
while keyboard specific oled code, like rendering certain things, can go in `oled_task_keymap`.
### raw hid
-[raw.py](raw.py) is a basic implementation modified from [rawhid in python](https://gist.github.com/fauxpark/03a3efcc7dbdfbfe57791ea267b13c55).
+data is stored in a [typedef](https://github.com/waffle87/qmk.me/blob/master/waffle/waffle.h#L11-#L16) and [assigned](https://github.com/waffle87/qmk.me/blob/master/waffle/waffle.c#L7-#L11) when info is sent by the host.\
+[raw.py](waffle/raw.py) is a basic implementation modified from [rawhid in python](https://gist.github.com/fauxpark/03a3efcc7dbdfbfe57791ea267b13c55).
renders current time on oled display:
```c
void host_info(uint8_t data) {
@@ -85,12 +113,36 @@ void render_time(void) {
host_info(user_state.min);
}
```
+### tap dances & custom keycodes
+macro to help circumvent mod-tap/16-bit keycode limitation:
+```c
+#define INTERCEPT_MOD_TAP(mod, keycode) \
+case mod(keycode): \
+ if (record->tap.count && record->event.pressed) { \
+ tap_code16(keycode); \
+ return false; \
+ } \
+ break; \
+
+```
+which can be called from `process_record_user` as `INTERCEPT_MOD_TAP(LALT_T, KC_EXLM)` for example.
+
+| keycode | action (single/double/triple tap) |
+| :------: | :-------------------------------------------: |
+| `DEG_0` | 0 / ° |
+| `PNP` | play/pause / skip/next / back/prev |
+| `CLIPST` | paste (term) / search (term) / layer 2 (hold) |
+| `UPDIR` | ../ |
+| `RWORD` | outputs a random word ([dict.h](https://raw.githubusercontent.com/qmk/qmk_firmware/master/users/ridingqwerty/dict.h)) |
### some keyboards
-[crkbd](https://github.com/waffle87/qmk_firmware/tree/waffle_develop/keyboards/crkbd/keymaps/waffle)\
-[relic](https://github.com/waffle87/qmk_firmware/tree/waffle_develop/keyboards/relic/keymaps/waffle)\
-[kyria](https://github.com/waffle87/qmk_firmware/tree/waffle_develop/keyboards/splitkb/kyria/keymaps/waffle)\
-[ferris](https://github.com/waffle87/qmk_firmware/tree/waffle_develop/keyboards/ferris/keymaps/waffle)\
-[microdox](https://github.com/waffle87/qmk_firmware/tree/waffle_develop/keyboards/boardsource/microdox/keymaps/waffle)\
-[minidox](https://github.com/waffle87/qmk_firmware/tree/waffle_develop/keyboards/handwired/minidox/keymaps/waffle)\
-[leftover30](https://github.com/waffle87/qmk_firmware/blob/waffle_develop/keyboards/tominabox1/leftover30_arm/keymaps/waffle/keymap.c)
+[crkbd](keymaps/crkbd)\
+[kyria](keymaps/kyria)\
+[ferris](keymaps/ferris)\
+[microdox](keymaps/microdox)\
+[relic](keyboards/relic)\
+[vault35](keyboards/vault35)\
+[xyz60](keyboards/xyz60)\
+[f60](kemaps/f60)\
+[minidox](keyboards/minidox)\
+[leftover30](keyboards/leftover30)
diff --git a/waffle/raw.py b/waffle/raw.py
index 08ed06f..1410156 100644
--- a/waffle/raw.py
+++ b/waffle/raw.py
@@ -25,7 +25,7 @@ def send_packet(data):
if interface is None:
print("no device found")
sys.exit(1)
- request_data = [0x00] * 33 #hidapi doesn't send first byte to host
+ request_data = [0x00] * 33 #hidapi does not send first byte to host
request_data[1:len(data) + 1] = data
request_packet = bytes(request_data)
try:
diff --git a/waffle/tapping.c b/waffle/tapping.c
index 7ef50df..6ade625 100644
--- a/waffle/tapping.c
+++ b/waffle/tapping.c
@@ -41,11 +41,11 @@ void td_reset(qk_tap_dance_state_t *state, void *user_data) {
void qmk_dance(qk_tap_dance_state_t *state, void *user_data) {
if (state->count == 1) {
tap_code16(C(KC_T));
- send_string(qmkstr);
+ SEND_STRING(qmkstr);
tap_code(KC_ENT);
} else {
tap_code16(C(KC_T));
- send_string(confstr);
+ SEND_STRING(confstr);
tap_code(KC_ENT);
}
}