https://www.garrettkrohn.com/posts/keyboard-customization-part-1/