Code Monkey home page Code Monkey logo

new-keyboard's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

new-keyboard's Issues

Do not delay Shift key up events.

The current firmware postpones shift key up events until all the other keys are released. This behavior is only required with several Japanese Kana keyboard layouts. The next firmware should make this optional.

The following code path will be selectable by the keyboard configuration:

} else if (processed[1] && !current[1] ||
(processed[0] & MOD_LEFTSHIFT) && !(current[0] & MOD_LEFTSHIFT) ||
(processed[0] & MOD_RIGHTSHIFT) && !(current[0] & MOD_RIGHTSHIFT))
{
/* empty */

simply swap some keys

Hi bro, I'd like to swap some keys position on this keyboard, (ex : cmd swap with option) is it possible to have this done without programming?

Option to invert numbers and symbols on the number row

It would be nice to have an option to invert numbers and symbols on the number row, like on the French layout, Spanish layout, some QWERTZ layouts or the Programmer Dvorak layout.

This would mostly be useful for programmers, people using a Compose key to input special characters or to add hardware support for Programmer Dvorak.

I think this means inverting the shift modifier when a number row key is pressed.
The main issue is with the behavior of the Caps Lock key:

  • With Programmer Dvorak, Caps Lock works for the number row (e.g. pressing Caps Lock then [ outputs 7. This is useful when you want to input multiple numbers in a row.
  • With the French layout, Caps Lock works for the number row AND special character keys not in the number row such as $, *, !, etc.

I'm not sure which approach would be the best here.

What do you think about this possible feature?

Support Mac mode

At 37b1b03, there are several issues we need to address to make the new keyboard correctly functioning on OS X.

  1. OS X seems to assume that the USB logical maximum values are always signed.
    Therefore, in the class specific descriptor,
    0x25, 0xFF, // LOGICAL_MAXIMUM (255)
    doesn't work on OS X while both Windows and Linux accept it. The solution is to use a word value instead of a byte value:
    0x26, DESC_CONFIG_WORD(0xFF), // LOGICAL_MAXIMUM (255)

  2. The order of keycodes in array fields has no significance in OS X.
    This is what the HID specification says and OS X follows. Note both Windows and Linux preserve the order and we can send a Romaji sequence in a single array, which doesn't work on OS X.

  3. ことえり does not convert "xn" to "ん" by default.

  4. かな(KEY_LANG1) and 英数(KEY_LANG2) should be used instead of F13 and F14.

build error with XC8 v1.35

Hello again,

I had to download PIC18F Legacy Peripheral Libraries v1.0 - MAC OS (http://www.microchip.com/mymicrochip/filehandler.aspx?ddocname=en574976) because it gave an error along the lines of peripheral library support is missing (google tells me that it is no longer packaged with XC8 compiler). Now it is failing with


CLEAN SUCCESSFUL (total time: 55ms)
make -f nbproject/Makefile-Esrille_New_Keyboard.mk SUBPROJECTS= .build-conf
make[1]: Entering directory '/Users/larver/nisse/new-keyboard/firmware/third_party/mla_v2013_12_20/apps/usb/device/hid_keyboard/firmware/MPLAB.X'
make  -f nbproject/Makefile-Esrille_New_Keyboard.mk dist/Esrille_New_Keyboard/production/MPLAB.X.production.hex
make[2]: Entering directory '/Users/larver/nisse/new-keyboard/firmware/third_party/mla_v2013_12_20/apps/usb/device/hid_keyboard/firmware/MPLAB.X'
"/Applications/microchip/xc8/v1.35/bin/xc8" --pass1  --chip=18F4550 -Q -G  --double=24 --float=24 --emi=wordwrite --rom=default,-0-17FF,-1806-1807,-1826-1827 --opt=default,+asm,-asmfile,-speed,+space,-debug --addrqual=ignore --mode=free -P -N255 -I"../../../../../../../../src" -I"../src" -I"../../../../../../framework" -I"../../../../../../bsp/esrille_new_keyboard" -I"../src/system_config/esrille_new_keyboard" --warn=0 --asmlist --summary=default,-psect,-class,+mem,-hex,-file --codeoffset=0x1800 --output=default,-inhx032 --runtime=default,+clear,+init,-keep,-no_startup,-download,+config,+clib,+plib --output=-mcof,+elf:multilocs --stack=compiled:auto:auto:auto "--errformat=%f:%l: error: (%n) %s" "--warnformat=%f:%l: warning: (%n) %s" "--msgformat=%f:%l: advisory: (%n) %s"    -obuild/Esrille_New_Keyboard/production/_ext/770305540/system.p1  ../src/system_config/esrille_new_keyboard/system.c 
"/Applications/microchip/xc8/v1.35/bin/xc8" --pass1  --chip=18F4550 -Q -G  --double=24 --float=24 --emi=wordwrite --rom=default,-0-17FF,-1806-1807,-1826-1827 --opt=default,+asm,-asmfile,-speed,+space,-debug --addrqual=ignore --mode=free -P -N255 -I"../../../../../../../../src" -I"../src" -I"../../../../../../framework" -I"../../../../../../bsp/esrille_new_keyboard" -I"../src/system_config/esrille_new_keyboard" --warn=0 --asmlist --summary=default,-psect,-class,+mem,-hex,-file --codeoffset=0x1800 --output=default,-inhx032 --runtime=default,+clear,+init,-keep,-no_startup,-download,+config,+clib,+plib --output=-mcof,+elf:multilocs --stack=compiled:auto:auto:auto "--errformat=%f:%l: error: (%n) %s" "--warnformat=%f:%l: warning: (%n) %s" "--msgformat=%f:%l: advisory: (%n) %s"    -obuild/Esrille_New_Keyboard/production/_ext/1360937237/app_device_keyboard.p1  ../src/app_device_keyboard.c 
"/Applications/microchip/xc8/v1.35/bin/xc8" --pass1  --chip=18F4550 -Q -G  --double=24 --float=24 --emi=wordwrite --rom=default,-0-17FF,-1806-1807,-1826-1827 --opt=default,+asm,-asmfile,-speed,+space,-debug --addrqual=ignore --mode=free -P -N255 -I"../../../../../../../../src" -I"../src" -I"../../../../../../framework" -I"../../../../../../bsp/esrille_new_keyboard" -I"../src/system_config/esrille_new_keyboard" --warn=0 --asmlist --summary=default,-psect,-class,+mem,-hex,-file --codeoffset=0x1800 --output=default,-inhx032 --runtime=default,+clear,+init,-keep,-no_startup,-download,+config,+clib,+plib --output=-mcof,+elf:multilocs --stack=compiled:auto:auto:auto "--errformat=%f:%l: error: (%n) %s" "--warnformat=%f:%l: warning: (%n) %s" "--msgformat=%f:%l: advisory: (%n) %s"    -obuild/Esrille_New_Keyboard/production/_ext/1360937237/app_led_usb_status.p1  ../src/app_led_usb_status.c 
"/Applications/microchip/xc8/v1.35/bin/xc8" --pass1  --chip=18F4550 -Q -G  --double=24 --float=24 --emi=wordwrite --rom=default,-0-17FF,-1806-1807,-1826-1827 --opt=default,+asm,-asmfile,-speed,+space,-debug --addrqual=ignore --mode=free -P -N255 -I"../../../../../../../../src" -I"../src" -I"../../../../../../framework" -I"../../../../../../bsp/esrille_new_keyboard" -I"../src/system_config/esrille_new_keyboard" --warn=0 --asmlist --summary=default,-psect,-class,+mem,-hex,-file --codeoffset=0x1800 --output=default,-inhx032 --runtime=default,+clear,+init,-keep,-no_startup,-download,+config,+clib,+plib --output=-mcof,+elf:multilocs --stack=compiled:auto:auto:auto "--errformat=%f:%l: error: (%n) %s" "--warnformat=%f:%l: warning: (%n) %s" "--msgformat=%f:%l: advisory: (%n) %s"    -obuild/Esrille_New_Keyboard/production/_ext/1360937237/main.p1  ../src/main.c 
"/Applications/microchip/xc8/v1.35/bin/xc8" --pass1  --chip=18F4550 -Q -G  --double=24 --float=24 --emi=wordwrite --rom=default,-0-17FF,-1806-1807,-1826-1827 --opt=default,+asm,-asmfile,-speed,+space,-debug --addrqual=ignore --mode=free -P -N255 -I"../../../../../../../../src" -I"../src" -I"../../../../../../framework" -I"../../../../../../bsp/esrille_new_keyboard" -I"../src/system_config/esrille_new_keyboard" --warn=0 --asmlist --summary=default,-psect,-class,+mem,-hex,-file --codeoffset=0x1800 --output=default,-inhx032 --runtime=default,+clear,+init,-keep,-no_startup,-download,+config,+clib,+plib --output=-mcof,+elf:multilocs --stack=compiled:auto:auto:auto "--errformat=%f:%l: error: (%n) %s" "--warnformat=%f:%l: warning: (%n) %s" "--msgformat=%f:%l: advisory: (%n) %s"    -obuild/Esrille_New_Keyboard/production/_ext/1360937237/usb_descriptors.p1  ../src/usb_descriptors.c 
"/Applications/microchip/xc8/v1.35/bin/xc8" --pass1  --chip=18F4550 -Q -G  --double=24 --float=24 --emi=wordwrite --rom=default,-0-17FF,-1806-1807,-1826-1827 --opt=default,+asm,-asmfile,-speed,+space,-debug --addrqual=ignore --mode=free -P -N255 -I"../../../../../../../../src" -I"../src" -I"../../../../../../framework" -I"../../../../../../bsp/esrille_new_keyboard" -I"../src/system_config/esrille_new_keyboard" --warn=0 --asmlist --summary=default,-psect,-class,+mem,-hex,-file --codeoffset=0x1800 --output=default,-inhx032 --runtime=default,+clear,+init,-keep,-no_startup,-download,+config,+clib,+plib --output=-mcof,+elf:multilocs --stack=compiled:auto:auto:auto "--errformat=%f:%l: error: (%n) %s" "--warnformat=%f:%l: warning: (%n) %s" "--msgformat=%f:%l: advisory: (%n) %s"    -obuild/Esrille_New_Keyboard/production/_ext/1360937237/app_device_mouse.p1  ../src/app_device_mouse.c 
"/Applications/microchip/xc8/v1.35/bin/xc8" --pass1  --chip=18F4550 -Q -G  --double=24 --float=24 --emi=wordwrite --rom=default,-0-17FF,-1806-1807,-1826-1827 --opt=default,+asm,-asmfile,-speed,+space,-debug --addrqual=ignore --mode=free -P -N255 -I"../../../../../../../../src" -I"../src" -I"../../../../../../framework" -I"../../../../../../bsp/esrille_new_keyboard" -I"../src/system_config/esrille_new_keyboard" --warn=0 --asmlist --summary=default,-psect,-class,+mem,-hex,-file --codeoffset=0x1800 --output=default,-inhx032 --runtime=default,+clear,+init,-keep,-no_startup,-download,+config,+clib,+plib --output=-mcof,+elf:multilocs --stack=compiled:auto:auto:auto "--errformat=%f:%l: error: (%n) %s" "--warnformat=%f:%l: warning: (%n) %s" "--msgformat=%f:%l: advisory: (%n) %s"    -obuild/Esrille_New_Keyboard/production/_ext/978351403/buttons.p1  ../../../../../../bsp/esrille_new_keyboard/buttons.c 
"/Applications/microchip/xc8/v1.35/bin/xc8" --pass1  --chip=18F4550 -Q -G  --double=24 --float=24 --emi=wordwrite --rom=default,-0-17FF,-1806-1807,-1826-1827 --opt=default,+asm,-asmfile,-speed,+space,-debug --addrqual=ignore --mode=free -P -N255 -I"../../../../../../../../src" -I"../src" -I"../../../../../../framework" -I"../../../../../../bsp/esrille_new_keyboard" -I"../src/system_config/esrille_new_keyboard" --warn=0 --asmlist --summary=default,-psect,-class,+mem,-hex,-file --codeoffset=0x1800 --output=default,-inhx032 --runtime=default,+clear,+init,-keep,-no_startup,-download,+config,+clib,+plib --output=-mcof,+elf:multilocs --stack=compiled:auto:auto:auto "--errformat=%f:%l: error: (%n) %s" "--warnformat=%f:%l: warning: (%n) %s" "--msgformat=%f:%l: advisory: (%n) %s"    -obuild/Esrille_New_Keyboard/production/_ext/978351403/leds.p1  ../../../../../../bsp/esrille_new_keyboard/leds.c 
"/Applications/microchip/xc8/v1.35/bin/xc8" --pass1  --chip=18F4550 -Q -G  --double=24 --float=24 --emi=wordwrite --rom=default,-0-17FF,-1806-1807,-1826-1827 --opt=default,+asm,-asmfile,-speed,+space,-debug --addrqual=ignore --mode=free -P -N255 -I"../../../../../../../../src" -I"../src" -I"../../../../../../framework" -I"../../../../../../bsp/esrille_new_keyboard" -I"../src/system_config/esrille_new_keyboard" --warn=0 --asmlist --summary=default,-psect,-class,+mem,-hex,-file --codeoffset=0x1800 --output=default,-inhx032 --runtime=default,+clear,+init,-keep,-no_startup,-download,+config,+clib,+plib --output=-mcof,+elf:multilocs --stack=compiled:auto:auto:auto "--errformat=%f:%l: error: (%n) %s" "--warnformat=%f:%l: warning: (%n) %s" "--msgformat=%f:%l: advisory: (%n) %s"    -obuild/Esrille_New_Keyboard/production/_ext/838585624/usb_device.p1  ../../../../../../framework/usb/src/usb_device.c 
"/Applications/microchip/xc8/v1.35/bin/xc8" --pass1  --chip=18F4550 -Q -G  --double=24 --float=24 --emi=wordwrite --rom=default,-0-17FF,-1806-1807,-1826-1827 --opt=default,+asm,-asmfile,-speed,+space,-debug --addrqual=ignore --mode=free -P -N255 -I"../../../../../../../../src" -I"../src" -I"../../../../../../framework" -I"../../../../../../bsp/esrille_new_keyboard" -I"../src/system_config/esrille_new_keyboard" --warn=0 --asmlist --summary=default,-psect,-class,+mem,-hex,-file --codeoffset=0x1800 --output=default,-inhx032 --runtime=default,+clear,+init,-keep,-no_startup,-download,+config,+clib,+plib --output=-mcof,+elf:multilocs --stack=compiled:auto:auto:auto "--errformat=%f:%l: error: (%n) %s" "--warnformat=%f:%l: warning: (%n) %s" "--msgformat=%f:%l: advisory: (%n) %s"    -obuild/Esrille_New_Keyboard/production/_ext/838585624/usb_device_hid.p1  ../../../../../../framework/usb/src/usb_device_hid.c 
"/Applications/microchip/xc8/v1.35/bin/xc8" --pass1  --chip=18F4550 -Q -G  --double=24 --float=24 --emi=wordwrite --rom=default,-0-17FF,-1806-1807,-1826-1827 --opt=default,+asm,-asmfile,-speed,+space,-debug --addrqual=ignore --mode=free -P -N255 -I"../../../../../../../../src" -I"../src" -I"../../../../../../framework" -I"../../../../../../bsp/esrille_new_keyboard" -I"../src/system_config/esrille_new_keyboard" --warn=0 --asmlist --summary=default,-psect,-class,+mem,-hex,-file --codeoffset=0x1800 --output=default,-inhx032 --runtime=default,+clear,+init,-keep,-no_startup,-download,+config,+clib,+plib --output=-mcof,+elf:multilocs --stack=compiled:auto:auto:auto "--errformat=%f:%l: error: (%n) %s" "--warnformat=%f:%l: warning: (%n) %s" "--msgformat=%f:%l: advisory: (%n) %s"    -obuild/Esrille_New_Keyboard/production/_ext/309221532/KeyboardCommon.p1  ../../../../../../../../src/KeyboardCommon.c 
"/Applications/microchip/xc8/v1.35/bin/xc8" --pass1  --chip=18F4550 -Q -G  --double=24 --float=24 --emi=wordwrite --rom=default,-0-17FF,-1806-1807,-1826-1827 --opt=default,+asm,-asmfile,-speed,+space,-debug --addrqual=ignore --mode=free -P -N255 -I"../../../../../../../../src" -I"../src" -I"../../../../../../framework" -I"../../../../../../bsp/esrille_new_keyboard" -I"../src/system_config/esrille_new_keyboard" --warn=0 --asmlist --summary=default,-psect,-class,+mem,-hex,-file --codeoffset=0x1800 --output=default,-inhx032 --runtime=default,+clear,+init,-keep,-no_startup,-download,+config,+clib,+plib --output=-mcof,+elf:multilocs --stack=compiled:auto:auto:auto "--errformat=%f:%l: error: (%n) %s" "--warnformat=%f:%l: warning: (%n) %s" "--msgformat=%f:%l: advisory: (%n) %s"    -obuild/Esrille_New_Keyboard/production/_ext/309221532/KeyboardJP.p1  ../../../../../../../../src/KeyboardJP.c 
"/Applications/microchip/xc8/v1.35/bin/xc8" --pass1  --chip=18F4550 -Q -G  --double=24 --float=24 --emi=wordwrite --rom=default,-0-17FF,-1806-1807,-1826-1827 --opt=default,+asm,-asmfile,-speed,+space,-debug --addrqual=ignore --mode=free -P -N255 -I"../../../../../../../../src" -I"../src" -I"../../../../../../framework" -I"../../../../../../bsp/esrille_new_keyboard" -I"../src/system_config/esrille_new_keyboard" --warn=0 --asmlist --summary=default,-psect,-class,+mem,-hex,-file --codeoffset=0x1800 --output=default,-inhx032 --runtime=default,+clear,+init,-keep,-no_startup,-download,+config,+clib,+plib --output=-mcof,+elf:multilocs --stack=compiled:auto:auto:auto "--errformat=%f:%l: error: (%n) %s" "--warnformat=%f:%l: warning: (%n) %s" "--msgformat=%f:%l: advisory: (%n) %s"    -obuild/Esrille_New_Keyboard/production/_ext/309221532/KeyboardUS.p1  ../../../../../../../../src/KeyboardUS.c 
"/Applications/microchip/xc8/v1.35/bin/xc8" --pass1  --chip=18F4550 -Q -G  --double=24 --float=24 --emi=wordwrite --rom=default,-0-17FF,-1806-1807,-1826-1827 --opt=default,+asm,-asmfile,-speed,+space,-debug --addrqual=ignore --mode=free -P -N255 -I"../../../../../../../../src" -I"../src" -I"../../../../../../framework" -I"../../../../../../bsp/esrille_new_keyboard" -I"../src/system_config/esrille_new_keyboard" --warn=0 --asmlist --summary=default,-psect,-class,+mem,-hex,-file --codeoffset=0x1800 --output=default,-inhx032 --runtime=default,+clear,+init,-keep,-no_startup,-download,+config,+clib,+plib --output=-mcof,+elf:multilocs --stack=compiled:auto:auto:auto "--errformat=%f:%l: error: (%n) %s" "--warnformat=%f:%l: warning: (%n) %s" "--msgformat=%f:%l: advisory: (%n) %s"    -obuild/Esrille_New_Keyboard/production/_ext/309221532/Mouse.p1  ../../../../../../../../src/Mouse.c 
../../../../../../../../src/KeyboardJP.c:397: warning: (1404) unsupported: The Read_b_eep routine is no longer supported. Please use the MPLAB X MCC.
../../../../../../../../src/KeyboardJP.c:401: warning: (1404) unsupported: The Read_b_eep routine is no longer supported. Please use the MPLAB X MCC.
../../../../../../../../src/KeyboardJP.c:405: warning: (1404) unsupported: The Read_b_eep routine is no longer supported. Please use the MPLAB X MCC.
../../../../../../../../src/KeyboardJP.c:420: warning: (1404) unsupported: The Busy_eep routine is no longer supported. Please use the MPLAB X MCC.
../../../../../../../../src/KeyboardJP.c:434: warning: (1404) unsupported: The Busy_eep routine is no longer supported. Please use the MPLAB X MCC.
../../../../../../../../src/KeyboardJP.c:448: warning: (1404) unsupported: The Busy_eep routine is no longer supported. Please use the MPLAB X MCC.
../../../../../../../../src/KeyboardCommon.c:181: warning: (1404) unsupported: The Read_b_eep routine is no longer supported. Please use the MPLAB X MCC.
../../../../../../../../src/KeyboardCommon.c:184: warning: (1404) unsupported: The Read_b_eep routine is no longer supported. Please use the MPLAB X MCC.
../../../../../../../../src/KeyboardCommon.c:187: warning: (1404) unsupported: The Read_b_eep routine is no longer supported. Please use the MPLAB X MCC.
../../../../../../../../src/KeyboardCommon.c:190: warning: (1404) unsupported: The Read_b_eep routine is no longer supported. Please use the MPLAB X MCC.
../../../../../../../../src/KeyboardCommon.c:207: warning: (1404) unsupported: The Busy_eep routine is no longer supported. Please use the MPLAB X MCC.
../../../../../../../../src/KeyboardCommon.c:221: warning: (1404) unsupported: The Busy_eep routine is no longer supported. Please use the MPLAB X MCC.
../../../../../../../../src/KeyboardCommon.c:235: warning: (1404) unsupported: The Busy_eep routine is no longer supported. Please use the MPLAB X MCC.
../../../../../../../../src/KeyboardCommon.c:249: warning: (1404) unsupported: The Busy_eep routine is no longer supported. Please use the MPLAB X MCC.
../../../../../../../../src/KeyboardUS.c:116: warning: (1404) unsupported: The Read_b_eep routine is no longer supported. Please use the MPLAB X MCC.
../../../../../../../../src/KeyboardUS.c:131: warning: (1404) unsupported: The Busy_eep routine is no longer supported. Please use the MPLAB X MCC.
../../../../../../../../src/Mouse.c:65: warning: (1404) unsupported: The Read_b_eep routine is no longer supported. Please use the MPLAB X MCC.
../../../../../../../../src/Mouse.c:83: warning: (1404) unsupported: The Busy_eep routine is no longer supported. Please use the MPLAB X MCC.
"/Applications/microchip/xc8/v1.35/bin/xc8"  --chip=18F4550 -G -mdist/Esrille_New_Keyboard/production/MPLAB.X.production.map  --double=24 --float=24 --emi=wordwrite --rom=default,-0-17FF,-1806-1807,-1826-1827 --opt=default,+asm,-asmfile,-speed,+space,-debug --addrqual=ignore --mode=free -P -N255 -I"../../../../../../../../src" -I"../src" -I"../../../../../../framework" -I"../../../../../../bsp/esrille_new_keyboard" -I"../src/system_config/esrille_new_keyboard" --warn=0 --asmlist --summary=default,-psect,-class,+mem,-hex,-file --codeoffset=0x1800 --output=default,-inhx032 --runtime=default,+clear,+init,-keep,-no_startup,-download,+config,+clib,+plib --output=-mcof,+elf:multilocs --stack=compiled:auto:auto:auto "--errformat=%f:%l: error: (%n) %s" "--warnformat=%f:%l: warning: (%n) %s" "--msgformat=%f:%l: advisory: (%n) %s"    --memorysummary dist/Esrille_New_Keyboard/production/memoryfile.xml -odist/Esrille_New_Keyboard/production/MPLAB.X.production.elf  build/Esrille_New_Keyboard/production/_ext/770305540/system.p1 build/Esrille_New_Keyboard/production/_ext/1360937237/app_device_keyboard.p1 build/Esrille_New_Keyboard/production/_ext/1360937237/app_led_usb_status.p1 build/Esrille_New_Keyboard/production/_ext/1360937237/main.p1 build/Esrille_New_Keyboard/production/_ext/1360937237/usb_descriptors.p1 build/Esrille_New_Keyboard/production/_ext/1360937237/app_device_mouse.p1 build/Esrille_New_Keyboard/production/_ext/978351403/buttons.p1 build/Esrille_New_Keyboard/production/_ext/978351403/leds.p1 build/Esrille_New_Keyboard/production/_ext/838585624/usb_device.p1 build/Esrille_New_Keyboard/production/_ext/838585624/usb_device_hid.p1 build/Esrille_New_Keyboard/production/_ext/309221532/KeyboardCommon.p1 build/Esrille_New_Keyboard/production/_ext/309221532/KeyboardJP.p1 build/Esrille_New_Keyboard/production/_ext/309221532/KeyboardUS.p1 build/Esrille_New_Keyboard/production/_ext/309221532/Mouse.p1     
:: advisory: (1233) Employing 18F4550 errata work-arounds:
:: advisory: (1234)  * Corrupted fast interrupt shadow registers
:: warning: (1273) Omniscient Code Generation not available in Free mode
Microchip MPLAB XC8 C Compiler (Free Mode) V1.35
Build date: Jul  7 2015
Part Support Version: 1.35 (B)
Copyright (C) 2015 Microchip Technology Inc.
License type: Node Configuration

/Applications/microchip/xc8/v1.35/include/pic18f4550.h:9211: error: (1098) conflicting declarations for variable "_INTCONbits" (/Applications/microchip/xc8/v1.35/include/pic18f4550.h:8963)
make[2]: *** [dist/Esrille_New_Keyboard/production/MPLAB.X.production.hex] Error 1
make[1]: *** [.build-conf] Error 2
make: *** [.build-impl] Error 2
(908) exit status = 1
nbproject/Makefile-Esrille_New_Keyboard.mk:327: recipe for target 'dist/Esrille_New_Keyboard/production/MPLAB.X.production.hex' failed
make[2]: Leaving directory '/Users/larver/nisse/new-keyboard/firmware/third_party/mla_v2013_12_20/apps/usb/device/hid_keyboard/firmware/MPLAB.X'
nbproject/Makefile-Esrille_New_Keyboard.mk:78: recipe for target '.build-conf' failed
make[1]: Leaving directory '/Users/larver/nisse/new-keyboard/firmware/third_party/mla_v2013_12_20/apps/usb/device/hid_keyboard/firmware/MPLAB.X'
nbproject/Makefile-impl.mk:39: recipe for target '.build-impl' failed

BUILD FAILED (exit value 2, total time: 3s)

The error is about a conflicting definition, but that's from the official header file /Applications/microchip/xc8/v1.35/include/pic18f4550.h:9211. Are you using a different version of XC8 or a different peripheral library? If so, how do I obtain it?

I am on Mac OSX.

having trouble building firmware

Hello I am trying to build my own firmware however the build keeps failing. I am using MPLAB X IDE v5.5 and XC8 v1.34. Is there something I am doing wrong?

make -f nbproject/Makefile-PIC18F4550_NISSE.mk SUBPROJECTS= .build-conf
make[1]: Entering directory 'C:/Users/JJ/Downloads/new-keyboard-master1/new-keyboard-master/firmware/third_party/mla_v2013_12_20/apps/usb/device/hid_keyboard/firmware/MPLAB.X'
make  -f nbproject/Makefile-PIC18F4550_NISSE.mk dist/PIC18F4550_NISSE/production/MPLAB.X.production.hex
make[2]: Entering directory 'C:/Users/JJ/Downloads/new-keyboard-master1/new-keyboard-master/firmware/third_party/mla_v2013_12_20/apps/usb/device/hid_keyboard/firmware/MPLAB.X'
"C:\Program Files (x86)\Microchip\xc8\v1.34\bin\xc8.exe" --pass1  --chip=18F4550 -Q -G    --double=24 --float=24 --emi=wordwrite --rom=default,-0-17FF,-1806-1807,-1826-1827 --opt=+asm,-asmfile,-speed,+space,-debug --addrqual=ignore --mode=free -DKANA_MAX=KANA_X6004 -P -N255 -I"../../../../../../../../src" -I"../src" -I"../../../../../../framework" -I"../../../../../../bsp/esrille_new_keyboard" -I"../src/system_config/esrille_new_keyboard" --warn=0 --asmlist -DXPRJ_PIC18F4550_NISSE=PIC18F4550_NISSE  --summary=default,-psect,-class,+mem,-hex,-file --codeoffset=0x1800 --output=default,-inhx032 --runtime=default,+clear,+init,-keep,-no_startup,-download,+config,+clib,+plib   --output=-mcof,+elf:multilocs --stack=compiled:auto:auto:auto "--errformat=%f:%l: error: (%n) %s" "--warnformat=%f:%l: warning: (%n) %s" "--msgformat=%f:%l: advisory: (%n) %s"     -obuild/PIC18F4550_NISSE/production/_ext/838585624/usb_device.p1 ../../../../../../framework/usb/src/usb_device.c 
make[2]: *** [build/PIC18F4550_NISSE/production/_ext/838585624/usb_device.p1] Error 1
make[1]: *** [.build-conf] Error 2
make: *** [.build-impl] Error 2
(908) exit status = 1
nbproject/Makefile-PIC18F4550_NISSE.mk:251: recipe for target 'build/PIC18F4550_NISSE/production/_ext/838585624/usb_device.p1' failed
make[2]: Leaving directory 'C:/Users/JJ/Downloads/new-keyboard-master1/new-keyboard-master/firmware/third_party/mla_v2013_12_20/apps/usb/device/hid_keyboard/firmware/MPLAB.X'
nbproject/Makefile-PIC18F4550_NISSE.mk:91: recipe for target '.build-conf' failed
make[1]: Leaving directory 'C:/Users/JJ/Downloads/new-keyboard-master1/new-keyboard-master/firmware/third_party/mla_v2013_12_20/apps/usb/device/hid_keyboard/firmware/MPLAB.X'
nbproject/Makefile-impl.mk:39: recipe for target '.build-impl' failed

BUILD FAILED (exit value 2, total time: 962ms)

Detailed instruction on modifying layout

Hi, I would like to change the FN layout. I've downloaded the firmware, and the IDE/compiler shown on the website F&Q. However, it is still unclear to me how I can change the layout and save it to the keyboard.

Is there more detailed instruction available that I can follow? Thank you so much!

hidbootloader crashes after inserting NISSE in bootloader mode

Steps to reproduce (on Mac OSX Yosemite):

  • Build HIDBootloader with Qt Creator 5.
  • Connect NISSE via USB while holding ESC key (red LED blinking).
  • Run HIDBootloader (Command + R).

Output:

Starting /Users/larver/nisse/new-keyboard/firmware/third_party/mla_v2013_12_20/apps/usb/device/bootloaders/utilities/build-HIDBootloader-Desktop_Qt_5_5_1_clang_64bit-Debug/Bootloader/mac/HIDBootloader.app/Contents/MacOS/HIDBootloader...
2015-10-31 23:44:39.187 HIDBootloader[735:5914] An uncaught exception was raised
2015-10-31 23:44:39.187 HIDBootloader[735:5914] -[NSTaggedPointerString getCharacters:range:]: Range {0, 32} out of bounds; string length 3
2015-10-31 23:44:39.187 HIDBootloader[735:5914] (
    0   CoreFoundation                      0x00007fff921b303c __exceptionPreprocess + 172
    1   libobjc.A.dylib                     0x00007fff8937376e objc_exception_throw + 43
    2   CoreFoundation                      0x00007fff921b2eed +[NSException raise:format:] + 205
    3   CoreFoundation                      0x00007fff9215ab97 -[NSTaggedPointerString getCharacters:range:] + 263
    4   CoreFoundation                      0x00007fff920875b6 __CFStringEncodeByteStream + 3638
    5   CoreFoundation                      0x00007fff92062a6b CFStringGetBytes + 795
    6   HIDBootloader                       0x000000010d141620 get_string_property_utf8 + 160
    7   HIDBootloader                       0x000000010d13fcd9 make_path + 73
    8   HIDBootloader                       0x000000010d13f9fb hid_enumerate + 587
    9   HIDBootloader                       0x000000010d13b5c5 _ZN4Comm7PollUSBEv + 37
    10  HIDBootloader                       0x000000010d12c104 _ZN10MainWindowC2EP7QWidget + 3444
    11  HIDBootloader                       0x000000010d12d7fd _ZN10MainWindowC1EP7QWidget + 29
    12  HIDBootloader                       0x000000010d13aa0f main + 223
    13  HIDBootloader                       0x000000010d129984 start + 52
)
2015-10-31 23:44:39.188 HIDBootloader[735:5914] *** Terminating app due to uncaught exception 'NSRangeException', reason: '-[NSTaggedPointerString getCharacters:range:]: Range {0, 32} out of bounds; string length 3'
*** First throw call stack:
(
    0   CoreFoundation                      0x00007fff921b303c __exceptionPreprocess + 172
    1   libobjc.A.dylib                     0x00007fff8937376e objc_exception_throw + 43
    2   CoreFoundation                      0x00007fff921b2eed +[NSException raise:format:] + 205
    3   CoreFoundation                      0x00007fff9215ab97 -[NSTaggedPointerString getCharacters:range:] + 263
    4   CoreFoundation                      0x00007fff920875b6 __CFStringEncodeByteStream + 3638
    5   CoreFoundation                      0x00007fff92062a6b CFStringGetBytes + 795
    6   HIDBootloader                       0x000000010d141620 get_string_property_utf8 + 160
    7   HIDBootloader                       0x000000010d13fcd9 make_path + 73
    8   HIDBootloader                       0x000000010d13f9fb hid_enumerate + 587
    9   HIDBootloader                       0x000000010d13b5c5 _ZN4Comm7PollUSBEv + 37
    10  HIDBootloader                       0x000000010d12c104 _ZN10MainWindowC2EP7QWidget + 3444
    11  HIDBootloader                       0x000000010d12d7fd _ZN10MainWindowC1EP7QWidget + 29
    12  HIDBootloader                       0x000000010d13aa0f main + 223
    13  HIDBootloader                       0x000000010d129984 start + 52
)
libc++abi.dylib: terminating with uncaught exception of type NSException
The program has unexpectedly finished.
/Users/larver/nisse/new-keyboard/firmware/third_party/mla_v2013_12_20/apps/usb/device/bootloaders/utilities/build-HIDBootloader-Desktop_Qt_5_5_1_clang_64bit-Debug/Bootloader/mac/HIDBootloader.app/Contents/MacOS/HIDBootloader crashed

My NISSE's FN-F1 output is:

esrille nisse
rev. 5
ver. 0.17
copyright 2013-2015 esrille inc.
f2 pc
f3 us
f4 roma
f5 d0
f6 c
f7 ms
f8 c-c
f9 off

Document what `__EEPROM_DATA` does in KeyboardCommon.c

Hello this is Linus (recent purchaser of the Nisse keyboard).

I am assuming that the line

__EEPROM_DATA(BASE_QWERTY, KANA_ROMAJI, OS_PC, 1 /* delay */, 0 /* mod */, LED_DEFAULT, IME_MS, 0 /* mouse */);

(found in https://github.com/esrille/new-keyboard/blob/master/firmware/src/KeyboardCommon.c#L34) sets the default initial EEPROM state of the keyboard.

Am I correct?

Could you please document what "delay" and "mod" above means?

I am in the process of writing my own custom layout by modifying the firmware (I am going to modify the unused BASE_COLEMAK layout) and wanted to know more about what this __EEPROM_DATA does.

Thanks.

Automated build

First, I'd like to thank you for the great keyboard and firmware.

The steps to build the project described in the FAQ are very clear, but it would be nice if that process was automated. What do you think?
Since the source code is hosted on a public repository, you can use GitHub Actions or Travis CI for free.

This would allow anyone cloning the repository to build their changes without having to install MPLAB X and XC8, automatically check if every firmware can be built when pushing code or creating a pull request, or automate the release process if you wish so.

I already have a working GitHub Action here for example, which builds firmware versions 1.09 / 0.27 on push and PR on all branches (but can be restricted to master only) and generates a draft release on GitHub with the built firmware files when creating a Git tag. The result is here (see the "Artifacts" tab for the generated firmware files). The generated files are exactly the same as the ones available for download on your website.

__EEPROM_DATA and initKeyboardBase: mode (EEPROM_BASE) is always set to 0

It looks like eeprom_read() always returns 0xff (I researched a bit and this is the default return value if things are not set right). I tried setting

__EEPROM_DATA(BASE_QWERTY, KANA_ROMAJI, OS_PC, 1 /* delay */, 0 /* mod */, LED_DEFAULT, IME_MS, 0 /* mouse */);

to

__EEPROM_DATA(BASE_DVORAK, KANA_ROMAJI, OS_PC, 1 /* delay */, 0 /* mod */, LED_DEFAULT, IME_MS, 0 /* mouse */);

and I get

esrille nisse
rev. 5
ver. 0.17
copyright 2013-2015 esrille inc.
f2 pc
f3 us
f4 roma
f5 d0
f6 c
f7 ms
f8 c-c
f9 off

where f3 us should be f3 us-d. I.e., in KeyboardUS.c, the if block in

    mode = eeprom_read(EEPROM_BASE);
    if (BASE_MAX < mode)
        mode = 0;

is somehow evaluating and setting it back to 0 (BASE_QWERTY).

This is not a serious issue because the FN+F3 command (switchBase()) works fine.

I've actually done a workaround, which is to simply change initKeyboardBase() from

void initKeyboardBase(void)
{
    mode = eeprom_read(EEPROM_BASE);
    if (BASE_MAX < mode)
        mode = 0;
}

to

void initKeyboardBase(void)
{
    mode = BASE_DVORAK;
}

. I'm on Mac, using the newer MLA as stated here #7 (comment) .

I also noticed that we define static uint8_t mode; twice, once in KeyboardUS.c and also in KeyboardJP.c. (I just thought it was weird).

For sanity purposes I did diffs against the various .hex produced files, and they look fine; e.g., the EEPROM data part looks like

... (truncated)
:080000000100000100040000F2
          ^     ^   ^
... (truncated)

where the bits marked ^ correspond neatly to the __EEPROM_DATA macro declaration

__EEPROM_DATA(BASE_DVORAK, KANA_ROMAJI, OS_PC, 1 /* delay */, 0 /* mod */, LED_DEFAULT, IME_MS, 0 /* mouse */);

(BASE_DVORAK is 1, delay is 1, and LED_DEFAULT is 4).

Thoughts?

emitKey() doesn't allow shifted keys (only lowercase keys)

From initial testing, it appears that it is currently not possible to have a key send modifier keys togother with regular keys. For example, I'd like to have a key that sends ~/ (KEY_LEFTSHIFT + KEY_GRAVE_ACCENT, KEY_SLASH) but

emitKey(KEY_LEFTSHIFT)
emitKey(KEY_GRAVE_ACCENT)
emitKey(KEY_SLASH)

does not work. The current default layouts for the vanilla FN layer have some "mini" macros like CTRL+C but it seems to apply the modifier key to all keys (If I put those three keys in an FN layer, then I get ~? instead of ~/).

I think this feature could benefit existing macros like FN-F1 that could really use some SHIFT-layer keys.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.