Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
030faf951c | ||
|
|
100697ebab | ||
|
|
149015e799 | ||
|
|
0cee0764fd | ||
|
|
feee01192e | ||
|
|
1a6a2a7b75 |
No files matched your search
@@ -104,6 +104,25 @@
|
|||||||
{ KC_NO, K71, K72, K73, K74, K75, K76, K77, K78, K79, K7A, K7B, K7C } \
|
{ KC_NO, K71, K72, K73, K74, K75, K76, K77, K78, K79, K7A, K7B, K7C } \
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Split backspace 1.5u right mods
|
||||||
|
#define LAYOUT_split_bs_joined_right( \
|
||||||
|
K00, K01, K02, K03, K04, K60, K61, K62, K63, K05, K06, K07, K08, K72, K09, K0A, K0B, K0C, K7C, \
|
||||||
|
K10, K11, K12, K13, K14, K64, K65, K66, K67, K15, K16, K17, K18, K70, K71, K19, K1A, K1B, K1C, \
|
||||||
|
K20, K21, K22, K23, K24, K68, K69, K6A, K6B, K25, K26, K27, K28, K73, K29, K2A, K2B, K2C, \
|
||||||
|
K30, K31, K32, K33, K34, K6C, K75, K76, K77, K35, K36, K37, K38, K39, K3A, K3B, \
|
||||||
|
K40, K42, K43, K44, K78, K79, K7A, K7B, K45, K46, K47, K48, K74, K49, K4A, K4B, K4C, \
|
||||||
|
K50, K51, K52, K59, K55, K57, K58, K53, K54, K5A, K5B \
|
||||||
|
) { \
|
||||||
|
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C }, \
|
||||||
|
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C }, \
|
||||||
|
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C }, \
|
||||||
|
{ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, KC_NO }, \
|
||||||
|
{ K40, KC_NO, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C }, \
|
||||||
|
{ K50, K51, K52, K53, K54, K55, KC_NO, K57, K58, K59, K5A, K5B, KC_NO }, \
|
||||||
|
{ K60, K61, K62, K63, K64, K65, K66, K67, K68, K69, K6A, K6B, K6C }, \
|
||||||
|
{ K70, K71, K72, K73, K74, K75, K76, K77, K78, K79, K7A, K7B, K7C }, \
|
||||||
|
}
|
||||||
|
|
||||||
// Split numpad (enter, 0), split shifts (right, left), split backspace
|
// Split numpad (enter, 0), split shifts (right, left), split backspace
|
||||||
// This layout contains every possible keycode placement
|
// This layout contains every possible keycode placement
|
||||||
#define LAYOUT_split_shift_and_bs( \
|
#define LAYOUT_split_shift_and_bs( \
|
||||||
@@ -121,7 +140,7 @@
|
|||||||
{ K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C }, \
|
{ K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C }, \
|
||||||
{ K50, K51, K52, K53, K54, K55, K56, K57, K58, K59, K5A, K5B, K5C }, \
|
{ K50, K51, K52, K53, K54, K55, K56, K57, K58, K59, K5A, K5B, K5C }, \
|
||||||
{ K60, K61, K62, K63, K64, K65, K66, K67, K68, K69, K6A, K6B, K6C }, \
|
{ K60, K61, K62, K63, K64, K65, K66, K67, K68, K69, K6A, K6B, K6C }, \
|
||||||
{ K71, K71, K72, K73, K74, K75, K76, K77, K78, K79, K7A, K7B, K7C }, \
|
{ K70, K71, K72, K73, K74, K75, K76, K77, K78, K79, K7A, K7B, K7C }, \
|
||||||
}
|
}
|
||||||
|
|
||||||
// ISO Layout
|
// ISO Layout
|
||||||
|
|||||||
@@ -132,7 +132,6 @@ ________________________________________________________________________________
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||||
if (record->event.pressed) {
|
if (record->event.pressed) {
|
||||||
switch (keycode) {
|
switch (keycode) {
|
||||||
@@ -159,8 +158,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
|||||||
SEND_STRING(SS_DOWN(X_LALT) SS_DOWN(X_LGUI) SS_TAP(X_Q) SS_UP(X_LGUI) SS_UP(X_LALT));
|
SEND_STRING(SS_DOWN(X_LALT) SS_DOWN(X_LGUI) SS_TAP(X_Q) SS_UP(X_LGUI) SS_UP(X_LALT));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -1,33 +0,0 @@
|
|||||||
/* Found at https://www.linuxquestions.org/questions/linux-hardware-18/how-to-unclaim-usb-device-558138/#post3406986 */
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <sys/types.h>
|
|
||||||
#include <sys/stat.h>
|
|
||||||
#include <fcntl.h>
|
|
||||||
#include <linux/ioctl.h>
|
|
||||||
#include <linux/usbdevice_fs.h>
|
|
||||||
|
|
||||||
int main(int argc, char**argv)
|
|
||||||
{
|
|
||||||
struct usbdevfs_ioctl command;
|
|
||||||
int ret;
|
|
||||||
int fd;
|
|
||||||
int i;
|
|
||||||
if (argc>1) {
|
|
||||||
fd = open(argv[1],O_RDWR);
|
|
||||||
if (fd<1){
|
|
||||||
perror("unable to open file");
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
for (i=0;i<255;i++){ // hack: should fetch how many interface there is.
|
|
||||||
command.ifno = i;
|
|
||||||
command.ioctl_code = USBDEVFS_DISCONNECT;
|
|
||||||
command.data = NULL;
|
|
||||||
ret = ioctl(fd, USBDEVFS_IOCTL, &command);
|
|
||||||
if(ret!=-1)
|
|
||||||
printf("un claimed interface %d %d\n",i,ret);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
printf ("usage: %s /dev/bus/usb/BUS/DEVICE\n",argv[0]);
|
|
||||||
printf("Release all interfaces of this usb device for usage in virtualisation\n");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
# JJ40 Tools
|
|
||||||
|
|
||||||
## usb_detach.c
|
|
||||||
|
|
||||||
When trying to flash on Linux, you may encounter a "Resource Unavailable" error. This means that Linux's HID driver has taken exclusive control of the keyboard, and the program script can't flash it.
|
|
||||||
This program can force Linux to give up a device, so that the programming script can reset it.
|
|
||||||
|
|
||||||
### To compile:
|
|
||||||
```
|
|
||||||
gcc usb_detach.c -o usb_detach
|
|
||||||
```
|
|
||||||
|
|
||||||
### To run:
|
|
||||||
1. Use `lsusb` to discover the Bus and Device numbers for your keyboard.
|
|
||||||
2. Run the program: `sudo ./usb_detach /dev/bus/usb/<BUS>/<DEVICE>`.
|
|
||||||
3. Build and program the firmware as normal.
|
|
||||||
@@ -1,33 +0,0 @@
|
|||||||
/* Found at https://www.linuxquestions.org/questions/linux-hardware-18/how-to-unclaim-usb-device-558138/#post3406986 */
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <sys/types.h>
|
|
||||||
#include <sys/stat.h>
|
|
||||||
#include <fcntl.h>
|
|
||||||
#include <linux/ioctl.h>
|
|
||||||
#include <linux/usbdevice_fs.h>
|
|
||||||
|
|
||||||
int main(int argc, char**argv)
|
|
||||||
{
|
|
||||||
struct usbdevfs_ioctl command;
|
|
||||||
int ret;
|
|
||||||
int fd;
|
|
||||||
int i;
|
|
||||||
if (argc>1) {
|
|
||||||
fd = open(argv[1],O_RDWR);
|
|
||||||
if (fd<1){
|
|
||||||
perror("unable to open file");
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
for (i=0;i<255;i++){ // hack: should fetch how many interface there is.
|
|
||||||
command.ifno = i;
|
|
||||||
command.ioctl_code = USBDEVFS_DISCONNECT;
|
|
||||||
command.data = NULL;
|
|
||||||
ret = ioctl(fd, USBDEVFS_IOCTL, &command);
|
|
||||||
if(ret!=-1)
|
|
||||||
printf("un claimed interface %d %d\n",i,ret);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
printf ("usage: %s /dev/bus/usb/BUS/DEVICE\n",argv[0]);
|
|
||||||
printf("Release all interfaces of this usb device for usage in virtualisation\n");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
# JJ40 Tools
|
|
||||||
|
|
||||||
## usb_detach.c
|
|
||||||
|
|
||||||
When trying to flash on Linux, you may encounter a "Resource Unavailable" error. This means that Linux's HID driver has taken exclusive control of the keyboard, and the program script can't flash it.
|
|
||||||
This program can force Linux to give up a device, so that the programming script can reset it.
|
|
||||||
|
|
||||||
### To compile:
|
|
||||||
```
|
|
||||||
gcc usb_detach.c -o usb_detach
|
|
||||||
```
|
|
||||||
|
|
||||||
### To run:
|
|
||||||
1. Use `lsusb` to discover the Bus and Device numbers for your keyboard.
|
|
||||||
2. Run the program: `sudo ./usb_detach /dev/bus/usb/<BUS>/<DEVICE>`.
|
|
||||||
3. Build and program the firmware as normal.
|
|
||||||
@@ -317,6 +317,8 @@ void audio_init() {
|
|||||||
|
|
||||||
if (audio_config.enable) {
|
if (audio_config.enable) {
|
||||||
PLAY_SONG(startup_song);
|
PLAY_SONG(startup_song);
|
||||||
|
} else {
|
||||||
|
stop_all_notes();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ extern bool midi_activated;
|
|||||||
|
|
||||||
void clicky_play(void) {
|
void clicky_play(void) {
|
||||||
#ifndef NO_MUSIC_MODE
|
#ifndef NO_MUSIC_MODE
|
||||||
if (music_activated || midi_activated || audio_config.enable) return;
|
if (music_activated || midi_activated || !audio_config.enable) return;
|
||||||
#endif // !NO_MUSIC_MODE
|
#endif // !NO_MUSIC_MODE
|
||||||
clicky_song[0][0] = 2.0f * clicky_freq * (1.0f + clicky_rand * ( ((float)rand()) / ((float)(RAND_MAX)) ) );
|
clicky_song[0][0] = 2.0f * clicky_freq * (1.0f + clicky_rand * ( ((float)rand()) / ((float)(RAND_MAX)) ) );
|
||||||
clicky_song[1][0] = clicky_freq * (1.0f + clicky_rand * ( ((float)rand()) / ((float)(RAND_MAX)) ) );
|
clicky_song[1][0] = clicky_freq * (1.0f + clicky_rand * ( ((float)rand()) / ((float)(RAND_MAX)) ) );
|
||||||
|
|||||||
@@ -143,8 +143,8 @@ static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row)
|
|||||||
#elif (DIODE_DIRECTION == COL2ROW)
|
#elif (DIODE_DIRECTION == COL2ROW)
|
||||||
|
|
||||||
static void select_row(uint8_t row) {
|
static void select_row(uint8_t row) {
|
||||||
writePinLow(row_pins[row]);
|
|
||||||
setPinOutput(row_pins[row]);
|
setPinOutput(row_pins[row]);
|
||||||
|
writePinLow(row_pins[row]);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void unselect_row(uint8_t row) { setPinInputHigh(row_pins[row]); }
|
static void unselect_row(uint8_t row) { setPinInputHigh(row_pins[row]); }
|
||||||
@@ -188,8 +188,8 @@ static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row)
|
|||||||
#elif (DIODE_DIRECTION == ROW2COL)
|
#elif (DIODE_DIRECTION == ROW2COL)
|
||||||
|
|
||||||
static void select_col(uint8_t col) {
|
static void select_col(uint8_t col) {
|
||||||
writePinLow(col_pins[col]);
|
|
||||||
setPinOutput(col_pins[col]);
|
setPinOutput(col_pins[col]);
|
||||||
|
writePinLow(col_pins[col]);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void unselect_col(uint8_t col) { setPinInputHigh(col_pins[col]); }
|
static void unselect_col(uint8_t col) { setPinInputHigh(col_pins[col]); }
|
||||||
|
|||||||
+1
-8
@@ -292,14 +292,7 @@ extcoff: $(BUILD_DIR)/$(TARGET).elf
|
|||||||
|
|
||||||
bootloader:
|
bootloader:
|
||||||
make -C lib/lufa/Bootloaders/DFU/ clean
|
make -C lib/lufa/Bootloaders/DFU/ clean
|
||||||
printf "#ifndef QMK_KEYBOARD\n#define QMK_KEYBOARD\n\n" > lib/lufa/Bootloaders/DFU/Keyboard.h
|
$(TMK_DIR)/make_dfu_header.sh $(ALL_CONFIGS)
|
||||||
printf "%s\n" "`$(GREP) "MANUFACTURER\s" $(ALL_CONFIGS) -h | tail -1`" >> lib/lufa/Bootloaders/DFU/Keyboard.h
|
|
||||||
printf "%s Bootloader\n" "`$(GREP) "PRODUCT\s" $(ALL_CONFIGS) -h | tail -1 | tr -d '\r'`" >> lib/lufa/Bootloaders/DFU/Keyboard.h
|
|
||||||
printf "%s\n" "`$(GREP) "QMK_ESC_OUTPUT\s" $(ALL_CONFIGS) -h | tail -1`" >> lib/lufa/Bootloaders/DFU/Keyboard.h
|
|
||||||
printf "%s\n" "`$(GREP) "QMK_ESC_INPUT\s" $(ALL_CONFIGS) -h | tail -1`" >> lib/lufa/Bootloaders/DFU/Keyboard.h
|
|
||||||
printf "%s\n" "`$(GREP) "QMK_LED\s" $(ALL_CONFIGS) -h | tail -1`" >> lib/lufa/Bootloaders/DFU/Keyboard.h
|
|
||||||
printf "%s\n" "`$(GREP) "QMK_SPEAKER\s" $(ALL_CONFIGS) -h | tail -1`" >> lib/lufa/Bootloaders/DFU/Keyboard.h
|
|
||||||
printf "\n#endif" >> lib/lufa/Bootloaders/DFU/Keyboard.h
|
|
||||||
make -C lib/lufa/Bootloaders/DFU/
|
make -C lib/lufa/Bootloaders/DFU/
|
||||||
printf "BootloaderDFU.hex copied to $(TARGET)_bootloader.hex\n"
|
printf "BootloaderDFU.hex copied to $(TARGET)_bootloader.hex\n"
|
||||||
cp lib/lufa/Bootloaders/DFU/BootloaderDFU.hex $(TARGET)_bootloader.hex
|
cp lib/lufa/Bootloaders/DFU/BootloaderDFU.hex $(TARGET)_bootloader.hex
|
||||||
|
|||||||
Executable
+16
@@ -0,0 +1,16 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
ALL_CONFIGS=$*
|
||||||
|
GREP="grep"
|
||||||
|
|
||||||
|
cat <<- EOF > lib/lufa/Bootloaders/DFU/Keyboard.h
|
||||||
|
#ifndef QMK_KEYBOARD
|
||||||
|
#define QMK_KEYBOARD
|
||||||
|
|
||||||
|
$($GREP "MANUFACTURER[ \t]" $ALL_CONFIGS -h | tail -1)
|
||||||
|
$($GREP "PRODUCT[ \t]" $ALL_CONFIGS -h | tail -1 | tr -d '\r') Bootloader
|
||||||
|
$($GREP "QMK_ESC_OUTPUT[ \t]" $ALL_CONFIGS -h | tail -1)
|
||||||
|
$($GREP "QMK_ESC_INPUT[ \t]" $ALL_CONFIGS -h | tail -1)
|
||||||
|
$($GREP "QMK_LED[ \t]" $ALL_CONFIGS -h | tail -1)
|
||||||
|
$($GREP "QMK_SPEAKER[ \t]" $ALL_CONFIGS -h | tail -1)
|
||||||
|
#endif
|
||||||
|
EOF
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
# the compiler: gcc for C program, define as g++ for C++
|
||||||
|
CC = gcc
|
||||||
|
|
||||||
|
# compiler flags:
|
||||||
|
# -g adds debugging information to the executable file
|
||||||
|
# -Wall turns on most, but not all, compiler warnings
|
||||||
|
CFLAGS = -g -Wall
|
||||||
|
|
||||||
|
# the build target executable:
|
||||||
|
TARGET = usb_detach
|
||||||
|
|
||||||
|
all: $(TARGET)
|
||||||
|
|
||||||
|
$(TARGET): $(TARGET).c
|
||||||
|
$(CC) $(CFLAGS) -o $(TARGET) $(TARGET).c
|
||||||
|
|
||||||
|
clean:
|
||||||
|
$(RM) $(TARGET)
|
||||||
@@ -1,16 +1,14 @@
|
|||||||
# JJ40 Tools
|
# usb_detach
|
||||||
|
|
||||||
## usb_detach.c
|
|
||||||
|
|
||||||
When trying to flash on Linux, you may encounter a "Resource Unavailable" error. This means that Linux's HID driver has taken exclusive control of the keyboard, and the program script can't flash it.
|
When trying to flash on Linux, you may encounter a "Resource Unavailable" error. This means that Linux's HID driver has taken exclusive control of the keyboard, and the program script can't flash it.
|
||||||
This program can force Linux to give up a device, so that the programming script can reset it.
|
This program can force Linux to give up a device, so that the programming script can reset it.
|
||||||
|
|
||||||
### To compile:
|
## To compile:
|
||||||
```
|
```bash
|
||||||
gcc usb_detach.c -o usb_detach
|
make clean && make
|
||||||
```
|
```
|
||||||
|
|
||||||
### To run:
|
## To run:
|
||||||
1. Use `lsusb` to discover the Bus and Device numbers for your keyboard.
|
1. Use `lsusb` to discover the Bus and Device numbers for your keyboard.
|
||||||
2. Run the program: `sudo ./usb_detach /dev/bus/usb/<BUS>/<DEVICE>`.
|
2. Run the program: `sudo ./usb_detach /dev/bus/usb/<BUS>/<DEVICE>`.
|
||||||
3. Build and program the firmware as normal.
|
3. Build and program the firmware as normal.
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
/* Found at https://www.linuxquestions.org/questions/linux-hardware-18/how-to-unclaim-usb-device-558138/#post3406986 */
|
/* Found at https://www.linuxquestions.org/questions/linux-hardware-18/how-to-unclaim-usb-device-558138/#post3406986 */
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
#include <sys/ioctl.h>
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
Reference in new issue
Block a user