Emoji Keyboard




About: Build.Share.Destroy.Repeat. Follow me and try a few of my projects for yourself!

Sometimes words aren't enough when composing correspondence on your computer and you need something a little more colorful to convey your message, enter the emoji!

Emojis are small graphical icons that convey a feeling or idea, and there are hundreds of them. While emojis are commonplace in phone messaging, usually built into the digital keyboard on your smartphone, they are much less common when at your desktop or laptop computer as there isn't an easy interface to add emojis into your messages. This project is going to solve that with a programmable emoji keyboard, built for less than $10.

But, why stop at emojis? There are plenty of other graphical symbols that also convey a feeling, like shruggy ¯\_(ツ)_/¯, a $5 bill [̲̅$̲̅(̲̅5̲̅)̲̅$̲̅], and my personal favorite of a disapproving glare ಠ_ಠ. I'll show you how to add all of these into and easy to make keyboard so you can hammer our your favorite emojis into any text field on your computer.

Ready, let's make!
(╯°□°)╯︵ ┻━┻

Step 1: Supplies

Sure, they sell a commercial emoji keyboard for $100 that you could buy. However, that's a lot of money for a novelty, and doesn't allow you to use your own custom emojis. Also, I don't think they sell them anymore.

Here's what I used to make mine:

If you rummage around e-waste bins you might even find a keypad for free. Try universities or makerspaces for free discarded electronics.

Step 2: Remapping Number Pad

To get the numeric keypad to show emojis instead of number the keys need to be remapped. To do this I used AutoHotKey: https://autohotkey.com, a free and lightweight program that does this perfectly.

In order for AutoHotKey to know what to do there needs to be a script. Luckily, this is incredibly simple and can be modified to meet your emoji needs.

Start a new Notepad file, then copy and paste the code below:

; Emoji numeric keyboard mapping 

Numpad1::Send EMOJI
Numpad2::Send EMOJI
Numpad3::Send EMOJI
Numpad4::Send EMOJI
Numpad5::Send EMOJI
Numpad6::Send EMOJI
Numpad7::Send EMOJI
Numpad8::Send EMOJI
Numpad9::Send EMOJI
Numpad0::Send EMOJI
NumpadDot::Send EMOJI
NumpadDiv::Send EMOJI
NumpadMult::Send EMOJI
NumpadAdd::Send EMOJI
NumpadSub::Send EMOJI
NumpadEnter::Send EMOJI<br>


Replace the EMOJI text placeholder text above with the emoji you like, as long as it can be read as Unicode.

Here's what mine looks like:

It's helpful to have a unicode emoji reference so you know that emoji will show up correctly. I used https://getemoji.com/ to get the emojis, and also shows emojis that aren't Unicode friendly as an empty box □.

When you've got all your emojis in place chose "Save As" and name the file with a .ahk extension, not the default .txt. I chose emojikeyboard.ahk. I saved this to my desktop for easy access.

Step 3: Make Emoji Stickers

Now that you've got the keys mapped you'll need to have a visual identifier to show what each key is. I measured the key caps as 15mm and made simple stickers of my emoji choices onto 15mm squares.

Step 4: Stick Those Stickers

I printed out a lot more stickers than I needed, so if I wanted to change up the emojis later I could peel off the sticker, remap the key, and put a new sticker on. This seemed like the easiest and most low-tech solution to the problem of changing emojis later on.

Stickers were placed on the keys i wanted, and had mapped, and I was ready to go!

Step 5: Emoji Time!

Plug in the keyboard, run the AutoHotKey program and then double-click the emojikeyboard.ahk saved on the desktop to run the remap script. Done! Start using all the emojis!

Some keys weren't used on the keypad I chose.

  • 00: A limitation of this particular numeric keypad is that it has a 00 key, which is just a double tap of the 0 key and not a separate key to remap.
  • Backspace: I left this as the default, so I can easily remove erroneously typed emojis from the same keypad.
  • NumLock: This acts like a power button for the emoji keyboard, so I can leave it plugged in and only have it on when I'm ready to emoji bomb an email.\

Sure, you can copy and paste emojis, but where's the fun in that? Also, for Windows 10 users there's an option to bring up an on screen emoji list by pressing WinKey+period. Both of these are options, but don't look nearly as cool as having your own dedicated keypad to your most-used emojis.

Did you make this project? I want to see it! Share a picture of your emoji keyboard in the comments below and get a free Pro Membership.
Happy making :)

Epilog X Contest

Participated in the
Epilog X Contest



    • DIY Summer Camp Contest

      DIY Summer Camp Contest
    • Growing Beyond Earth Maker Contest

      Growing Beyond Earth Maker Contest
    • Sensors Contest

      Sensors Contest

    11 Discussions


    Question 5 months ago on Step 5

    Can you have another numpad that will keep it's functionality?

    1 answer

    Answer 4 months ago

    Yes.. Each is a HID in it's own right.


    5 months ago

    This is really fun. I can see this being a marketable thing if you put together everything in a single package (stickers, a PDF template for the stickers, and a simple app for changing up the keyboard).

    On my mac, I used the Ukelele app to create a keyboard layout that includes all the symbols I frequently need to access. You can set it up so that you turn key combinations you never use anyway into emojis or symbols. I've currently got the greek alphabet as ctrl+opt+*letter* and ↓↑ as shift+opt+3 or 4. I also turned the [ ] \ keys into 123 so I can use a flashcard app right-handed and write with my left. You could easily add your favorite emojis to existing key combinations and even put a tiny sticker in the corner to remind yourself where they are. This also gives you the potential for 200+ custom symbols. Just another idea!

    Love this project and hope you keep creating cool stuff. (Ironically, emojis aren't compatible with the comment section here. I tried!)


    5 months ago

    Oh snap! I actually need one of these! I use the robot emoji so much on Twitter and it always takes too long to find it!

    Thanks Mikeasaurus!

    1 reply

    Reply 5 months ago

    You can still use Autohotkey to remap a combo key to the emoticon without needing a separate keyboard.


    5 months ago

    I write occasionally in Hawaiian, which has 11 additional characters not on a standard keyboard. Namely: Vowels with their kahakō:( Ā ā Ē ē Ī ī Ō ō Ū ū ) and ʻokina. ( ʻ ).
    I use the unicode symbols or HTML entities for these but this would be a great way to enter them. Unfortunately, although you don't mention it, AutoHotKey seems to be a windows only application, and I use Linux Mint.. Is there an equivalent in Linux? I can't locate one. Thanks!


    Tip 5 months ago

    Nice gadget!

    About the double tapped "0" key: Did you know about 'HID Macros'?

    This Software is able to differ which keyboard (HID) would be sending which key.

    Based on this you could create a little script which would emulate a completely different key (or even a shortcut!) when this certain (double zero) key is pressed on the numpad.

    I'm sure, this works! ;)

    2 replies

    Reply 5 months ago

    HID Macros is ideal for this, because it does differentiate between keyboards, but it's been abandoned a loooong time ago. I haven't been able to even find a copy that works. If you know where one is, I'd be interested.


    Reply 5 months ago

    Thanks for the info!!
    Hadn't had it on the radar / in use in a long time. (HIDMarcos was abandoned 2015, wow!)

    It seems the developer used TurboPascal which has been abandoned by Borland in the meantime as well, so his developing foundation would drop away, in case he has to reinstall his PC. IMHO it's a really weak excuse.

    He also stated that he wouldn't waste his very little time with implementing GUIs, what I think is quite rude to those who are not into (lua) scripting!


    The latest version would be 2.3 I guess...

    Fortunately he stated that the basic functions (e.g. differentiating between keyboards) are given in LuaMacros as well :)