/* 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 . */ #include "process_printer.h" #include "action_util.h" bool printing_enabled = false; uint8_t character_shift = 0; void enable_printing(void) { printing_enabled = true; serial_init(); } 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_MINS] = {0x2D, 0x5F}; void print_char(char c) { USB_Disable(); serial_send(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_LSFT: case KC_RSFT: 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_ESC: if (record->event.pressed) { print_char(0x1B); } return false; break; case KC_SPC: 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_ENT: if (record->event.pressed) { if (character_shift) { print_char(0x0C); } else { print_char(0x0A); } } return false; break; case KC_BSPC: 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_COMM: if (record->event.pressed) { if (character_shift) { print_char(0x3C); } else { print_char(0x2C); } } return false; break; case KC_SLSH: if (record->event.pressed) { if (character_shift) { print_char(0x3F); } else { print_char(0x2F); } } return false; break; case KC_QUOT: if (record->event.pressed) { if (character_shift) { print_char(0x22); } else { print_char(0x27); } } return false; break; case KC_GRV: if (record->event.pressed) { if (character_shift) { print_char(0x7E); } else { print_char(0x60); } } return false; break; case KC_MINS: if (record->event.pressed) { if (character_shift) { print_char(0x5F); } else { print_char(0x2D); } } return false; break; case KC_EQL: if (record->event.pressed) { if (character_shift) { print_char(0x2B); } else { print_char(0x3D); } } return false; break; case KC_LBRC: if (record->event.pressed) { if (character_shift) { print_char(0x7B); } else { print_char(0x5B); } } return false; break; case KC_RBRC: if (record->event.pressed) { if (character_shift) { print_char(0x7D); } else { print_char(0x5D); } } return false; break; case KC_BSLS: if (record->event.pressed) { if (character_shift) { print_char(0x7C); } else { print_char(0x5C); } } return false; break; } } return true; } 'n128' href='#n128'>128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149
namespace LEDMixer
{
    partial class LEDMixer
    {
        /// <summary>
        /// Required designer variable.
        /// </summary>
        private System.ComponentModel.IContainer components = null;

        /// <summary>
        /// Clean up any resources being used.
        /// </summary>
        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }

        #region Windows Form Designer generated code

        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {
            this.components = new System.ComponentModel.Container();
            this.tbRed = new System.Windows.Forms.TrackBar();
            this.tbGreen = new System.Windows.Forms.TrackBar();
            this.tbBlue = new System.Windows.Forms.TrackBar();
            this.serSerialPort = new System.IO.Ports.SerialPort(this.components);
            this.cbPort = new System.Windows.Forms.ComboBox();
            this.lblRed = new System.Windows.Forms.Label();
            this.lblBlue = new System.Windows.Forms.Label();
            this.lblGreen = new System.Windows.Forms.Label();
            ((System.ComponentModel.ISupportInitialize)(this.tbRed)).BeginInit();
            ((System.ComponentModel.ISupportInitialize)(this.tbGreen)).BeginInit();
            ((System.ComponentModel.ISupportInitialize)(this.tbBlue)).BeginInit();
            this.SuspendLayout();
            // 
            // tbRed
            // 
            this.tbRed.Location = new System.Drawing.Point(54, 64);
            this.tbRed.Maximum = 512;
            this.tbRed.Name = "tbRed";
            this.tbRed.Size = new System.Drawing.Size(230, 45);
            this.tbRed.TabIndex = 0;
            this.tbRed.Scroll += new System.EventHandler(this.tbRed_Scroll);
            // 
            // tbGreen
            // 
            this.tbGreen.Location = new System.Drawing.Point(54, 115);
            this.tbGreen.Maximum = 512;
            this.tbGreen.Name = "tbGreen";
            this.tbGreen.Size = new System.Drawing.Size(230, 45);
            this.tbGreen.TabIndex = 1;
            this.tbGreen.Scroll += new System.EventHandler(this.tbGreen_Scroll);
            // 
            // tbBlue
            // 
            this.tbBlue.Location = new System.Drawing.Point(54, 163);
            this.tbBlue.Maximum = 512;
            this.tbBlue.Name = "tbBlue";
            this.tbBlue.Size = new System.Drawing.Size(230, 45);
            this.tbBlue.TabIndex = 2;
            this.tbBlue.Scroll += new System.EventHandler(this.tbBlue_Scroll);
            // 
            // cbPort
            // 
            this.cbPort.FormattingEnabled = true;
            this.cbPort.Location = new System.Drawing.Point(97, 12);
            this.cbPort.Name = "cbPort";
            this.cbPort.Size = new System.Drawing.Size(99, 21);
            this.cbPort.TabIndex = 3;
            this.cbPort.SelectedIndexChanged += new System.EventHandler(this.cbPort_SelectedIndexChanged);
            // 
            // lblRed
            // 
            this.lblRed.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
            this.lblRed.Location = new System.Drawing.Point(3, 64);
            this.lblRed.Name = "lblRed";
            this.lblRed.Size = new System.Drawing.Size(48, 29);
            this.lblRed.TabIndex = 4;
            this.lblRed.Text = "Red";
            this.lblRed.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
            // 
            // lblBlue
            // 
            this.lblBlue.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
            this.lblBlue.Location = new System.Drawing.Point(3, 115);
            this.lblBlue.Name = "lblGreen";
            this.lblBlue.Size = new System.Drawing.Size(50, 27);
            this.lblBlue.TabIndex = 5;
            this.lblBlue.Text = "Green";
            this.lblBlue.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
            // 
            // lblGreen
            // 
            this.lblGreen.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
            this.lblGreen.Location = new System.Drawing.Point(3, 163);
            this.lblGreen.Name = "lblBlue";
            this.lblGreen.Size = new System.Drawing.Size(50, 25);
            this.lblGreen.TabIndex = 6;
            this.lblGreen.Text = "Blue";
            this.lblGreen.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
            // 
            // LEDMixer
            // 
            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.ClientSize = new System.Drawing.Size(284, 207);
            this.Controls.Add(this.lblGreen);
            this.Controls.Add(this.lblBlue);
            this.Controls.Add(this.lblRed);
            this.Controls.Add(this.cbPort);
            this.Controls.Add(this.tbBlue);
            this.Controls.Add(this.tbGreen);
            this.Controls.Add(this.tbRed);
            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
            this.MaximizeBox = false;
            this.MinimizeBox = false;
            this.Name = "LEDMixer";
            this.Text = "LED Mixer";
            this.Load += new System.EventHandler(this.LEDMixer_Load);
            ((System.ComponentModel.ISupportInitialize)(this.tbRed)).EndInit();
            ((System.ComponentModel.ISupportInitialize)(this.tbGreen)).EndInit();
            ((System.ComponentModel.ISupportInitialize)(this.tbBlue)).EndInit();
            this.ResumeLayout(false);
            this.PerformLayout();

        }

        #endregion

        private System.Windows.Forms.TrackBar tbRed;
        private System.Windows.Forms.TrackBar tbGreen;
        private System.Windows.Forms.TrackBar tbBlue;
        private System.IO.Ports.SerialPort serSerialPort;
        private System.Windows.Forms.ComboBox cbPort;
        private System.Windows.Forms.Label lblRed;
        private System.Windows.Forms.Label lblBlue;
        private System.Windows.Forms.Label lblGreen;
    }
}