Update for SEND_STRING usage.
Sending keyboard reports (kbd, nkro) now obey the minimum polling time.
While attempting to send a keyboard report and waiting for a USB poll, other functions of the keyboard, including LED effects and power management, will continue to operate at their intended intervals.
* Updates for send string, syscalls, stdio, debug prints, auto shift
Now properly waiting for previous keys sent over USB to complete before sending new.
Added heap to linker and now compiling with syscalls support.
Removed custom string functions and now using stdio.
dprintf now works as intended through virtser device.
* CTRL and ALT keymap updates
CTRL mac keymap updated
ALT default and mac keymap updated
ALT rules.mk added Auto Shift with default no
- else if (*_Format == SSF_SPEC_STRING) //If the specifier type is string
- {
- char *value=va_arg(va,char*); //User given destination address, max chars read pointer
- while (*_Src == SSF_SKIP_SPACE) _Src++; //Forward through the whitespace to next non whitespace
- while (*_Src != SSF_SKIP_SPACE && *_Src) *value++ = *_Src++; //While any character but space and not end of string and not end location, copy char to dest
- *value = 0; //Cap off the string pointer with zero
- conv_count++; //Increment the converted count
- }
- else if (*_Format == SSF_SPEC_VERSION) //If the specifier type is string
- {
- char *value=va_arg(va,char*); //User given destination address, max chars read pointer
- while (*_Src == SSF_SKIP_SPACE) _Src++; //Forward through the whitespace to next non whitespace
- while (*_Src != SSF_DELIM_COMMA && *_Src) *value++ = *_Src++; //While any character but space and not end of string and not end location, copy char to dest
- *value = 0; //Cap off the string pointer with zero
- conv_count++; //Increment the converted count
- }
- else if (*_Format >= ASCII_NUM_START && *_Format <= ASCII_NUM_END)
- {
- uint32_t len = (uint32_t)ssf_ston(&_Format,3,NULL); //Convert the given length
- if (*_Format == SSF_SPEC_STRING) //If the specifier type is string
- {
- char *value=va_arg(va,char*),*e; //User given destination address, max chars read pointer
- while (*_Src == SSF_SKIP_SPACE) _Src++; //Forward through the whitespace to next non whitespace
- e = (char*)_Src+len; //Set a maximum length pointer location
- while (*_Src != SSF_SKIP_SPACE && *_Src && _Src != e) *value++ = *_Src++; //While any character but space and not end of string and not end location, copy char to dest
- *value = 0; //Cap off the string pointer with zero
- conv_count++; //Increment the converted count
- }
- else if (*_Format == SSF_SPEC_VERSION) //If the specifier type is string
- {
- char *value=va_arg(va,char*),*e; //User given destination address, max chars read pointer
- while (*_Src == SSF_SKIP_SPACE) _Src++; //Forward through the whitespace to next non whitespace
- e = (char*)_Src+len; //Set a maximum length pointer location
- while (*_Src != SSF_DELIM_COMMA && *_Src && _Src != e) *value++ = *_Src++; //While any character but space and not end of string and not end location, copy char to dest
- *value = 0; //Cap off the string pointer with zero
- conv_count++; //Increment the converted count
- }
- }
- else if (*_Format == SSF_SPEC_START) looking_for = *_Format; //If another start specifier character is found, output a specifier character
- else break; //Scan is now invalid (Uknown type specified)
- }
- else if (*_Format == SSF_SKIP_SPACE) { } //If a space is found, ignore it
- else looking_for = *_Format; //If any other character is found, it is static and should be found in src as well
- _Format++; //Skip over current format character
- }
-
- va_end(va); //End the variable argument list
- return conv_count; //Return the number of conversions made