mirror of
				https://github.com/mfulz/qmk_firmware.git
				synced 2025-10-31 05:12:33 +01:00 
			
		
		
		
	restructure converters (#1825)
* restructure converters each converter is its own keyboard and different hardware variants are different subprojects. remove (seemingly) old method of loading layouts from main Makefile * call led_set_kb() from overridden led_set() * put converter back into one folder * revert some structure changes to bring in line with #1784. Also attempt to get the BLE thing more properly integrated. Also also fix led_set() to call led_set_kb().
This commit is contained in:
		
							parent
							
								
									aee6785476
								
							
						
					
					
						commit
						3b5381d689
					
				| @ -6,7 +6,7 @@ This is a port of TMK's converter/terminal_usb to QMK. | ||||
| It supports PS/2 Scan Code Set 3 and runs on USB AVR chips such like PJRC Teensy. | ||||
| I tested the converter on ATMega32U4 with 1392595(102keys) and 6110345(122keys). | ||||
| 
 | ||||
| Source code: https://github.com/tmk/tmk_keyboard | ||||
| Source code: https://github.com/qmk/qmk_firmware.git | ||||
| Article: http://geekhack.org/index.php?topic=27272.0 | ||||
| 
 | ||||
| 
 | ||||
| @ -22,9 +22,9 @@ And VCC and GND, of course. See RESOURCE for keyboard connector pin assign. | ||||
| 
 | ||||
| BUILD | ||||
| ----- | ||||
| $ git clone https://github.com/tmk/tmk_keyboard.git | ||||
| $ cd converter/terminal_usb | ||||
| $ make  | ||||
| $ git clone https://github.com/qmk/qmk_firmware.git | ||||
| $ cd qmk_firmware | ||||
| $ make converter/ibm_terminal:default | ||||
| 
 | ||||
| 
 | ||||
| RESOURCE | ||||
| @ -1,6 +1 @@ | ||||
| #include "ibm_terminal.h" | ||||
| 
 | ||||
| // void matrix_init_kb(void) {
 | ||||
| 
 | ||||
| //     matrix_init_user();
 | ||||
| // }
 | ||||
| @ -13,13 +13,18 @@ Make example for this keyboard (after setting up your build environment): | ||||
| 
 | ||||
| See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information. | ||||
| 
 | ||||
| Note that you have to choose the right hardware variant as your subproject, otherwise you will probably have issues. | ||||
| 
 | ||||
| Troubleshooting & Known Issues | ||||
| ------------------------------ | ||||
| The Pro Micro variant runs at 8MHz, hence the following line in `usb_usb/rules.mk`: | ||||
| `F_CPU ?= 8000000` | ||||
| If the firmware doesn't work, try changing that line to | ||||
| `F_CPU ?= 16000000` | ||||
| or override the `F_CPU` variable in the `rules.mk` of your keymap. | ||||
| If something doesn't work, it's probably because of the CPU clock.  | ||||
| Be sure to select the correct subproject (the middle part of the `make` argument) according to your hardware.  | ||||
| If you are sure you have this correct, try changeing the default in `usb_usb/rules.mk` or overriding the value in the `rules.mk` of your keymap. | ||||
| 
 | ||||
| The Pro Micro variant uses a 3.3V Pro Micro and thus runs at 8MHz, hence the following line in `usb_usb/pro_micro/rules.mk`: | ||||
| `F_CPU = 8000000` | ||||
| The converter sold by Hasu runs at 16MHz and so the corresponding line in `usb_usb/hasu/rules.mk` is: | ||||
| `F_CPU = 16000000` | ||||
| 
 | ||||
| Getting the Hardware | ||||
| -------------------- | ||||
|  | ||||
							
								
								
									
										1
									
								
								keyboards/converter/usb_usb/ble/ble.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								keyboards/converter/usb_usb/ble/ble.c
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1 @@ | ||||
| #include "ble.h" | ||||
							
								
								
									
										6
									
								
								keyboards/converter/usb_usb/ble/ble.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								keyboards/converter/usb_usb/ble/ble.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,6 @@ | ||||
| #ifndef BLE_H | ||||
| #define BLE_H | ||||
| 
 | ||||
| #include QMK_KEYBOARD_H | ||||
| 
 | ||||
| #endif | ||||
							
								
								
									
										13
									
								
								keyboards/converter/usb_usb/ble/config.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								keyboards/converter/usb_usb/ble/config.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,13 @@ | ||||
| #ifndef CONFIG_BLE_H | ||||
| #define CONFIG_BLE_H | ||||
| 
 | ||||
| #undef PRODUCT | ||||
| #define PRODUCT         QMK BLE Adapter | ||||
| #undef DESCRIPTION | ||||
| #define DESCRIPTION   | ||||
| 
 | ||||
| // Turn off the mode leds on the BLE module
 | ||||
| #define ADAFRUIT_BLE_ENABLE_MODE_LEDS 0 | ||||
| #define ADAFRUIT_BLE_ENABLE_POWER_LED 0 | ||||
| 
 | ||||
| #endif | ||||
							
								
								
									
										4
									
								
								keyboards/converter/usb_usb/ble/rules.mk
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								keyboards/converter/usb_usb/ble/rules.mk
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,4 @@ | ||||
| BLUETOOTH = AdafruitBLE | ||||
| ADAFRUIT_BLE_ENABLE = yes | ||||
| OPT_DEFS +=  -DCATERINA_BOOTLOADER | ||||
| F_CPU = 8000000 | ||||
| @ -21,6 +21,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>. | ||||
| // do not #include "config_common.h" because the pin names conflict with the USB HID code.
 | ||||
| // CUSTOM_MATRIX is defined it that file, though, and we need it, so we define it ourselves.
 | ||||
| // It's a hack, yeah...
 | ||||
| 
 | ||||
| #define CUSTOM_MATRIX 2 | ||||
| 
 | ||||
| /* USB Device descriptor parameter */ | ||||
|  | ||||
| @ -35,6 +35,9 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>. | ||||
| #include "host.h" | ||||
| #include "keyboard.h" | ||||
| 
 | ||||
| extern "C" { | ||||
| #include "quantum.h" | ||||
| } | ||||
| 
 | ||||
| /* KEY CODE to Matrix
 | ||||
|  * | ||||
| @ -62,7 +65,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>. | ||||
| 
 | ||||
| 
 | ||||
| // Integrated key state of all keyboards
 | ||||
| static report_keyboard_t keyboard_report; | ||||
| static report_keyboard_t local_keyboard_report; | ||||
| 
 | ||||
| static bool matrix_is_mod = false; | ||||
| 
 | ||||
| @ -98,13 +101,13 @@ extern "C" | ||||
|     } | ||||
| 
 | ||||
|     static void or_report(report_keyboard_t report) { | ||||
|         // integrate reports into keyboard_report
 | ||||
|         keyboard_report.mods |= report.mods; | ||||
|         // integrate reports into local_keyboard_report
 | ||||
|         local_keyboard_report.mods |= report.mods; | ||||
|         for (uint8_t i = 0; i < KEYBOARD_REPORT_KEYS; i++) { | ||||
|             if (IS_ANY(report.keys[i])) { | ||||
|                 for (uint8_t j = 0; j < KEYBOARD_REPORT_KEYS; j++) { | ||||
|                     if (! keyboard_report.keys[j]) { | ||||
|                         keyboard_report.keys[j] = report.keys[i]; | ||||
|                     if (! local_keyboard_report.keys[j]) { | ||||
|                         local_keyboard_report.keys[j] = report.keys[i]; | ||||
|                         break; | ||||
|                     } | ||||
|                 } | ||||
| @ -130,7 +133,7 @@ extern "C" | ||||
|             last_time_stamp4 = kbd_parser4.time_stamp; | ||||
| 
 | ||||
|             // clear and integrate all reports
 | ||||
|             keyboard_report = {}; | ||||
|             local_keyboard_report = {}; | ||||
|             or_report(kbd_parser1.report); | ||||
|             or_report(kbd_parser2.report); | ||||
|             or_report(kbd_parser3.report); | ||||
| @ -138,9 +141,9 @@ extern "C" | ||||
| 
 | ||||
|             matrix_is_mod = true; | ||||
| 
 | ||||
|             dprintf("state:  %02X %02X", keyboard_report.mods, keyboard_report.reserved); | ||||
|             dprintf("state:  %02X %02X", local_keyboard_report.mods, local_keyboard_report.reserved); | ||||
|             for (uint8_t i = 0; i < KEYBOARD_REPORT_KEYS; i++) { | ||||
|                 dprintf(" %02X", keyboard_report.keys[i]); | ||||
|                 dprintf(" %02X", local_keyboard_report.keys[i]); | ||||
|             } | ||||
|             dprint("\r\n"); | ||||
|         } else { | ||||
| @ -177,12 +180,12 @@ extern "C" | ||||
|         uint8_t code = CODE(row, col); | ||||
| 
 | ||||
|         if (IS_MOD(code)) { | ||||
|             if (keyboard_report.mods & ROW_BITS(code)) { | ||||
|             if (local_keyboard_report.mods & ROW_BITS(code)) { | ||||
|                 return true; | ||||
|             } | ||||
|         } | ||||
|         for (uint8_t i = 0; i < KEYBOARD_REPORT_KEYS; i++) { | ||||
|             if (keyboard_report.keys[i] == code) { | ||||
|             if (local_keyboard_report.keys[i] == code) { | ||||
|                 return true; | ||||
|             } | ||||
|         } | ||||
| @ -192,14 +195,14 @@ extern "C" | ||||
|     matrix_row_t matrix_get_row(uint8_t row) { | ||||
|         uint16_t row_bits = 0; | ||||
| 
 | ||||
|         if (IS_MOD(CODE(row, 0)) && keyboard_report.mods) { | ||||
|             row_bits |= keyboard_report.mods; | ||||
|         if (IS_MOD(CODE(row, 0)) && local_keyboard_report.mods) { | ||||
|             row_bits |= local_keyboard_report.mods; | ||||
|         } | ||||
| 
 | ||||
|         for (uint8_t i = 0; i < KEYBOARD_REPORT_KEYS; i++) { | ||||
|             if (IS_ANY(keyboard_report.keys[i])) { | ||||
|                 if (row == ROW(keyboard_report.keys[i])) { | ||||
|                     row_bits |= ROW_BITS(keyboard_report.keys[i]); | ||||
|             if (IS_ANY(local_keyboard_report.keys[i])) { | ||||
|                 if (row == ROW(local_keyboard_report.keys[i])) { | ||||
|                     row_bits |= ROW_BITS(local_keyboard_report.keys[i]); | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
| @ -209,9 +212,9 @@ extern "C" | ||||
|     uint8_t matrix_key_count(void) { | ||||
|         uint8_t count = 0; | ||||
| 
 | ||||
|         count += bitpop(keyboard_report.mods); | ||||
|         count += bitpop(local_keyboard_report.mods); | ||||
|         for (uint8_t i = 0; i < KEYBOARD_REPORT_KEYS; i++) { | ||||
|             if (IS_ANY(keyboard_report.keys[i])) { | ||||
|             if (IS_ANY(local_keyboard_report.keys[i])) { | ||||
|                 count++; | ||||
|             } | ||||
|         } | ||||
| @ -233,6 +236,7 @@ extern "C" | ||||
|         kbd2.SetReport(0, 0, 2, 0, 1, &usb_led); | ||||
|         kbd3.SetReport(0, 0, 2, 0, 1, &usb_led); | ||||
|         kbd4.SetReport(0, 0, 2, 0, 1, &usb_led); | ||||
|         led_set_kb(usb_led); | ||||
|     } | ||||
| 
 | ||||
| }; | ||||
|  | ||||
							
								
								
									
										1
									
								
								keyboards/converter/usb_usb/hasu/hasu.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								keyboards/converter/usb_usb/hasu/hasu.c
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1 @@ | ||||
| #include "hasu.h" | ||||
							
								
								
									
										6
									
								
								keyboards/converter/usb_usb/hasu/hasu.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								keyboards/converter/usb_usb/hasu/hasu.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,6 @@ | ||||
| #ifndef HASU_H | ||||
| #define HASU_H | ||||
| 
 | ||||
| #include QMK_KEYBOARD_H | ||||
| 
 | ||||
| #endif | ||||
							
								
								
									
										1
									
								
								keyboards/converter/usb_usb/hasu/rules.mk
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								keyboards/converter/usb_usb/hasu/rules.mk
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1 @@ | ||||
| F_CPU = 16000000 | ||||
| @ -3,13 +3,4 @@ | ||||
| 
 | ||||
| #include "../../config.h" | ||||
| 
 | ||||
| #undef PRODUCT | ||||
| #define PRODUCT         QMK BLE Adapter | ||||
| #undef DESCRIPTION | ||||
| #define DESCRIPTION   | ||||
| 
 | ||||
| // Turn off the mode leds on the BLE module
 | ||||
| #define ADAFRUIT_BLE_ENABLE_MODE_LEDS 0 | ||||
| #define ADAFRUIT_BLE_ENABLE_POWER_LED 0 | ||||
| 
 | ||||
| #endif | ||||
|  | ||||
| @ -1,3 +0,0 @@ | ||||
| BLUETOOTH = AdafruitBLE | ||||
| ADAFRUIT_BLE_ENABLE = yes | ||||
| OPT_DEFS +=  -DCATERINA_BOOTLOADER | ||||
							
								
								
									
										1
									
								
								keyboards/converter/usb_usb/pro_micro/pro_micro.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								keyboards/converter/usb_usb/pro_micro/pro_micro.c
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1 @@ | ||||
| #include "pro_micro.h" | ||||
							
								
								
									
										6
									
								
								keyboards/converter/usb_usb/pro_micro/pro_micro.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								keyboards/converter/usb_usb/pro_micro/pro_micro.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,6 @@ | ||||
| #ifndef PRO_MICRO_H | ||||
| #define PRO_MICRO_H | ||||
| 
 | ||||
| #include QMK_KEYBOARD_H | ||||
| 
 | ||||
| #endif | ||||
							
								
								
									
										1
									
								
								keyboards/converter/usb_usb/pro_micro/rules.mk
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								keyboards/converter/usb_usb/pro_micro/rules.mk
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1 @@ | ||||
| F_CPU = 8000000 | ||||
| @ -13,7 +13,15 @@ MCU = atmega32u4 | ||||
| #     does not *change* the processor frequency - it should merely be updated to
 | ||||
| #     reflect the processor speed set externally so that the code can use accurate
 | ||||
| #     software delays.
 | ||||
| F_CPU = 8000000 | ||||
| 
 | ||||
| # Since there are different hardware variations of these adapters and since these
 | ||||
| # have different CPU clocks, the clock speed should be set in the rules.mk file of the
 | ||||
| # respective hardware variantion (i.e. subproject). For example, in /pro_micro/rules.mk
 | ||||
| # this is set to 8000000.
 | ||||
| # The value here is only a fallback and is ignored if it is defined in the subproject.
 | ||||
| F_CPU ?= 16000000 | ||||
| 
 | ||||
| DEFAULT_FOLDER = converter/usb_usb/hasu | ||||
| 
 | ||||
| 
 | ||||
| #
 | ||||
|  | ||||
| @ -1 +1 @@ | ||||
| #include "usb_usb.h" | ||||
| #include "usb_usb.h" | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Balz Guenat
						Balz Guenat