mirror of
				https://github.com/mfulz/qmk_firmware.git
				synced 2025-10-31 13:22:31 +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. | 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). | 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 | 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 | BUILD | ||||||
| ----- | ----- | ||||||
| $ git clone https://github.com/tmk/tmk_keyboard.git | $ git clone https://github.com/qmk/qmk_firmware.git | ||||||
| $ cd converter/terminal_usb | $ cd qmk_firmware | ||||||
| $ make  | $ make converter/ibm_terminal:default | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| RESOURCE | RESOURCE | ||||||
| @ -1,6 +1 @@ | |||||||
| #include "ibm_terminal.h" | #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. | 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 | Troubleshooting & Known Issues | ||||||
| ------------------------------ | ------------------------------ | ||||||
| The Pro Micro variant runs at 8MHz, hence the following line in `usb_usb/rules.mk`: | If something doesn't work, it's probably because of the CPU clock.  | ||||||
| `F_CPU ?= 8000000` | Be sure to select the correct subproject (the middle part of the `make` argument) according to your hardware.  | ||||||
| If the firmware doesn't work, try changing that line to | 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. | ||||||
| `F_CPU ?= 16000000` | 
 | ||||||
| or override the `F_CPU` variable 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 | 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.
 | // 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.
 | // CUSTOM_MATRIX is defined it that file, though, and we need it, so we define it ourselves.
 | ||||||
| // It's a hack, yeah...
 | // It's a hack, yeah...
 | ||||||
|  | 
 | ||||||
| #define CUSTOM_MATRIX 2 | #define CUSTOM_MATRIX 2 | ||||||
| 
 | 
 | ||||||
| /* USB Device descriptor parameter */ | /* USB Device descriptor parameter */ | ||||||
|  | |||||||
| @ -35,6 +35,9 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>. | |||||||
| #include "host.h" | #include "host.h" | ||||||
| #include "keyboard.h" | #include "keyboard.h" | ||||||
| 
 | 
 | ||||||
|  | extern "C" { | ||||||
|  | #include "quantum.h" | ||||||
|  | } | ||||||
| 
 | 
 | ||||||
| /* KEY CODE to Matrix
 | /* 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
 | // 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; | static bool matrix_is_mod = false; | ||||||
| 
 | 
 | ||||||
| @ -98,13 +101,13 @@ extern "C" | |||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     static void or_report(report_keyboard_t report) { |     static void or_report(report_keyboard_t report) { | ||||||
|         // integrate reports into keyboard_report
 |         // integrate reports into local_keyboard_report
 | ||||||
|         keyboard_report.mods |= report.mods; |         local_keyboard_report.mods |= report.mods; | ||||||
|         for (uint8_t i = 0; i < KEYBOARD_REPORT_KEYS; i++) { |         for (uint8_t i = 0; i < KEYBOARD_REPORT_KEYS; i++) { | ||||||
|             if (IS_ANY(report.keys[i])) { |             if (IS_ANY(report.keys[i])) { | ||||||
|                 for (uint8_t j = 0; j < KEYBOARD_REPORT_KEYS; j++) { |                 for (uint8_t j = 0; j < KEYBOARD_REPORT_KEYS; j++) { | ||||||
|                     if (! keyboard_report.keys[j]) { |                     if (! local_keyboard_report.keys[j]) { | ||||||
|                         keyboard_report.keys[j] = report.keys[i]; |                         local_keyboard_report.keys[j] = report.keys[i]; | ||||||
|                         break; |                         break; | ||||||
|                     } |                     } | ||||||
|                 } |                 } | ||||||
| @ -130,7 +133,7 @@ extern "C" | |||||||
|             last_time_stamp4 = kbd_parser4.time_stamp; |             last_time_stamp4 = kbd_parser4.time_stamp; | ||||||
| 
 | 
 | ||||||
|             // clear and integrate all reports
 |             // clear and integrate all reports
 | ||||||
|             keyboard_report = {}; |             local_keyboard_report = {}; | ||||||
|             or_report(kbd_parser1.report); |             or_report(kbd_parser1.report); | ||||||
|             or_report(kbd_parser2.report); |             or_report(kbd_parser2.report); | ||||||
|             or_report(kbd_parser3.report); |             or_report(kbd_parser3.report); | ||||||
| @ -138,9 +141,9 @@ extern "C" | |||||||
| 
 | 
 | ||||||
|             matrix_is_mod = true; |             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++) { |             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"); |             dprint("\r\n"); | ||||||
|         } else { |         } else { | ||||||
| @ -177,12 +180,12 @@ extern "C" | |||||||
|         uint8_t code = CODE(row, col); |         uint8_t code = CODE(row, col); | ||||||
| 
 | 
 | ||||||
|         if (IS_MOD(code)) { |         if (IS_MOD(code)) { | ||||||
|             if (keyboard_report.mods & ROW_BITS(code)) { |             if (local_keyboard_report.mods & ROW_BITS(code)) { | ||||||
|                 return true; |                 return true; | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|         for (uint8_t i = 0; i < KEYBOARD_REPORT_KEYS; i++) { |         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; |                 return true; | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
| @ -192,14 +195,14 @@ extern "C" | |||||||
|     matrix_row_t matrix_get_row(uint8_t row) { |     matrix_row_t matrix_get_row(uint8_t row) { | ||||||
|         uint16_t row_bits = 0; |         uint16_t row_bits = 0; | ||||||
| 
 | 
 | ||||||
|         if (IS_MOD(CODE(row, 0)) && keyboard_report.mods) { |         if (IS_MOD(CODE(row, 0)) && local_keyboard_report.mods) { | ||||||
|             row_bits |= keyboard_report.mods; |             row_bits |= local_keyboard_report.mods; | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         for (uint8_t i = 0; i < KEYBOARD_REPORT_KEYS; i++) { |         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])) { | ||||||
|                 if (row == ROW(keyboard_report.keys[i])) { |                 if (row == ROW(local_keyboard_report.keys[i])) { | ||||||
|                     row_bits |= ROW_BITS(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 matrix_key_count(void) { | ||||||
|         uint8_t count = 0; |         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++) { |         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++; |                 count++; | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
| @ -233,6 +236,7 @@ extern "C" | |||||||
|         kbd2.SetReport(0, 0, 2, 0, 1, &usb_led); |         kbd2.SetReport(0, 0, 2, 0, 1, &usb_led); | ||||||
|         kbd3.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); |         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" | #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 | #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
 | #     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
 | #     reflect the processor speed set externally so that the code can use accurate
 | ||||||
| #     software delays.
 | #     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