• Stars
    star
    299
  • Rank 139,269 (Top 3 %)
  • Language Eagle
  • License
    Other
  • Created over 11 years ago
  • Updated almost 9 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Source files and schematics for a very small, 33-key mechanical keyboard

MicroMechBoard

This project is the teensy code for Will Yager's custom mechanical keyboard project. (blog post)

The code serves two functions:

  1. If plugged into USB, the device will act as a stand-alone keyboard with 33 keys. ("The master")
  2. If a second device is plugged into that first device, the two devices will share relevant information over I2C. In this way, two of these devices can be connected to form a 66-key keyboard. With some modification to the firmware and the I2C pull-up resistors, one could theoretically chain up to 129 boards together (I believe).

Building/installing

  1. Install avr-gcc.
  2. Install Teensy loader.
  3. cd src
  4. make
  5. Drag main.hex into Teensy loader.
  6. Program Teensy.

Modifying key layout

  1. Modify keys[] in KeyMapper.cpp.
  2. Replace values like KEY_A with other values from keylayouts.h.

This should be fairly simple to figure out. Within the file, I have keys[] laid out just like the physical keys.

Program structure

main.cpp

       Start USB/I2C
       Determine master/slave status
       
       forever:
              led_status
              => get hardware state from HardwareController
              => debounce buttons with ButtonDebouncer
              => detect changes in buttons with ButtonDeltaDetector
              => map button changes to key changes with KeyMapper
              =: key_changes

              led_status
              => update the slave (if it exists) with the SlaveNotifier
              =: slave_key_changes

              key_changes, slave_key_changes
              => notify the master (over USB or I2C) of key changes with the MasterNotifier
              =: led_status
              

More Repositories

1

Neks

A dead simple networked key/value store
Haskell
115
star
2

LEDStrip

An LED music visualizer
C
74
star
3

Example-Distributed-App

An example distributed systems application in Haskell using Cloud Haskell
Haskell
69
star
4

CPU

CPU Building Tutorial
Haskell
50
star
5

HaSKI

Cλash/Haskell FPGA-based SKI calculus evaluator
Verilog
47
star
6

PythonEyeDetection

Detects eyes, irises, and pupils
Python
42
star
7

vumeter

A nixie tube audio meter
C++
18
star
8

ManyBSTs

Simple Binary Search Trees in a bunch of languages
Elixir
10
star
9

Callsigns

A program that generates available 5-digit callsigns that look like English words
Haskell
10
star
10

metastrip

Utility for stripping image metadata
Haskell
10
star
11

zfs-backup

A simple tool for backing up and rotating ZFS snapshots
Haskell
9
star
12

Lambda16

A 16-bit microprocessor implemented in Cλash/Haskell
Haskell
8
star
13

Bitcoin-HD-wallet-generator

Code for creating BIP0032 HD wallets, as well as deriving public addresses without the private key.
Python
6
star
14

astro

Astrophotography
Jupyter Notebook
5
star
15

HNet

Neural Network
Haskell
5
star
16

hacktx-proveme

A bitcoin proof-of-existence/cryptographic timestamping server for the 2013 HackTX 24 hour hackathon
Python
5
star
17

Lambda17

The successor to Lambda16. Now using multiple functional units.
Haskell
4
star
18

smap

Set and map operations for the command line
Haskell
3
star
19

FastPush

Fast push monad in Haskell
Haskell
2
star
20

Frequencies

Playing around with image compression
Jupyter Notebook
2
star
21

mhacks_messageinabottle_server

Python
2
star
22

TeensyRNG

A USB Random Number Generator based off the Teensy microcontroller platform
C
2
star
23

htmx-haskell-hello

Haskell
1
star
24

SystemNFC

Various LibNFC functions wrapped in C++
C++
1
star
25

NDFSMtoFSM

A Haskell library for converting NDFSMs to FSMs
Haskell
1
star
26

shamir

Simple Shamir's Secret Sharing Scheme
Haskell
1
star
27

BlackHole

Accurately ray tracing a black hole using Haskell
Haskell
1
star
28

dalloc

Messing around with storage
Haskell
1
star
29

Dist

A Haskell library for probability distributions
Haskell
1
star