====== Creating Your Own Chordset for the Spiffchorder ======
* [[#Layout or How many Thumbs]]?
* [[#Code Considerations]]
* [[#The Format of the .h file]]
* [[#Building the Cross Compiler]]
* [[#Programming the AVR the First Time]]
* [[#Programming the AVR over USB]]
===== Layout or How Many Thumbs?=====
===== Code Considerations =====
* [[#3 modes available]]
* [[#keycodes.h]]
* [[#Planning]]
==== 3 modes available ====
==== keycodes.h ====
The {{spiffchorder:keycodes.h|keycodes.h}} file contains the names you will assign to your chords.
Unless you want to rewright some of the code (which you are more than welcome to do) you are restrictied to these key codes. They are the usb keyboard key codes, the codes for the spiffchorder mode manipulation and some special codes that are translated by the program into a sequence of usb key codes. There are a few kinds of lines in keycodes.h, any section beginning with slash asterik ''/*'' is a comment section up through the ''*/''. Anything following 2 slashes ''%%//%%'' is a comment from there through the end of that line. Other than comments, there are several types of lines you need to know about:
* ''KEY'' lines like ''KEY_G'' define standard USB key codes
* ''MOD'' lines like ''MOD_RALT'' define and manipulate the keyboard modifiers.
* ''MODE'' lines like ''MODE_FUNC'' define and manipulate the Spiffchorde mode state.
* ''SPC'' lines like ''SPC_quote'' define special keys that generate multiple USB codes.
There are a few others as well but these are defined in the comments of keycode.h should you need them.
KEY_F,
KEY_G,
KEY_H,
KEY_I,
KEY_J,
KEY_K,
And further down you will see lines like this:
MOD_LSHIFT, // 0x02
MOD_LALT, // 0x04
SPC_dollar, // $
SPC_percent, // %
SPC_ampersand, // &
==== Planning ====
===== The Format of the .h file =====
An empty chord file is provided as {{spiffchorder:empty.h|empty.h}}. You can use it as a template for your custom chorder.
===== Building the Cross Compiler =====
* [[#Windows Cross Compiler]]
* [[#Linux Cross Compiler]]
==== Windows Cross Compiler ====
For compiling the SpiffChorder firmware under Microsoft Windows, the easiest solution is to use [[http://winavr.sourceforge.net/|WinAVR]]. This package contains the avr-gcc tool-chain, avr-libc and some other utilities, including the avrdude programming software and Programmers Notepad, all compiled into a single Windows installation package.
The majority of the development on the SpiffChorder was done with WinAVR, and using the Programmers Notepad editor. It worked for me, so it should work for you as well (provided you have a Windows installation).
==== Linux Cross Compiler ====
AVR-GCC,
Under Xubuntu 7.10 (which is what I run) I installed avr-libc, binutils-avr and gcc-avr from the ubuntu repositories using apt-get (or synaptic).
===== Programming the AVR the First Time =====
[[http://www.fischl.de/avrusbboot/]]
===== Programming the AVR over USB =====
[[http://www.fischl.de/avrusbboot/]]