Remove thermal printer. (#18959)
18 files changed, 8 insertions(+), 958 deletions(-) M builddefs/common_features.mk M builddefs/disable_features.mk M builddefs/show_options.mk M data/constants/keycodes/keycodes_0.0.1_quantum.hjson M docs/_summary.md D docs/feature_thermal_printer.md M docs/keycodes.md M docs/understanding_qmk.md D keyboards/planck/keymaps/thermal_printer/config.h D keyboards/planck/keymaps/thermal_printer/keymap.c D keyboards/planck/keymaps/thermal_printer/readme.md D keyboards/planck/keymaps/thermal_printer/rules.mk M quantum/keycodes.h D quantum/process_keycode/process_printer.c D quantum/process_keycode/process_printer.h D quantum/process_keycode/process_printer_bb.c M quantum/quantum.c M quantum/quantum.h
M builddefs/common_features.mk => builddefs/common_features.mk +0 -6
@@ 514,12 514,6 @@ ifeq ($(strip $(RGB_KEYCODES_ENABLE)), yes) SRC += $(QUANTUM_DIR)/process_keycode/process_rgb.c endif ifeq ($(strip $(PRINTING_ENABLE)), yes) OPT_DEFS += -DPRINTING_ENABLE SRC += $(QUANTUM_DIR)/process_keycode/process_printer.c QUANTUM_LIB_SRC += uart.c endif VARIABLE_TRACE ?= no ifneq ($(strip $(VARIABLE_TRACE)),no) SRC += $(QUANTUM_DIR)/variable_trace.c
M builddefs/disable_features.mk => builddefs/disable_features.mk +0 -1
@@ 14,7 14,6 @@ FEATURE_NAMES += LCD_BACKLIGHT FEATURE_NAMES += LCD FEATURE_NAMES += OLED FEATURE_NAMES += POINTING_DEVICE FEATURE_NAMES += PRINTING FEATURE_NAMES += PS2_MOUSE FEATURE_NAMES += RGBLIGHT FEATURE_NAMES += RGB_MATRIX
M builddefs/show_options.mk => builddefs/show_options.mk +0 -1
@@ 43,7 43,6 @@ OTHER_OPTION_NAMES = \ KEY_LOCK_ENABLE \ KEY_OVERRIDE_ENABLE \ LEADER_ENABLE \ PRINTING_ENABLE \ STENO_ENABLE \ STENO_PROTOCOL \ TAP_DANCE_ENABLE \
M data/constants/keycodes/keycodes_0.0.1_quantum.hjson => data/constants/keycodes/keycodes_0.0.1_quantum.hjson +4 -13
@@ 424,36 424,27 @@ "0x7C73": { "group": "quantum", "key": "PRINT_ON" }, "0x7C74": { "group": "quantum", "key": "PRINT_OFF" }, "0x7C75": { "group": "quantum", "key": "QK_CAPS_WORD_TOGGLE", "aliases": [ "CW_TOGG" ] }, "0x7C76": { "0x7C74": { "group": "quantum", "key": "QK_AUTOCORRECT_ON", "aliases": [ "AC_ON" ] }, "0x7C77": { "0x7C75": { "group": "quantum", "key": "QK_AUTOCORRECT_OFF", "aliases": [ "AC_OFF" ] }, "0x7C78": { "0x7C76": { "group": "quantum", "key": "QK_AUTOCORRECT_TOGGLE", @@ "aliases": [ 461,4 452,4 @@ ] } } } \ No newline at end of file }
M docs/_summary.md => docs/_summary.md +0 -1
@@ 123,7 123,6 @@ * [PS/2 Mouse](feature_ps2_mouse.md) * [Split Keyboard](feature_split_keyboard.md) * [Stenography](feature_stenography.md) * [Thermal Printer](feature_thermal_printer.md) * [Velocikey](feature_velocikey.md) * Keyboard Building
D docs/feature_thermal_printer.md => docs/feature_thermal_printer.md +0 -10
@@ 1,10 0,0 @@ # Thermal Printer <!-- FIXME: Describe thermal printers support here. --> ## Thermal Printer Keycodes |Key |Description | |-----------|----------------------------------------| |`PRINT_ON` |Start printing everything the user types| |`PRINT_OFF`|Stop printing everything the user types |
M docs/keycodes.md => docs/keycodes.md +0 -9
@@ 718,15 718,6 @@ See also: [RGB Matrix Lighting](feature_rgb_matrix.md) |`RGB_SPI` | |Increase effect speed (does not support eeprom yet), decrease speed when Shift is held| |`RGB_SPD` | |Decrease effect speed (does not support eeprom yet), increase speed when Shift is held| ## Thermal Printer :id=thermal-printer See also: [Thermal Printer](feature_thermal_printer.md) |Key |Description | |-----------|----------------------------------------| |`PRINT_ON` |Start printing everything the user types| |`PRINT_OFF`|Stop printing everything the user types | ## US ANSI Shifted Symbols :id=us-ansi-shifted-symbols See also: [US ANSI Shifted Symbols](keycodes_us_ansi_shifted.md)
M docs/understanding_qmk.md => docs/understanding_qmk.md +0 -1
@@ 159,7 159,6 @@ The `process_record()` function itself is deceptively simple, but hidden within * [`bool process_unicodemap(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/325da02e57fe7374e77b82cb00360ba45167e25c/quantum/process_keycode/process_unicodemap.c#L42) * [`bool process_ucis(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/325da02e57fe7374e77b82cb00360ba45167e25c/quantum/process_keycode/process_ucis.c#L70) * [`bool process_leader(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/325da02e57fe7374e77b82cb00360ba45167e25c/quantum/process_keycode/process_leader.c#L48) * [`bool process_printer(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/325da02e57fe7374e77b82cb00360ba45167e25c/quantum/process_keycode/process_printer.c#L77) * [`bool process_auto_shift(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/325da02e57fe7374e77b82cb00360ba45167e25c/quantum/process_keycode/process_auto_shift.c#L353) * [`bool process_dynamic_tapping_term(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/325da02e57fe7374e77b82cb00360ba45167e25c/quantum/process_keycode/process_dynamic_tapping_term.c#L35) * [`bool process_space_cadet(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/325da02e57fe7374e77b82cb00360ba45167e25c/quantum/process_keycode/process_space_cadet.c#L123)
D keyboards/planck/keymaps/thermal_printer/config.h => keyboards/planck/keymaps/thermal_printer/config.h +0 -18
@@ 1,18 0,0 @@ #pragma once /* * MIDI options */ /* enable basic MIDI features: - MIDI notes can be sent when in Music mode is on */ #define MIDI_BASIC /* enable advanced MIDI features: - MIDI notes can be added to the keymap - Octave shift and transpose - Virtual sustain, portamento, and modulation wheel - etc. */ //#define MIDI_ADVANCED
D keyboards/planck/keymaps/thermal_printer/keymap.c => keyboards/planck/keymaps/thermal_printer/keymap.c +0 -303
@@ 1,303 0,0 @@ #include QMK_KEYBOARD_H extern keymap_config_t keymap_config; // Each layer gets a name for readability, which is then used in the keymap matrix below. // The underscores don't mean anything - you can have a layer called STUFF or any other name. // Layer names don't all need to be of the same length, obviously, and you can also skip them // entirely and just use numbers. #define _QWERTY 0 #define _COLEMAK 1 #define _DVORAK 2 #define _LOWER 3 #define _RAISE 4 #define _PLOVER 5 #define _ADJUST 16 enum planck_keycodes { QWERTY = SAFE_RANGE, COLEMAK, DVORAK, PLOVER, LOWER, RAISE, BACKLIT, EXT_PLV }; const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Qwerty * ,-----------------------------------------------------------------------------------. * | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp | * |------+------+------+------+------+-------------+------+------+------+------+------| * | Esc | A | S | D | F | G | H | J | K | L | ; | " | * |------+------+------+------+------+------|------+------+------+------+------+------| * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter | * |------+------+------+------+------+------+------+------+------+------+------+------| * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | * `-----------------------------------------------------------------------------------' */ [_QWERTY] = LAYOUT_planck_grid( KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT ), /* Colemak * ,-----------------------------------------------------------------------------------. * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Bksp | * |------+------+------+------+------+-------------+------+------+------+------+------| * | Esc | A | R | S | T | D | H | N | E | I | O | " | * |------+------+------+------+------+------|------+------+------+------+------+------| * | Shift| Z | X | C | V | B | K | M | , | . | / |Enter | * |------+------+------+------+------+------+------+------+------+------+------+------| * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | * `-----------------------------------------------------------------------------------' */ [_COLEMAK] = LAYOUT_planck_grid( KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC, KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT ), /* Dvorak * ,-----------------------------------------------------------------------------------. * | Tab | " | , | . | P | Y | F | G | C | R | L | Bksp | * |------+------+------+------+------+-------------+------+------+------+------+------| * | Esc | A | O | E | U | I | D | H | T | N | S | / | * |------+------+------+------+------+------|------+------+------+------+------+------| * | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter | * |------+------+------+------+------+------+------+------+------+------+------+------| * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | * `-----------------------------------------------------------------------------------' */ [_DVORAK] = LAYOUT_planck_grid( KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC, KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH, KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT , BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT ), /* Lower * ,-----------------------------------------------------------------------------------. * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp | * |------+------+------+------+------+-------------+------+------+------+------+------| * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | | * |------+------+------+------+------+------|------+------+------+------+------+------| * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | | |Enter | * |------+------+------+------+------+------+------+------+------+------+------+------| * | | | | | | | | Next | Vol- | Vol+ | Play | * `-----------------------------------------------------------------------------------' */ [_LOWER] = LAYOUT_planck_grid( KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY ), /* Raise * ,-----------------------------------------------------------------------------------. * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | * |------+------+------+------+------+-------------+------+------+------+------+------| * | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ | * |------+------+------+------+------+------|------+------+------+------+------+------| * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / | | |Enter | * |------+------+------+------+------+------+------+------+------+------+------+------| * | | | | | | | | Next | Vol- | Vol+ | Play | * `-----------------------------------------------------------------------------------' */ [_RAISE] = LAYOUT_planck_grid( KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY ), /* Plover layer (http://opensteno.org) * ,-----------------------------------------------------------------------------------. * | # | # | # | # | # | # | # | # | # | # | # | # | * |------+------+------+------+------+-------------+------+------+------+------+------| * | | S | T | P | H | * | * | F | P | L | T | D | * |------+------+------+------+------+------|------+------+------+------+------+------| * |TogOut| S | K | W | R | * | * | R | B | G | S | Z | * |------+------+------+------+------+------+------+------+------+------+------+------| * | Exit | | | A | O | | E | U | | | | * `-----------------------------------------------------------------------------------' */ [_PLOVER] = LAYOUT_planck_grid( KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1 , XXXXXXX, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, XXXXXXX, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, EXT_PLV, XXXXXXX, XXXXXXX, KC_C, KC_V, XXXXXXX, XXXXXXX, KC_N, KC_M, XXXXXXX, XXXXXXX, XXXXXXX ), /* Adjust (Lower + Raise) * ,-----------------------------------------------------------------------------------. * | | Reset| | Print|no prnt | | | | | | | Del | * |------+------+------+------+------+-------------+------+------+------+------+------| * | | | |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak|Plover| | * |------+------+------+------+------+------|------+------+------+------+------+------| * | |Voice-|Voice+|Mus on|Musoff|MIDIon|MIDIof| | | | | | * |------+------+------+------+------+------+------+------+------+------+------+------| * | | | | | | | | | | | | * `-----------------------------------------------------------------------------------' */ [_ADJUST] = LAYOUT_planck_grid( _______, QK_BOOT, _______, PRINT_ON, PRINT_OFF, _______, _______, _______, _______, _______, _______, KC_DEL, _______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, PLOVER, _______, _______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ) }; #ifdef AUDIO_ENABLE float tone_startup[][2] = SONG(STARTUP_SOUND); float tone_qwerty[][2] = SONG(QWERTY_SOUND); float tone_dvorak[][2] = SONG(DVORAK_SOUND); float tone_colemak[][2] = SONG(COLEMAK_SOUND); float tone_plover[][2] = SONG(PLOVER_SOUND); float tone_plover_gb[][2] = SONG(PLOVER_GOODBYE_SOUND); float music_scale[][2] = SONG(MUSIC_SCALE_SOUND); float tone_goodbye[][2] = SONG(GOODBYE_SOUND); #endif void persistent_default_layer_set(uint16_t default_layer) { eeconfig_update_default_layer(default_layer); default_layer_set(default_layer); } bool process_record_user(uint16_t keycode, keyrecord_t *record) { switch (keycode) { case QWERTY: if (record->event.pressed) { #ifdef AUDIO_ENABLE PLAY_SONG(tone_qwerty); #endif persistent_default_layer_set(1UL<<_QWERTY); } return false; break; case COLEMAK: if (record->event.pressed) { #ifdef AUDIO_ENABLE PLAY_SONG(tone_colemak); #endif persistent_default_layer_set(1UL<<_COLEMAK); } return false; break; case DVORAK: if (record->event.pressed) { #ifdef AUDIO_ENABLE PLAY_SONG(tone_dvorak); #endif persistent_default_layer_set(1UL<<_DVORAK); } return false; break; case LOWER: if (record->event.pressed) { layer_on(_LOWER); update_tri_layer(_LOWER, _RAISE, _ADJUST); } else { layer_off(_LOWER); update_tri_layer(_LOWER, _RAISE, _ADJUST); } return false; break; case RAISE: if (record->event.pressed) { layer_on(_RAISE); update_tri_layer(_LOWER, _RAISE, _ADJUST); } else { layer_off(_RAISE); update_tri_layer(_LOWER, _RAISE, _ADJUST); } return false; break; case BACKLIT: if (record->event.pressed) { register_code(KC_RSFT); #ifdef BACKLIGHT_ENABLE backlight_step(); #endif } else { unregister_code(KC_RSFT); } return false; break; case PLOVER: if (record->event.pressed) { #ifdef AUDIO_ENABLE stop_all_notes(); PLAY_SONG(tone_plover); #endif layer_off(_RAISE); layer_off(_LOWER); layer_off(_ADJUST); layer_on(_PLOVER); if (!eeconfig_is_enabled()) { eeconfig_init(); } keymap_config.raw = eeconfig_read_keymap(); keymap_config.nkro = 1; eeconfig_update_keymap(keymap_config.raw); } return false; break; case EXT_PLV: if (record->event.pressed) { #ifdef AUDIO_ENABLE PLAY_SONG(tone_plover_gb); #endif layer_off(_PLOVER); } return false; break; } return true; } void matrix_init_user(void) { #ifdef AUDIO_ENABLE startup_user(); #endif } #ifdef AUDIO_ENABLE void startup_user() { _delay_ms(20); // gets rid of tick PLAY_SONG(tone_startup); } void shutdown_user() { PLAY_SONG(tone_goodbye); _delay_ms(150); stop_all_notes(); } void music_on_user(void) { music_scale_user(); } void music_scale_user(void) { PLAY_SONG(music_scale); } #endif
D keyboards/planck/keymaps/thermal_printer/readme.md => keyboards/planck/keymaps/thermal_printer/readme.md +0 -2
D keyboards/planck/keymaps/thermal_printer/rules.mk => keyboards/planck/keymaps/thermal_printer/rules.mk +0 -20
@@ 1,20 0,0 @@ # Build Options # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) COMMAND_ENABLE = yes # Commands for debug and configuration NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality MIDI_ENABLE = no # MIDI controls AUDIO_ENABLE = yes # Audio output on port C6 UNICODE_ENABLE = no # Unicode BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. PRINTING_ENABLE = yes # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
M quantum/keycodes.h => quantum/keycodes.h +4 -6
@@ 709,12 709,10 @@ enum qk_keycode_defines { DT_PRNT = 0x7C70, DT_UP = 0x7C71, DT_DOWN = 0x7C72, PRINT_ON = 0x7C73, PRINT_OFF = 0x7C74, QK_CAPS_WORD_TOGGLE = 0x7C75, QK_AUTOCORRECT_ON = 0x7C76, QK_AUTOCORRECT_OFF = 0x7C77, QK_AUTOCORRECT_TOGGLE = 0x7C78, QK_CAPS_WORD_TOGGLE = 0x7C73, QK_AUTOCORRECT_ON = 0x7C74, QK_AUTOCORRECT_OFF = 0x7C75, QK_AUTOCORRECT_TOGGLE = 0x7C76, SAFE_RANGE = 0x7E00, // Alias
D quantum/process_keycode/process_printer.c => quantum/process_keycode/process_printer.c +0 -269
@@ 1,269 0,0 @@ /* Copyright 2016 Jack Humbert * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ #include "process_printer.h" #include "action_util.h" #include "uart.h" bool printing_enabled = false; uint8_t character_shift = 0; void enable_printing(void) { printing_enabled = true; uart_init(19200); } void disable_printing(void) { printing_enabled = false; } uint8_t shifted_numbers[10] = {0x21, 0x40, 0x23, 0x24, 0x25, 0x5E, 0x26, 0x2A, 0x28, 0x29}; // uint8_t keycode_to_ascii[0xFF][2]; // keycode_to_ascii[KC_MINUS] = {0x2D, 0x5F}; void print_char(char c) { USB_Disable(); uart_write(c); USB_Init(); } void print_string(char c[]) { for (uint8_t i = 0; i < strlen(c); i++) print_char(c[i]); } void print_box_string(const char text[]) { size_t len = strlen(text); char out[len * 3 + 8]; out[0] = 0xDA; for (uint8_t i = 0; i < len; i++) { out[i + 1] = 0xC4; } out[len + 1] = 0xBF; out[len + 2] = '\n'; out[len + 3] = 0xB3; for (uint8_t i = 0; i < len; i++) { out[len + 4 + i] = text[i]; } out[len * 2 + 4] = 0xB3; out[len * 2 + 5] = '\n'; out[len * 2 + 6] = 0xC0; for (uint8_t i = 0; i < len; i++) { out[len * 2 + 7 + i] = 0xC4; } out[len * 3 + 7] = 0xD9; out[len * 3 + 8] = '\n'; print_string(out); } bool process_printer(uint16_t keycode, keyrecord_t *record) { if (keycode == PRINT_ON) { enable_printing(); return false; } if (keycode == PRINT_OFF) { disable_printing(); return false; } if (printing_enabled) { switch (keycode) { case KC_EXLM ... KC_RPRN: case KC_UNDS: case KC_PLUS: case KC_LCBR: case KC_RCBR: case KC_PIPE: case KC_TILD: keycode &= 0xFF; case KC_LEFT_SHIFT: case KC_RIGHT_SHIFT: if (record->event.pressed) { character_shift++; } else { character_shift--; } return false; break; } switch (keycode) { case KC_F1: if (record->event.pressed) { print_box_string("This is a line of text!"); } return false; case KC_ESCAPE: if (record->event.pressed) { print_char(0x1B); } return false; break; case KC_SPACE: if (record->event.pressed) { print_char(0x20); } return false; break; case KC_A ... KC_Z: if (record->event.pressed) { if (character_shift) { print_char(0x41 + (keycode - KC_A)); } else { print_char(0x61 + (keycode - KC_A)); } } return false; break; case KC_1 ... KC_0: if (record->event.pressed) { if (character_shift) { print_char(shifted_numbers[keycode - KC_1]); } else { print_char(0x30 + ((keycode - KC_1 + 1) % 10)); } } return false; break; case KC_ENTER: if (record->event.pressed) { if (character_shift) { print_char(0x0C); } else { print_char(0x0A); } } return false; break; case KC_BACKSPACE: if (record->event.pressed) { if (character_shift) { print_char(0x18); } else { print_char(0x1A); } } return false; break; case KC_DOT: if (record->event.pressed) { if (character_shift) { print_char(0x3E); } else { print_char(0x2E); } } return false; break; case KC_COMMA: if (record->event.pressed) { if (character_shift) { print_char(0x3C); } else { print_char(0x2C); } } return false; break; case KC_SLASH: if (record->event.pressed) { if (character_shift) { print_char(0x3F); } else { print_char(0x2F); } } return false; break; case KC_QUOTE: if (record->event.pressed) { if (character_shift) { print_char(0x22); } else { print_char(0x27); } } return false; break; case KC_GRAVE: if (record->event.pressed) { if (character_shift) { print_char(0x7E); } else { print_char(0x60); } } return false; break; case KC_MINUS: if (record->event.pressed) { if (character_shift) { print_char(0x5F); } else { print_char(0x2D); } } return false; break; case KC_EQUAL: if (record->event.pressed) { if (character_shift) { print_char(0x2B); } else { print_char(0x3D); } } return false; break; case KC_LEFT_BRACKET: if (record->event.pressed) { if (character_shift) { print_char(0x7B); } else { print_char(0x5B); } } return false; break; case KC_RIGHT_BRACKET: if (record->event.pressed) { if (character_shift) { print_char(0x7D); } else { print_char(0x5D); } } return false; break; case KC_BACKSLASH: if (record->event.pressed) { if (character_shift) { print_char(0x7C); } else { print_char(0x5C); } } return false; break; } } return true; }
D quantum/process_keycode/process_printer.h => quantum/process_keycode/process_printer.h +0 -21
@@ 1,21 0,0 @@ /* Copyright 2016 Jack Humbert * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ #pragma once #include "quantum.h" bool process_printer(uint16_t keycode, keyrecord_t *record);
D quantum/process_keycode/process_printer_bb.c => quantum/process_keycode/process_printer_bb.c +0 -270
@@ 1,270 0,0 @@ /* Copyright 2016 Jack Humbert * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ #include "process_printer.h" #include "action_util.h" bool printing_enabled = false; uint8_t character_shift = 0; #define SERIAL_PIN_DDR DDRD #define SERIAL_PIN_PORT PORTD #define SERIAL_PIN_MASK _BV(PD3) #define SERIAL_DELAY 52 inline static void serial_delay(void) { _delay_us(SERIAL_DELAY); } inline static void serial_high(void) { SERIAL_PIN_PORT |= SERIAL_PIN_MASK; } inline static void serial_low(void) { SERIAL_PIN_PORT &= ~SERIAL_PIN_MASK; } inline static void serial_output(void) { SERIAL_PIN_DDR |= SERIAL_PIN_MASK; } void enable_printing() { printing_enabled = true; serial_output(); serial_high(); } void disable_printing() { printing_enabled = false; } uint8_t shifted_numbers[10] = {0x21, 0x40, 0x23, 0x24, 0x25, 0x5E, 0x26, 0x2A, 0x28, 0x29}; // uint8_t keycode_to_ascii[0xFF][2]; // keycode_to_ascii[KC_MINUS] = {0x2D, 0x5F}; void print_char(char c) { uint8_t b = 8; serial_output(); while (b--) { if (c & (1 << b)) { serial_high(); } else { serial_low(); } serial_delay(); } } void print_string(char c[]) { for (uint8_t i = 0; i < strlen(c); i++) print_char(c[i]); } bool process_printer(uint16_t keycode, keyrecord_t *record) { if (keycode == PRINT_ON) { enable_printing(); return false; } if (keycode == PRINT_OFF) { disable_printing(); return false; } if (printing_enabled) { switch (keycode) { case KC_EXLM ... KC_RPRN: case KC_UNDS: case KC_PLUS: case KC_LCBR: case KC_RCBR: case KC_PIPE: case KC_TILD: keycode &= 0xFF; case KC_LEFT_SHIFT: case KC_RIGHT_SHIFT: if (record->event.pressed) { character_shift++; } else { character_shift--; } return false; break; } switch (keycode) { case KC_F1: if (record->event.pressed) { print_string("This is a line of text!\n\n\n"); } return false; case KC_ESCAPE: if (record->event.pressed) { print_char(0x1B); } return false; break; case KC_SPACE: if (record->event.pressed) { print_char(0x20); } return false; break; case KC_A ... KC_Z: if (record->event.pressed) { if (character_shift) { print_char(0x41 + (keycode - KC_A)); } else { print_char(0x61 + (keycode - KC_A)); } } return false; break; case KC_1 ... KC_0: if (record->event.pressed) { if (character_shift) { print_char(shifted_numbers[keycode - KC_1]); } else { print_char(0x30 + ((keycode - KC_1 + 1) % 10)); } } return false; break; case KC_ENTER: if (record->event.pressed) { if (character_shift) { print_char(0x0C); } else { print_char(0x0A); } } return false; break; case KC_BACKSPACE: if (record->event.pressed) { if (character_shift) { print_char(0x18); } else { print_char(0x1A); } } return false; break; case KC_DOT: if (record->event.pressed) { if (character_shift) { print_char(0x3E); } else { print_char(0x2E); } } return false; break; case KC_COMMA: if (record->event.pressed) { if (character_shift) { print_char(0x3C); } else { print_char(0x2C); } } return false; break; case KC_SLASH: if (record->event.pressed) { if (character_shift) { print_char(0x3F); } else { print_char(0x2F); } } return false; break; case KC_QUOTE: if (record->event.pressed) { if (character_shift) { print_char(0x22); } else { print_char(0x27); } } return false; break; case KC_GRAVE: if (record->event.pressed) { if (character_shift) { print_char(0x7E); } else { print_char(0x60); } } return false; break; case KC_MINUS: if (record->event.pressed) { if (character_shift) { print_char(0x5F); } else { print_char(0x2D); } } return false; break; case KC_EQUAL: if (record->event.pressed) { if (character_shift) { print_char(0x2B); } else { print_char(0x3D); } } return false; break; case KC_LEFT_BRACKET: if (record->event.pressed) { if (character_shift) { print_char(0x7B); } else { print_char(0x5B); } } return false; break; case KC_RIGHT_BRACKET: if (record->event.pressed) { if (character_shift) { print_char(0x7D); } else { print_char(0x5D); } } return false; break; case KC_BACKSLASH: if (record->event.pressed) { if (character_shift) { print_char(0x7C); } else { print_char(0x5C); } } return false; break; } } return true; }
M quantum/quantum.c => quantum/quantum.c +0 -3
@@ 316,9 316,6 @@ bool process_record_quantum(keyrecord_t *record) { #ifdef LEADER_ENABLE process_leader(keycode, record) && #endif #ifdef PRINTING_ENABLE process_printer(keycode, record) && #endif #ifdef AUTO_SHIFT_ENABLE process_auto_shift(keycode, record) && #endif
M quantum/quantum.h => quantum/quantum.h +0 -4