Building a custom keyboard from the ground up

User avatar
matt3o
-[°_°]-

11 May 2013, 16:27

Building a custom keyboard from the ground up for noobs (by a noob)

Sorry guys, this is going to be more chat than practice, but we have to start from the foundation.

In the coming months I'm planning to build two keyboards: the Whitefox (ALPS, white + alu, blue LED, pretty standard 60% layout) and the Brownfox (MX, brown + alu, amber LED, 65%). I'll work on them in parallel to reduce expenses, the idea is to post the whole process on the forum so anyone can follow.

How much is a custom keyboard going to cost?
The short answer is: a lot.

Apart from the bare material costs, you are going to make some mistakes, and each mistake is going to cost (eg: burn your Teensy and it's another €20).

You have to take this like a hobby. You are spending money not just for the finished product, but for the whole process. Actually, the building phase is much more fun than the final product.

A rough estimate might be €200, but not all in one shot, the whole process will take probably a couple of months. That would be €25 per week, which is pretty reasonable.

Feasibility
Every keyboard starts with a dream. Dreams have the bad habit of colliding with reality.

Let's say you want a Poker-like layout but with Alps switches, or an HHKB with Cherry, or a 75% layout, or a completely original layout. Make yourself the following questions:

1. Can I find all the keycaps I need?
2. Can I find the switches?
3. Can I build a case for it?

Keycaps
If you want to build an Alps based keyboard, remember that keycaps can be sourced from other keyboards only (you can't buy a new set of Alps keycaps). Also you have to be creative with stabilizers.

If you are after a custom layout instead, be sure to be able to find all the oddly sized spacebars and modifiers even if you plan on using MX switches. Round 4 and recently DSA Retro may come to a rescue... If you were smart enough to pick the modifier kits.

It's completely worthless to design the Definitive Custom Keyboard™ if you can't source the keycaps.

Especially if this is your first custom keyboard, try to stay grounded, look around what keycaps you can find and start from there.

Remember that DCS family keycaps (the most common nowadays) have a different shape for each row. You cannot put Q in place of M or Control in place of Escape (well, technically you can, but it would be a shit to type on).

DSA family instead is the custom keyboard builder paradise. All keys are on the same profile and you can mix and match them in any way.

My two projects will be one with Alps and one with MX so you should find plenty of inspiration whatever your keyboard will be.

If unsure, post your design on the forum and ask for help/feasibility to the other members.

Switches
As of this writing MX switches are hard to find. They will be available again next fall but you can always desolder them from an old keyboard.

Alps can be sourced from 7bit or directly from Matias ( http://www.matias.ca ), or -again- you can dismantle an old keyboard.

The case
This is tricky. You have two options: build your own from scratch or use the case of another keyboard.

We are going to hand wiring all the switches (in a bit I'll tell you why this is better than PCB), so we need enough real estate inside the case to comfortably fit all the components.

To my experience the bare minimum height needed for wires, teensy and USB port/cable is 10mm. This would be the total available hollow space inside the case from the plate bottom to the base top, not the total case height.

The part of an MX switch inside the case measures 5mm + 3.3mm for the pins. The switch sticks inside the plate by 1.5mm so the clearance needed by the switch alone is 5 + 3.3 – 1.5 = 6.8mm.

Code: Select all

        _
     __|_|__
    /       \
+-------------------+
|                   | 1.5mm Plate
+-------------------+
|   |       |       |
|   \_______/       | 3.5mm Switch bottom w/o pins
|     |   |         |
|     |   |         | 3.3mm pins
|                   |
|                   | 3.2mm Clearance
+-------------------+
With a 10mm height we would have just 3.2mm to fit all the cables, diodes and controller (a Teensy 2 is approx 6mm height, but we have enough clearance under the spacebar... if you have a 6u spacebar at least).

My Steely ( http://deskthority.net/workshop-f7/cust ... t5663.html ) is 13mm height total (10mm in the inside), it works but I would suggest to make the case at least 15mm (12mm inside).

The easiest (and cheapest) way to build a custom case is with laser cut layers of acrylics (aluminum or steel). The case is built up by a series of layers like a sandwich. You can see what I'm talking about from the picture below

Image

Courtesy of http://deskthority.net/workshop-f7/spli ... 3-510.html

You can also reuse the case of another keyboard, old ones are pretty bulky (look at the Apple M0110 for example) and have lots of space, the problem is that they rarely meet your desired layout.

For my project I'm going to have two “sandwich” cases and I'll bring you from CAD design to production.

Hand wiring
A PCB has its own benefits: soldering is a snap, you don't have to worry about shorts, and the overall height of the case can be contained.

Cons of a PCB is that you have to design it of course, the prototyping phase is long and expensive. You also need a good electronics know-how (which I don't have). Production of small quantities of 300x100mm PCB is quite costly. But most notably if something goes wrong during the assembly and you need to replace one single switch, you have to desolder the whole PCB! And believe me... something is going to go wrong!

The only drawback of wires is that you have to take extra care during the soldering phase to avoid shorts (and of course the inside of your case will look less pro).

What you need to get started
This is not a component list, just the bare minimum to get started.

First of all some softwares, fortunately they are all free.

For quick layout design I suggest Inkscape http://inkscape.org/, but you could use Illustrator or even Photoshop (or Gimp), but I'd suggest to use a vector graphics software.

A CAD software like DraftSight http://www.3ds.com/products/draftsight/ ... -software/ . This is for the plate and case design.

Hardware-wise you need a soldering iron. Don't spend a fortune on it. I use a €10 15w soldering iron that works like a charm. Take it with a small tip. That's all you need. If you plan to make a lot of soldering invest in a soldering station, but it's not required. I also use a bit of steel wool to clean the tip once in a while. Soldering paste is a plus but I don't find it a requisite. Of course you need soldering wire, leaded or lead-free. The leaded one easier to use. 1mm thickness is good enough. I find the 0.5mm too thin.

Enough diodes to cover your keyboard (1 per switch). It seems the 1N4148 diodes are widely recognized as the right ones for the task. I always used them and they work fine. Remember to take some spares.

The controller. There are many alternatives here but at the end the Teensy 2 seems the best for small matrix keyboards. You may take the Teensy 2++ if you need more pins. Count the number of columns and rows in your keyboard and add one for a LED. That is the number of pins your controller needs. I recently purchased a Teensy 3, it's a really nice piece of hardware and it's slightly thinner than Teensy 2, I still don't know if we have all the required libraries to have it working as a keyboard controller, though.

Of course you need some electric wires to make the connections and maybe some male headers to connect to the Teensy. I'll post a more detailed list of components with direct links to online stores in the next posts.

Keyboard design
Okay, time to get your hands dirty.

Image

I've redacted here for you an SVG template you can use to design your keyboard. I set up a Poker keyboard as a test but you can play with it and make any design.

You'll notice a complex grid in the template. That should help you aligning the keys correctly. Zoom in to move the keys otherwise they won't snap correctly. The blue grid represents the key units. The space between 2 vertical lines is 1/4 of unit. 4 vertical blue lines is 1 unit, 5 lines is 1.25, 6 lines is 1.50 and so on. The red dots help you to space the keys. The space between two keys is always the distance of 4 dots.

Next time I'll try to post an Inkscape tutorial.

This post has become pretty long and I don't want to overflow. If there will be enough interest I'll keep posting on this topic. Also please consider I'm not a guru in any of the discussed topics. I hope more experienced people could add their bits.

User avatar
Muirium
µ

11 May 2013, 16:57

Thanks matt3o. Your expertise is more impressive than you think, judged where it matters: by the results.
Image
Great first instalment. Really looking forward to the down and dirty details!

Zifle

11 May 2013, 17:26

Really great post, could have used that a week ago, before I started my design ;)

I'll have to disagree slightly, about your suggestion to the spacing from plate to bottom. Before replying, do keep in mind that my point of view is concerning sloped cases, where I can definitely see the extra space coming to use in a flat case.
Regardless, I believe <2mm should be enough (perhaps even plenty) below the pins of the switches, if you solder diodes closer to the switch housing, and thence can keep the other wire perhaps as close as elevated along the pin tips. Again, I am assuming that there be plenty of room for the teensy in the back, and I have no practical experience here, only the measurements I vaguely took.

I also found this link quite useful, for a better understanding of how keyboard matrices work.
On this topic, I assume it is commonly accepted as the better practice to drive the rows, rather than the columns, due to lesser numbers.

User avatar
matt3o
-[°_°]-

11 May 2013, 18:05

if you have space on the back for the teensy, everything is definitely easier, but I'm going to have a flat case, so I have to be extremely careful. Consider that if you don't have space on the top, the teensy resides below the spacebar and you have to drive the USB cable from the back of the case to the teensy USB. The USB port + cable + cable-holder take quite some space.

With very accurate soldering you can probably spare 1mm, but I'm a noob and my experience as such is that 3.2mm is barely enough to fit everything. Also consider that soldering too close to the switch is more dangerous if you are not skilled. I would rather be safe than sorry :)

TD22057

11 May 2013, 20:44

Thanks matt3o - that's a lot of great stuff. And very timely for me - I'm just starting to build by first keyboard. I've been using DraftSight to prototype plate designs using some sample files from users on geekhack and it works great. I have a DWG file that contains the plate cutouts and switch outlines for the various switch sizes that I could post if anyone is interested. It makes it very easy to try out different plate designs.

I don't think you can overstate the keycap problem for a custom layout. I'm trying to make a custom, split hand, matrix style layout similar to the Truly Ergonomic and finding a nice set of keycaps seems to be the biggest problem I'm having.

It will be interesting to watch your build go forward...

User avatar
photekq
Cherry Picker

11 May 2013, 20:56

Very nice guide matt3o. Thanks for doing this.

Findecanor

11 May 2013, 23:41

TD22057 wrote:I have a DWG file that contains the plate cutouts and switch outlines for the various switch sizes that I could post if anyone is interested. It makes it very easy to try out different plate designs.
I was thinking of doing the same for this thread. There are some things to look out for, that a good "plate clip-art library" should have correct. For instance, there is a small bug in the Phantom's stabilizer mount holes that makes it impossible to open a stabilized switch without desoldering - and this error has been copied into several plate designs that I have seen on Geekhack.

Another thing to look out for with the Phantom plate is that some switch holes were deliberately made a bit wider than one switch to allow for different positions on the PCB for different types of keys caps, for instance Ctrl keys with centred or offset stem. The problem is that the switch will not be stabilized sideways -- it will slide left and right, and stress your wiring. If you do direct wiring under an existing plate, then you need to fill those gaps to the side of the switch.

User avatar
matt3o
-[°_°]-

11 May 2013, 23:54

Findecanor wrote:Another thing to look out for with the Phantom plate is that some switch holes were deliberately made a bit wider than one switch to allow for different positions on the PCB for different types of keys caps, for instance Ctrl keys with centred or offset stem. The problem is that the switch will not be stabilized sideways -- it will slide left and right, and stress your wiring. If you do direct wiring under an existing plate, then you need to fill those gaps to the side of the switch.
definitely, if you go hardwire the holes must be perfect fit. I actually even removed the small dents to be able to open a switch.

TD22057

12 May 2013, 00:45

Attached is my plate template file. I added dimensions to the single holes and the stabilizer holes - take a look and correct anything you see is wrong. The single holes are originally from user jdcarpe and modified by me to be at the cherry dimension. I believe the stabilizer holes came from a phantom plate file so those should be checked. I wasn't planning on a traditional space bar in my design so someone should definitely add several examples of those as well.
plate template.png
plate template.png (29.08 KiB) Viewed 253360 times
Attachments
plate template.zip
Template
(61.59 KiB) Downloaded 2182 times

User avatar
Muirium
µ

12 May 2013, 01:11

This seems a simple question, so I bet it's not! What sizes of keys are the easiest to find?

I get that 1.0, 1.25 etc. up to 2.75 units are available. (All by 1.0 units – I'm talking about the usual rectangles here, ANSI style.) But what are most common? Say, for simplicity, that I'm going DSA so I don't have to be careful about rows. Although other first timers may well need that info. I'm also keen on blank caps all round, anyway, which is another move towards keeping things easy.

The Poker layout Matteo created is 15 units wide. Seems sensible to think inside those dimensions so I can have my choice of Poker / Pure case for my first build. But it's the bottom row I'm looking at.

I'd like to keep it consistent with the Mac keyboards I'm used to. They have four modifiers to the left of the spacebar. They are 1.0, 1.0, 1.0 and 1.25 units wide. Even on my desktop keyboard. Then the spacebar – even on my ten year old PowerBook – is 5.0 units across, lining up under CVBNM precisely.

Are 5.0 unit spacebars a problem? It's not vital, but this is the part of the process for identifying what's a wise direction and what isn't.

Besides that, I'm thinking of a lot of square modifier keys as I'm already used to them and they allow me more space for cunning plans!

User avatar
matt3o
-[°_°]-

12 May 2013, 10:05

Thanks TD22057 for the DWG, I'll review it and add my notes. I actually use a template created from scratch in millimeters. Everyone was telling me that the standard units are inches, but it turned out that it totally works in mm and the local laser cutting services are definitely happier if I use a sane metric :P
Muirium wrote:This seems a simple question, so I bet it's not! What sizes of keys are the easiest to find?
No it's not easy at all :) I myself needed quite some time before understanding all this key units madness.

Let's start from the spacebar.

In DSA family you can find 6, 6.25 and 7 units. But as far as I know only DSA retro has all this variety, so you are pretty much limited to that set.

DCS has all spacebars from 4.5 to 10.5 units (5 included), but anything that is not 6.25 or 7 is very hard to find. Maybe you can source them from some keyboard (maybe an old Apple keyboard that you can dremel to change the stems).

In DCS family the keys in the spacebar row are angled by 16deg and can be found from 1 up to 3 units. 1 units are not hard to find since they are often used in winkeyless or tsangan variants, but I doubt you could find the right legends for them.

This might be a DCS feasible Poker-like Mac-friendly version (with standard 6.25u spacebar).
mac.png
mac.png (16.94 KiB) Viewed 253267 times
You are going to use FN a lot in a 60% so I made the left FN a little bigger.

If you got DSA Retro you have more freedom, we had mods in all sizes and flavors and you could use a 6units space and have symmetrical mods (the right FN could be 1.25 too).

But maybe if you want to build a Mac keyboard now you could find an Apple Extendend Keyboard II (or similar) for the caps and build a custom ALPS keyboard. It does not have 1u modifiers though.

User avatar
Muirium
µ

12 May 2013, 12:03

I like your suggested layout, Matteo. I'm thinking of an HHKB position for backspace, too. And I'm trying to work out Fn layer options for the arrow keys. The appeal to going custom is all in the layers!

As for 5u spacebar: it's nothing set in stone. This is the right stage for finding out what the sensible constraints are.

Here's an interesting point: most keyboards with a function key don't pass its state along to the computer, I presume? (Instead it's used by the controller to decide on what layer to use when picking the appropriate key?) On the Mac, Fn is like Shift, Command, Option and Escape: it shows up on the keyboard viewer and you're free to use it in keyboard shortcuts. Hitting Fn twice triggers speech recognition for instance.

I may need my own layer select key in addition to Fn. I'm fine with that. Indeed, I'd put it on the far end of right shift like the HHKB. Layers layers layers!

User avatar
Muirium
µ

12 May 2013, 12:23

matt3o wrote:If you got DSA Retro you have more freedom, we had mods in all sizes and flavors and you could use a 6units space and have symmetrical mods (the right FN could be 1.25 too).

But maybe if you want to build a Mac keyboard now you could find an Apple Extendend Keyboard II (or similar) for the caps and build a custom ALPS keyboard. It does not have 1u modifiers though.
DSA Retro sounds great. You're using the past tense though, so I wonder if and when it'll be available again.

I'm thinking blank caps – which I prefer anyway – with maybe two colours across the keyboard to help me navigate, but without being too specific, so I can keep tinkering and find my perfection.

I got into Macs 10 years ago, so the AEK II etc. are almost as strange to me as a completely generic keyboard layout. Seems Apple changed its keyboard design (introducing Fn and brightness keys among others) right around then as my PowerBook has pretty much the same layout as all Macs since.
Image
My first. And it still works. Which is odd, because its keys feel so familiar. Half height arrows and f-keys are my first thing to fix.

User avatar
matt3o
-[°_°]-

12 May 2013, 12:39

You should be able to grab a DSA Retro in the near future, but unfortunately you can't make a 100% blank keyboard with it.

If you go MX and DCS you can easily find blank PBT sets, but you'll probably need to grab two if you want to move some of the keys around.

The following will be the Brownfox if anyone cares :) I'm not yet sure about some of the mods, but it's 90% final.
brownfox.png
brownfox.png (20.81 KiB) Viewed 253247 times
Most notably note the left FN position (in lieu of the caps lock). The two blanks to the right are to be defined yet. Probably vol up/down.

I find the FN position in mac keyboards very good but the control is awful. You have to bend your thumb too much to reach it (I am a long time mac user too, but I'm gradually converting to linux in recent years).

User avatar
matt3o
-[°_°]-

12 May 2013, 12:57

The following should be feasible with DCS. You need 1 set of blanks + some spares.
muirium.png
muirium.png (8.41 KiB) Viewed 253236 times

User avatar
Muirium
µ

12 May 2013, 13:02

Symmetry is its own reward!

Yeah, Control really is an afterthought on the Mac (as Command has its real powers like Command+C = copy etc.) but I do find the abundance of modifiers extra handy for defining my own shortcuts. Ctrl+Command+letter, for instance, is all but guaranteed to be free for the whole alphabet. Unless you're running something from Bare Bones that is. Then I throw in Option too.

Ctrl+Cmd+Opt+V is my system-wide combo for Jumpcut, my multiple-clipboard. Immensely addictive, never having to juggle with what's copied. Just grab things and figure out what to do with them when you're ready.

As for blanks, there is another way of getting them…

User avatar
matt3o
-[°_°]-

12 May 2013, 13:17

Muirium wrote:As for blanks, there is another way of getting them…
well... not worth the effort imho when you can find nice sets ready to be used... unless you already have the keys of course and you just need to dye sub them.

Your problem is that you need two 1.5u in the second row. So you probably need to buy two sets just for that. Also you need two additional 1u in the first row.

User avatar
Muirium
µ

12 May 2013, 13:26

It's early days. DSA's low profile appeals to me (it's even spherical!?) so how about I work within that constraint.

So, what's the full list of DSA retro widths and quantities per "pack"? I've zero caps right now and designing around what I can buy nice and new sounds good.

User avatar
matt3o
-[°_°]-

12 May 2013, 13:38

Here you can find the list of all keys is DSA Retro http://deskthority.net/marketplace-f11/ ... t5148.html (kit 10 and 11 did not reach the MOQ)

There's more than meets the eye! :)

User avatar
matt3o
-[°_°]-

12 May 2013, 15:15

I made some research regarding the FN key on the mac. It seems xev does not register the function key on Mac, so it must be handled in some other way (acpi maybe? dunno).

TD22057

12 May 2013, 16:42

matt3o wrote:Thanks TD22057 for the DWG, I'll review it and add my notes. I actually use a template created from scratch in millimeters. Everyone was telling me that the standard units are inches, but it turned out that it totally works in mm and the local laser cutting services are definitely happier if I use a sane metric :P
Thanks Matteo. I would think any decent program can switch between the two. Since the specs were in English units, that's what I used. As long as we can get a template file with cutouts that we know works, I'm happy. I'm mostly concerned with the kerf (width) of the laser screwing up the tolerances on the holes (of course I have no experience w/ laser cutters so maybe this isn't a problem).

Wow - looking through the DSA retro group buy, it seems like that might have been my best bet for getting a good set of keycaps for my design (the 1.5 modifier sets really make the difference for me) and those were some great prices. I feel sorry for who ever had to pack and ship all those sets out...

FYI - I've posted a question on geekhack for WASDKeyboards to see if they will laser etch blank keys from signature plastics that I send them. Since you can buy blanks in DCS, DSA, and SA profiles, ABS or PBT plastic, and a huge number of colors directly from SA (Inventory), that might be a way to get really custom keycaps made. It would still cost more than a group buy, but you could get the exact colors, styles, and legends you want and it would be a lot cheaper than asking SA to do a small run.

User avatar
matt3o
-[°_°]-

12 May 2013, 17:01

TD22057 wrote:I'm mostly concerned with the kerf (width) of the laser screwing up the tolerances on the holes (of course I have no experience w/ laser cutters so maybe this isn't a problem).
I've already worked with steel and I had no issues with "kerf". Switch holes have a 0.2mm tolerance to say the least.
TD22057 wrote:FYI - I've posted a question on geekhack for WASDKeyboards to see if they will laser etch blank keys from signature plastics that I send them. Since you can buy blanks in DCS, DSA, and SA profiles, ABS or PBT plastic, and a huge number of colors directly from SA (Inventory), that might be a way to get really custom keycaps made. It would still cost more than a group buy, but you could get the exact colors, styles, and legends you want and it would be a lot cheaper than asking SA to do a small run.
I know for sure that if you bring them the keycaps they laser etch them for you (a friend did it). At least in DCS family, I don't know if they can do the same for DSA and SA. Unfortunately SP not always has all the keycaps in all units and colors needed for a complete set.

User avatar
Muirium
µ

12 May 2013, 23:06

Right, here's my current thinking. I went with the Poker / Pure / Poker II layout and simply remapped the keys to see what I could do. Thinking inside the box! Practically everything I want from a compact keyboard actually fits.

I just cobbled this up in OmniGraffle as I'm used to using it. The 0.25 unit grid is visible in the background. And, yes, I spent some quality time in Unicode to dig up all those symbols for the keys…
Poker II Custom Mac.png
Poker II Custom Mac.png (113.34 KiB) Viewed 253095 times
The colours indicate modifiers versus ordinary keys, and whether f(x) is pressed.

Some notes:

Two different function keys!? WTF?

Yeah. I probably need a better name for that. I want to keep the standard fn key for shortcuts that I'm used to and for occasionally accessing the entire F1-F12 row. OS X can see it separately. My function layer, meanwhile, needs a separate key. That's f(x) in the bottom right corner. For now.

Why all those arrows?

I like the HHKB. Its function layer seems smart so I borrowed it for cursor control. And then I duped it on the left side, but mapped around ESDF instead. Why? Because there's plenty of room. I think letting both hands have full arrow key / home, end / page up, down control within reach is pretty nifty. At least I'd like to try it.

Where's your function key row?

Behind fn as usual. I'm used to screen brightness / volume controls etc. on the top row of the keyboard by default, then accessing the actual f-keys via fn anyways. Honestly, I use them so rarely a double modifier is all they deserve.

Crazy symbols, dude.

Yeah, I know, I probably overdid all that. Looks better to my eye than a tiny font spelling out Page Down etc. but you can easily see where I failed on 3 and 4 (meant to be Exposé and Dashboard) and the volume controls (couldn't find the Unicode glyphs for various speakers).

Anyways, I'm sure I've overlooked something entirely obvious in all my newbishness. Spot it?

User avatar
Muirium
µ

13 May 2013, 00:02

Here's the HHKB by the same process.
HHKB.png
HHKB.png (121.55 KiB) Viewed 253079 times
That's a 6.0 unit spacebar, if I haven't made any mistakes.

I've included the layout files on the off-chance that anyone else here uses OmniGraffle.
Poker & HHKB.zip
(129.43 KiB) Downloaded 920 times
There's a sensible version in there of the Poker with text labels for all the keys instead of those Unicode symbols, from right before I delved into them. Pity that VAG Rounded looks a touch like Comic Sans in lowercase!
Poker II ANSI Layout.png
Poker II ANSI Layout.png (52.95 KiB) Viewed 253079 times
(It all makes sense now…)

User avatar
matt3o
-[°_°]-

13 May 2013, 00:17

Great work Muirium. thanks for sharing your source.

I use the arrows so much and together with shift and control that I can't really have them in the FN layer, but I see a lot of love for 60% layout so it must be just me.

Apart from that I'd just revisit the 2u \| key of your modified poker layout. That's really a huge key.

User avatar
Muirium
µ

13 May 2013, 00:23

Yes, it is. The first two physical changes I'd make are those already taken by the HHKB.

1. Split that top right 2u key into a pair of 1u.
2. Stick another 1u key at the right end of right shift. I'll come up with a use for it sooner or later…

Staying within the Poker's constraints really helped me get to my first draft of a layout. Sometimes less is more.

User avatar
gotbadger

13 May 2013, 14:25

Thanks matt3o this post really inspired me to get started on my keypad project. :D

User avatar
ماء

14 May 2013, 10:21

good mat33o :mrgreen:

but how to connect a cable to each switch :cry:
Do you have a picture
Last edited by ماء on 14 May 2013, 11:29, edited 1 time in total.

User avatar
matt3o
-[°_°]-

14 May 2013, 10:24

ماء wrote:good mat33o :mrgreen:

but how to connect a cable to each switnya :cry:
Do you have a picture
that would be the next step

User avatar
ماء

14 May 2013, 11:31

I'm waiting :)

Post Reply

Return to “Workshop”