mkbd65

Mobile 65% keyboard addon for modern smartphones

Features

  • Full qwerty keyboard layout
  • Fully customizable through QMK firmware
  • Uses the phones USB-C port
  • No Bluetooth – No additional battery
  • Very thin footprint
  • Open source firmware
  • Open hardware

Roadmap

Revision 0 (Prototype)

  • Standard qwerty keyboard
  • Slide out mechanism

Revision 1

  • Integrated USB Hub
    • Keyboard can be permanently connected to the phone
    • Charge via additional USB-C port with USB-PD passthrough
    • Get an additional USB-C port to connect other accessories
  • Key frontlight

Future revisions may include

Some of these features are a little insane, what can I do. ¯\_(ツ)_/¯

  • Headphone jack with dedicated sound card connected to the on board USB hub
  • Key backlight
  • Integrated KVM switch
    • Use the keyboard with a connected PC (headless server etc)
    • mkbd65 will advertise itself as a DisplayPort monitor over that USB cable and act as a webcam to the connected phone
    • Display content of the headless unit can then be shown in a dedicated KVM app or a compatible camera app
    • Inside the KVM app, the phones display area can be used as a touchpad/mouse for the headless unit

Layouts

ANSI

0: no mod
╔════╦════╦════╦════╦════╦════╦════╦════╦════╦════╦════╦═════════╗
║ Esc║ 1  ║ 2  ║ 3  ║ 4  ║ 5  ║ 6  ║ 7  ║ 8  ║ 9  ║ 0  ║    ⌫    ║
╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╦════╣
║ q  ║ w  ║ e  ║ r  ║ t  ║ y  ║ u  ║ i  ║ o  ║ p  ║ [  ║ ]  ║ \  ║
╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╩════╣
║ a  ║ s  ║ d  ║ f  ║ g  ║ h  ║ j  ║ k  ║ l  ║ ;  ║ '  ║    ⏎    ║
╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬═════════╣
║ z  ║ x  ║ c  ║ v  ║ b  ║ n  ║ m  ║ ,  ║ .  ║ /  ║ ▲  ║    ⇧    ║
╠════╬════╬════╬════╬════╩════╩════╬════╬════╬════╬════╬════╦════╣
║Ctrl║ Fn ║ ⇧  ║AltG║     Space    ║ -  ║ =  ║ ◀  ║ ▼  ║ ▶  ║Ctrl║
╚════╩════╩════╩════╩══════════════╩════╩════╩════╩════╩════╩════╝
1: mod shift (default keyboard behaviour)
╔════╦════╦════╦════╦════╦════╦════╦════╦════╦════╦════╦═════════╗
║ Esc║ !  ║ @  ║ #  ║ $  ║ %  ║ ^  ║ &  ║ *  ║ (  ║ )  ║    ⌫    ║
╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╦════╣
║ Q  ║ W  ║ E  ║ R  ║ T  ║ Y  ║ U  ║ I  ║ O  ║ P  ║ {  ║ }  ║ |  ║
╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╩════╣
║ A  ║ S  ║ D  ║ F  ║ G  ║ H  ║ J  ║ K  ║ L  ║ :  ║ "  ║    ⏎    ║
╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬═════════╣
║ Z  ║ X  ║ C  ║ V  ║ B  ║ N  ║ M  ║ <  ║ >  ║ ?  ║ ▲  ║░░░░░░░░░║
╠════╬════╬════╬════╬════╩════╩════╬════╬════╬════╬════╬════╦════╣
║Ctrl║ Fn ║░░░░║AltG║     Space    ║ _  ║ +  ║ ◀  ║ ▼  ║ ▶  ║Ctrl║
╚════╩════╩════╩════╩══════════════╩════╩════╩════╩════╩════╩════╝
2: mod AltGr (default keyboard behaviour)
╔════╦════╦════╦════╦════╦════╦════╦════╦════╦════╦════╦═════════╗
║    ║ ¹  ║ ²  ║ ³  ║ ¤  ║ €  ║ ^  ║ ̛  ║ ˛  ║ ‘  ║ ’  ║    ⌫    ║
╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╦════╣
║ ä  ║ å  ║ é  ║ ë  ║ þ  ║ ü  ║ ú  ║ í  ║ ó  ║ ö  ║ «  ║ »  ║ ¬  ║
╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╩════╣
║ á  ║ ß  ║ ð  ║    ║    ║    ║ ï  ║ œ  ║ ø  ║ ¶  ║ ´  ║    ⏎    ║
╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬═════════╣
║ æ  ║ œ  ║ ©  ║ ®  ║    ║ ñ  ║ µ  ║ ç  ║ ˙  ║ ¿  ║ ▲  ║    ⇧    ║
╠════╬════╬════╬════╬════╩════╩════╬════╬════╬════╬════╬════╦════╣
║Ctrl║ Fn ║ ⇧  ║░░░░║     Space    ║ ¥  ║ ×  ║ ◀  ║ ▼  ║ ▶  ║Ctrl║
╚════╩════╩════╩════╩══════════════╩════╩════╩════╩════╩════╩════╝
3: mod fn (adds missing keys)
╔════╦════╦════╦════╦════╦════╦════╦════╦════╦════╦════╦═════════╗
║ Esc║ F1 ║ F2 ║ F3 ║ F4 ║ F5 ║ F6 ║ F7 ║ F8 ║ F9 ║ F10║ Delete  ║
╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╦════╣
║    ║    ║    ║    ║    ║    ║    ║    ║    ║    ║ F11║ F12║    ║
╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╩════╣
║    ║    ║    ║    ║    ║    ║    ║    ║    ║    ║ `  ║ Super   ║
╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬═════════╣
║    ║    ║    ║    ║    ║    ║    ║    ║    ║    ║PgUp║    ⇧    ║
╠════╬════╬════╬════╬════╩════╩════╬════╬════╬════╬════╬════╦════╣
║Ctrl║░░░░║ ⇧  ║AltG║      ↹       ║    ║    ║Pos1║PgDn║ End║Ctrl║
╚════╩════╩════╩════╩══════════════╩════╩════╩════╩════╩════╩════╝

ANSI (big enter)

0: no mod
╔════╦════╦════╦════╦════╦════╦════╦════╦════╦════╦════╦═════════╗
║ Esc║ 1  ║ 2  ║ 3  ║ 4  ║ 5  ║ 6  ║ 7  ║ 8  ║ 9  ║ 0  ║    ⌫    ║
╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╦════╣
║ q  ║ w  ║ e  ║ r  ║ t  ║ y  ║ u  ║ i  ║ o  ║ p  ║ [  ║ ]  ║    ║
╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╣ ⏎  ║
║ a  ║ s  ║ d  ║ f  ║ g  ║ h  ║ j  ║ k  ║ l  ║ ;  ║ '  ║ \  ║    ║
╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╩════╣
║ z  ║ x  ║ c  ║ v  ║ b  ║ n  ║ m  ║ ,  ║ .  ║ /  ║ ▲  ║    ⇧    ║
╠════╬════╬════╬════╬════╩════╩════╬════╬════╬════╬════╬════╦════╣
║Ctrl║ Fn ║ ⇧  ║AltG║     Space    ║ -  ║ =  ║ ◀  ║ ▼  ║ ▶  ║Ctrl║
╚════╩════╩════╩════╩══════════════╩════╩════╩════╩════╩════╩════╝
1: mod shift (default keyboard behaviour)
╔════╦════╦════╦════╦════╦════╦════╦════╦════╦════╦════╦═════════╗
║ Esc║ !  ║ @  ║ #  ║ $  ║ %  ║ ^  ║ &  ║ *  ║ (  ║ )  ║    ⌫    ║
╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╦════╣
║ Q  ║ W  ║ E  ║ R  ║ T  ║ Y  ║ U  ║ I  ║ O  ║ P  ║ {  ║ }  ║    ║
╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╣ ⏎  ║
║ A  ║ S  ║ D  ║ F  ║ G  ║ H  ║ J  ║ K  ║ L  ║ :  ║ "  ║ |  ║    ║
╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╩════╣
║ Z  ║ X  ║ C  ║ V  ║ B  ║ N  ║ M  ║ <  ║ >  ║ ?  ║ ▲  ║░░░░░░░░░║
╠════╬════╬════╬════╬════╩════╩════╬════╬════╬════╬════╬════╦════╣
║Ctrl║ Fn ║░░░░║AltG║     Space    ║ _  ║ +  ║ ◀  ║ ▼  ║ ▶  ║Ctrl║
╚════╩════╩════╩════╩══════════════╩════╩════╩════╩════╩════╩════╝
2: mod AltGr (default keyboard behaviour)
╔════╦════╦════╦════╦════╦════╦════╦════╦════╦════╦════╦═════════╗
║    ║ ¹  ║ ²  ║ ³  ║ ¤  ║ €  ║ ^  ║ ̛  ║ ˛  ║ ‘  ║ ’  ║    ⌫    ║
╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╦════╣
║ ä  ║ å  ║ é  ║ ë  ║ þ  ║ ü  ║ ú  ║ í  ║ ó  ║ ö  ║ «  ║ »  ║    ║
╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╣ ⏎  ║
║ á  ║ ß  ║ ð  ║    ║    ║    ║ ï  ║ œ  ║ ø  ║ ¶  ║ ´  ║ ¬  ║    ║
╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╩════╣
║ æ  ║ œ  ║ ©  ║ ®  ║    ║ ñ  ║ µ  ║ ç  ║ ˙  ║ ¿  ║ ▲  ║    ⇧    ║
╠════╬════╬════╬════╬════╩════╩════╬════╬════╬════╬════╬════╦════╣
║Ctrl║ Fn ║ ⇧  ║░░░░║     Space    ║ ¥  ║ ×  ║ ◀  ║ ▼  ║ ▶  ║Ctrl║
╚════╩════╩════╩════╩══════════════╩════╩════╩════╩════╩════╩════╝
3: mod fn (adds missing keys)
╔════╦════╦════╦════╦════╦════╦════╦════╦════╦════╦════╦═════════╗
║ Esc║ F1 ║ F2 ║ F3 ║ F4 ║ F5 ║ F6 ║ F7 ║ F8 ║ F9 ║ F10║ Delete  ║
╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╦════╣
║    ║    ║    ║    ║    ║    ║    ║    ║    ║    ║ F11║ F12║    ║
╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╣Supr║
║    ║    ║    ║    ║    ║    ║    ║    ║    ║    ║ `  ║    ║    ║
╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╩════╣
║    ║    ║    ║    ║    ║    ║    ║    ║    ║    ║PgUp║    ⇧    ║
╠════╬════╬════╬════╬════╩════╩════╬════╬════╬════╬════╬════╦════╣
║Ctrl║░░░░║ ⇧  ║AltG║      ↹       ║    ║    ║Pos1║PgDn║ End║Ctrl║
╚════╩════╩════╩════╩══════════════╩════╩════╩════╩════╩════╩════╝

Tips

  • Hold left thumb on Fn and right thumb on ⏎ to press Super
  • Get ` key by pressing Fn with left thumb and ' with right thumb
  • Get ~ key by pressing Fn+Shift with left thumb and ' with right thumb
  • Since Android doesn't really use the Alt key, the Alt key on this keyboard is actually an AltGr key to give you the € and german umlauts in the English (US) international layout
  • The keyboard uses the Esc-Grave option from QMK to combine the Esc and `~ keys, so sorry french typists but:
    • Pressing AltGr+Fn+' is the only way to get ` and combine it with the next char
    • Pressing AltGr+Shift+Fn+' is the only way to get ~ and combine it with the next char

Hardware

mkbd65 has the USB Vendor ID 1209 and Product ID 4803. You can find it here.

The PCB is made with KiCAD. You can download the files here.

It costs about 20€ to produce the PCB in a fab like JLCPCB. The full BOM can be found here.

Case

Imagine some nice pictures of colorful 3D prints here!

Compatible phones

The PCB is compatible with any phone that has a USB-C port. The CAD files for the case are generated from configuration files and can be adapted to most phones. The limiting factor is mostly the shape of the camera bump.

Currently only these models are officially supported:

You want your phone on this list? Open an issue here and use the "New phone" template.