A lot of techies are surprised when
I say I mostly use Windows. Why would anyone who writes code
and edits video use Windows? Two reasons: one, it’s cheaper. And two: it lets me bodge. So sit back, ‘cos, yes, I’ll tell
you how I made the emoji keyboard, but more importantly, I will
tell you about the art of the bodge. Bodging is a wonderful British word that means
to patch together, to make temporary repairs. A bodge is clumsy, it’s inelegant,
it’ll fall apart, but it’ll work. And it’ll keep working as long as there’s someone around to bodge it again if it breaks. You know that bit in Apollo 13 where they have to fit the square peg in the round hole? That is a bodge. Actually, that’s possibly the greatest bodge in human history. In fact, if you can think of a better one,
let me know in the comments, ‘cos there’s probably a book
on Great Bodges of History to be written there, and I’d quite like to
be the one to write it. Anyway. Bodging has always sort of been how I make things. I didn’t study computer science,
I’m not writing elegant solutions here, I patch things together. The important stuff– backups, password security–
I make sure I get that right… but stuff I’m making for fun, I bodge. Now I learned to properly Bodge when I was
filming a TV show a few years ago. Some of that show’s made it online,
I’ll put links in the description, but stick with me for now, ‘cos you
need to know some context about it. I was filming with two people. Colin Furze,
who you might know off YouTube, he makes ludicrous, big, exploding physical things, and he has
the land speed record for a mobility scooter. And then there was
Charles Yarnold, who makes intricate microelectronics with
Arduinos and circuit boards. Like, last year Charles made
Barack Obama’s Christmas tree. And people could go online to
customise the colours and patterns of the twinkly lights that went
up and down it. It was wonderful. And my job on the TV show was to be the bridge
between those two, between Colin and Charles, to get the creations that they physically fabricated working with the world and with each other. So when we made a remote control
for a horse — I’m not kidding, we made
a remote control for a horse — Colin built the framework for a robot jockey, Charles made all the circuits and relays to have it
pull the reins when it got signals, and I built a smartphone app that let you
send those signals to let you steer a horse. And it worked! And I probably had the easiest job of the
three of us, ‘cos when I made things, I had an undo button. But the key part was this:
we were building prototypes. They had to work for one day of filming,
and we’d be there for it. But they HAD to work on that day,
or the TV show would be terrible and we’d have wasted a lot of money.
And we had basically no time to build there. We were working 16-hour days, 7-days
a week, and by the end of production, we had no time. We were bodging. And the bit of software that helped me, on
that show and since, more than anything else, was called AutoHotKey. AutoHotKey is such a good bodging tool that
it sometimes gets detected as a virus. AutoHotKey was originally meant to
be really, really simple: it waits until the user presses a certain key, and then it starts a program,
or it types some longer text, or it presses a more complicated series of
key commands that’d be really difficult otherwise. Like, if you wanted your F10 key to make your
video game character suddenly spin 180 and fire? Got it. No problem. AutoHotKey was it. The thing is, AutoHotKey grew and
grew and grew and grew. And its scripting language,
the stuff you have to write in to make it work, is terrible. I mean really awful. It was meant to do just really simple things, and over time it’s gained the ability to do so much. It can read files, it can look at
the colour of individual pixels on screen, it can call arbitrary Windows DLLs, it can parse regular expressions,
for anyone who knows what those are. But it’s all in this weird non-standard
way that is inspired by Visual Basic. AutoHotKey is a bodge that
helps you make other bodges. But it works! And it means that instead of
having to spend hours of time diving into complicated
operating-system-level stuff, you just write a few lines of script
and it does the job. I used AutoHotKey, on the TV show,
to control the release of a skydiver’s parachute. And it worked. I mean, really well.
I mean, we had a reserve, but it worked. The greatest bodge I ever pulled for that
TV show involved, and I swear this is true, a voice synthesiser and a
copy of Sibelius on a Mac being remote-controlled by
AutoHotKey on a Windows PC, which was blindly dragging the mouse around doing pre-recorded movements
through a remote desktop connection, while another PC fired commands to a
Google Chrome window open on the Mac over Wi-fi, because AppleScript and all the similar tools for Mac that we needed to run on Sibelius just weren’t up to doing something that ridiculous. By the way, if anyone out there
suggests using Linux… no. The world loves emoji. I mean, seriously.
Individual people might not, sure. I don’t really use them myself,
despite the keyboard, but the world loves them. People click on
headlines about emoji. Just putting the word in a headline
means you get way, way more hits on it. Emoji is basically the Donald Trump of computers.
There’s a joke that won’t date well. The very name is clickbait, you don’t really need anything else on top of it. My friend Matt — who’s behind the camera
right now — say hi, Matt. [MATT: Hi!] Matt and I made an emoji-only messenger last
year. And hardly anyone used it. Huh. That’s not true. Loads of people used it…
for about five minutes before they realised it was utterly impractical
and never opened it again. But you should have seen the
press coverage, the emails we got! We even got confused investors
thinking it was a startup and emailing us to talk about equity. So this year, movie studios were bidding on
an emoji-based pitch. Not mine, sadly. I wish I’d thought of it, because they got nearly
a million dollars for it. The world loves emoji. And here’s the thing: the concept
of emoji, as we know it today, as is on this keyboard, is a bodge. You know, you might know the story. Around the world, every language
had a different way of translating between letters and binary code,
1s and 0s, for computers. Now Japan had a bit of space
in its text encoding scheme, they’ve got a lot more characters
than the Latin alphabet anyway, so adding a few more wouldn’t
really have been a problem. And some clever engineer thinks,
“Hang on, “we can put little pictures in our text encoding,
we can let people send those, “and we can send pictures without
actually having to send pictures with all the bandwidth that entails.” So there are a few competing versions of that, but they never left Japan until the
Unicode Consortium came along. Now, the Unicode Consortium’s job
is to go to every country to work out how they encode text into binary, and turn all of these hundreds of competing approaches into one big worldwide standard. The most amazing thing about it
is that for the most part, they actually managed to make that work. But Unicode was meant to be two-way. You convert text into Unicode,
then convert it back out into your country’s old legacy system,
and nothing should be lost. So the Unicode team get to Japan
and they go, “Oh, you’ve… “You’ve put pictures in your text. Okay, um… “We can deal with that. We’ll add them
to the standard as little glyphs. That’s fine. We had a smiley face
in there anyway. No-one’ll notice.” And no-one does notice, really, for a while,
until Apple, who want to sell iPhones in Japan, quietly add emoji as a…
a fairly hidden option. But as soon as one person notices, “Hey, I can send little
piles of poo to my friends.” All their friends go, “Oh wow!
How do you turn that on?” And suddenly you have this kind of
ready-made viral explosion of piles of poo. Which I guess is norovirus. So suddenly the world has emoji, and
America is all, “What the hell are these?” ‘Cos they’re used to having consumer electronics,
text encodings, everything… designed by America, for America. They have no idea what the
cherry-blossom stamp is, or why there’s a rice ball
emoji, but no burrito. And they have no clue what
a love hotel is. Don’t ask. ‘Cos bear in mind, these original ones
were designed decades ago, in Japan, for Japan, and there were
originally only about 100, maybe 150 of them. And America’s like,
“Why can’t we have a burrito emoji?” They mostly think it’s an Apple thing,
not a international standard thing, so the Unicode Consortium suddenly finds itself
having to bodge in new emoji. And they have to bodge in
the flags of all nations, which is a really clever approach
where you’re actually sending letters for country abbreviations,
but that’s a separate thing. Then they realise every phone supplier has made the default emoji either yellow or just plain white, and realise they have to bodge in
what are now called skin tone modifiers. And let’s face it: a one man, one woman, one boy,
one girl family is really stereotypical, so they make it so you can use something
called a zero-width joiner to any person characters you like and they will
come together into a single family emoji. You can do that with shift on this keyboard,
by the way, which I’m really proud of. And I know, I know someone out there
is about to comment, “Ooh, it’s political correctness gone mad.” No. No. To hell with that.
To hell with that. These are meant to be international. These are meant to be cross-cultural,
for everyone on earth. There had damn well better be those options, and thankfully, we are more or less there. But the emoji we have today
weren’t designed as one worldwide thing. They’re a bodge on top of a
bodge on top of a bodge. Cleverly done and standardised, sure, but they’re a patchwork of rules. They’ve even got Wingdings in there now. That’s why there’s
Levitating Man in Business Suit, because that came from an American decision. And the latest version of iOS does
have a custom version of that in. You might even be able to add a
skin tone modifier to it, I’m not sure yet. So I get the idea for a physical emoji keyboard. I thought about trying a full-Unicode one, but I realised I would need hundreds and
hundreds and hundreds of keyboards, but you can just about fit all
1,200 or 1,300 or so emoji that are currently out there
onto 14 keyboards. So they’re all here. Actually getting the stickers to print
correctly on my home inkjet was a bit tricky, but I got there, it was just a matter of
lining everything up properly and then spending several hours
sticking the damn things on. And thankfully, you can just plug 14 USB keyboards
into a Windows machine, through USB hubs, and it’ll go, “Yeah, alright. I’ve got
14 keyboards now. That’s cool.” But the trouble is: all 14 keyboards,
as far as most programs here are concerned, are counted as the same keyboard. You don’t get to see which Z key’s been pressed, you just know a Z key has been pressed somewhere. And even AutoHotKey, my old reliable
standby, couldn’t help me with that. So I started looking around for solutions. And there are low-level APIs,
programming interfaces, in Windows that let you see the
raw input as it comes in over the wires. Mac and Linux folks in the comments,
are going to be going, “Oh yeah… All you have to do is connect the flumberboozle
to the GKX virtual port, then write a–” No. No. Not going to do that. Because I got to the point of
installing Visual Studio on this and thinking of actually
learning the low-level stuff and I thought, “No. I run Windows.
Someone will have done this before.” And sure enough, they had. Of all things: there is a program
called LuaMacros, and it’s meant for the
flight simulator community. Flight simmers are amazing,
they will build entire fake cockpits with a hundred switches in them
so it’s all accurate. And if they can’t afford that, they’ll want
to plug in multiple keyboards so it at least feels a bit like they’ve got
a fake cockpit with a hundred switches. And so LuaMacros exists, and it’s wonderful. Because it is basically a
modified version of Lua, which is a weird but not
too weird programming language, with a load of extra functions grafted in to handle detecting different keyboards and keypresses. And because it’s a full programming language,
you can do full-on programming in it! Which is fantastic!
I mean, I was overjoyed. Like, literally, dancing around my flat
when I first downloaded and ran LuaMacros. Which was partly because I was really happy, and partly because I had Aqua’s first album on,
but that’s beside the point. I could detect individual keys
from individual keyboards. Great! So here was the plan:
get each key’s code. That’s the number that gets sent to
the operating system when it’s pressed. Put those in a list, from top left to bottom right,
all the way down one keyboard, ignoring the complicated ones
like Enter, Control and Alt. Then, when a key gets pressed, take the code, look it up in that list.
Remember what position it is. Then add to that the
total number of keys in that list multiplied by the number of the
keyboard it was pressed on. So if I hit the fifth key on the second keyboard,
that would come through as item 4 in the list and keyboard number 1 — because computers
and programmers count from 0. So: fifth key. 0, 1, 2, 3, 4. Second keyboard: 0, 1. Plug all that into the formula,
and you’ll find where you are on the list. And the reason we count from zero is because
it makes maths like that so much easier. Keyboard 1, times the 94 keys in the list, plus 4, means you want the 98th item
on a list starting from zero. The equation is just so much simpler… and it didn’t work. It didn’t work. It took me half an hour to find out why it didn’t work, and the reason it didn’t work is that Lua, unlike every other programming
language in modern times, counts from 1, not from 0! Half an hour. Half an hour that took me. I fixed the equation, and it worked.
So I loaded in the full list of emoji, in the order that I’d put them down on the keys, and I told LuaMacros, “When you get a key, “calculate that number like we just did, “look it up in the big list of emoji,
go down that many lines, and type that emoji.” And it didn’t work either. ‘Cos there are no emoji keys on a regular
keyboard. Of course there aren’t. No-one has been ridiculous enough
to make an emoji keyboard yet. So there isn’t a key combination
that will get you an emoji. Alright. There might have been swearing
at this point. Just a little. So. Okay. What next? Well, it turns out that
Windows has a way of writing special characters, and quite a few of you will remember it:
you hold down the Alt key, and you type numbers on the numeric keypad. That’s not even from Windows,
that goes all the way back to original IBM PCs and BIOS and DOS,
okay, it’s decades old. But it still works. Because Microsoft is obsessive
about backwards compatibility. You can still type those
like it was the late eighties. But then they realised, “Oh, now
we’ve got all those Unicode characters,” so they used a bodge.
They extended it to Unicode. You do a quick registry tweak,
you can type Alt, plus sign, and then a Unicode code point, and it will type it,
all the way up to emoji! Hallelujah! And I got that working, and it threw emoji
into Microsoft Word. And I was laughing. And then I tried it in a web browser,
like for Twitter, and it didn’t work either… because that backwards compatibility means that Unicode code points only work in rich text boxes, things that allow formatting, not plain ones. Couple of hours went by at this point. Nearly there. I got quite frustrated. And I took a break, and I swear, at some point
while I was cooking dinner, it was like a light came on in my head, and the gods of bodging shone down upon me
and I shouted out loud, “AutoHotKey!” Yeah, that wasn’t just a pointless ramble
about bodging earlier with AutoHotkey. AutoHotKey. Because it can’t tell which keyboard
is being pressed, that doesn’t matter. What it can do is type emoji.
It can look down the list of emoji, it can read a particular character from a line,
and it can enter it anywhere, ‘cos it doesn’t use key presses,
it uses low-level Windows stuff. So. I have one program, LuaMacros. It can read the keyboards and
work out which emoji the user wants. And I have one program that, if we
already know which emoji the user wants… can type it. So it was bodging time.
Here’s how this keyboard works: You press a key.
LuaMacros intercepts it on the way in, stops Windows actually typing the letter
or whatever’s underneath it. It works out which number emoji you want,
and it saves that number to a file on disk. Then, it presses the F24 key.
That’s right, there’s an F24 key. It’s not on my keyboard,
it’s almost certainly not on your keyboard, but it’s still a key that Windows can deal with
because backwards compatibility. And AutoHotKey is listening
for that F24 key and when it hears it, it reads that same file, the file that LuaMacros
just put the number in, it reads that number, it looks down the list of emoji,
and it types that emoji! That is how the emoji keyboard works,
that’s why I use Windows, and that is the art of the bodge! One take! Thank you, Matt! [Translating these subtitles?
Add your name here!]
26 thoughts on “The Art of the Bodge: How I Made The Emoji Keyboard”
You're my favorite kind of human ๐ this is some Gerry rigging at it's finest
Absolutely excellent answer to why I too prefer using windows when I am a programmer, its cheaper and easier when you need to bodge.
Now don't get me wrong, I love my linux box and two raspberry,s where I've had to do some time consuming work to get them to do what I wanted and boy they do just that which very few windows software offer the exact same but the time and sheer effort I put into these was crazy I mean weekends just working on basic tasks.
Had I used windows I would have been able to do what I wanted far quicker and easier using a mix and mash of freeware applications then my own batch scripts and schedulers that windows already offers but in the grand scheme of things they would have saved me time and as any professional knows, time means money.
Tom Scott uses Moebuntu..so do I..Moebuntu evermore.
YES! Say NO to Linux!
i hate emojis
Why not Linux?
Scripting languages on Linux are much better than AHK, and Linux has expect and dbus and X-server.
the only reason not to use Linux is when an application only exists on Windows, but then very often wine will do a good job at emulating it. And mapping new characters or sequences is not hard to do in Linux, you don't need an external hacky tool like AHK that will translate between key codes and character sequences, in Linux it's not hard to create a new keyboard definition ๐
๐ด๐ป
L E V I T A T I N G M A N I N B U S I N E S S S U I T
That guy is a wizard
Everyone: arrays start at 0
Lua and Matlab: confused screaming
The main thing I'll be taking away from this video is that Aqua actually had an album…
BOTCH not Bodge ๐ thumbs up for Botch thumbs down for Bodge. PS can't believe that after that never got to see it work
As a fellow scientist, devoloper, inventor, and master bodger. I salute you! ๐
34563 14 21191
How to index from zero in lua
If pcall(function() variable = table[number – 1] end) then else print(โAttempt to call negative index valueโ) end
15:43 GENIOUS
Great video. I'm a flightsimmer and of course that's how I got here! ๐
Such determination
You've lost a subscriber.
So … now can you make emoji like fonts, so I can install my preferred emoji pack into any given piece of emoji using software? I like some of the stuff from Skype, I like some of the stuff from Facebook, I like some of the stuff from WeChat … it'd be nice if I could choose which ones I wanted to use where from some sort of predetermined emoji database.
I'm slightly confused about the weird workaround with the "save to disk and press f24"
Could you not compile the ahk script as a .exe and have lua execute it with the emoji as a parameter?
watching in 2019. i somehow doubt emoji has the same search power now lmao
I think that norovirus jokes went over some heads but it was great
10:20 This line was the best part of the entire video.
7:38 – aww, lookit that unbranded kb eh
๐๐๐๐คฃ๐๐๐ ๐๐๐๐๐๐๐๐ฅฐ๐๐๐โบ๏ธ๐๐ค๐คฉ๐ค๐คจ๐ฎ๐๐ถ๐๐๐ฃ๐ฅ๐ฎ๐ค๐ฏ๐ช๐ซ๐ด๐๐๐๐๐คค๐๐๐๐๐๐ค๐ฒโน๐๐๐๐๐ค๐ข๐ญ๐ฆ๐ง๐จ๐ฉ๐คฏ๐ฌ๐ฐ๐ฑ๐ฅต๐ฅถ๐ณ๐คช๐ต๐ก๐ ๐คฌ๐ท๐ค๐ค๐คข๐คฎ๐คง๐๐ค ๐ฅณ๐ฅด๐ฅบ๐คฅ๐คซ๐คญ๐ง๐คโป๐๐ฟ๐คก๐น๐บ๐โ ๐ป๐ฝ๐พ๐ค๐ฉ๐บ๐ธ๐น๐ป๐ผ๐ฝ๐๐ฟ๐พ๐๐๐๐ถ๐ง๐ฆ๐ง๐ง๐จ๐ฉ๐ง๐ด๐ต๐จโโ๏ธ๐ฉโโ๏ธ๐ง๐ด๐ต๐จโโ๏ธ๐ฉโโ๏ธ๐จโ๐๐ฉโ๐๐จโ๐ซ๐ฉโ๐ซ๐จโโ๐ฉโโ๐จโ๐พ๐ฉโ๐พ๐จโ๐ณ๐ฉโ๐ณ๐จโ๐ง๐ฉโ๐ง๐จโ๐ญ๐ฉโ๐ญ๐จโ๐ผ๐ฉโ๐ผ๐จโ๐ฌ๐ฉโ๐ฌ๐จโ๐ป๐ฉโ๐ป๐จโ๐ค๐ฉโ๐ค๐จโ๐จ๐ฉโ๐จ๐จโโ๏ธ๐ฉโโ๏ธ๐จโ๐๐ฉโ๐๐จโ๐๐ฉโ๐๐ฎโโ๏ธ๐ฎโโ๏ธ๐ต๏ธโโ๏ธ๐ต๏ธโโ๏ธ๐โโ๏ธ๐โโ๏ธ๐ทโโ๏ธ๐ทโโ๏ธ๐คด๐ธ๐ณโโ๏ธ๐ณโโ๏ธ๐ฒ๐ง๐ง๐ฑโโ๏ธ๐ฑโโ๏ธ๐จโ๐ฆฐ๐ฉโ๐ฆฐ๐จโ๐ฆฑ๐ฉโ๐ฆฑ๐จโ๐ฆณ๐ฉโ๐ฆณ๐จโ๐ฆฒ๐ฉโ๐ฆฒ๐คต๐ฐ๐คฐ๐คฑ๐ผ๐ ๐คถ๐ฆธโโ๏ธ๐ฆธโโ๏ธ๐ฆนโโ๏ธ๐ฆนโโ๏ธ๐งโโ๏ธ๐งโโ๏ธ๐งโโ๏ธ๐งโโ๏ธ๐งโโ๏ธ๐งโโ๏ธ๐งโโ๏ธ๐งโโ๏ธ๐งโโ๏ธ๐งโโ๏ธ๐งโโ๏ธ๐งโโ๏ธ๐งโโ๏ธ๐งโโ๏ธ๐โโ๏ธ๐โโ๏ธ๐โโ๏ธ๐โโ๏ธ๐ โโ๏ธ๐ โโ๏ธ๐โโ๏ธ๐คฆโโ๏ธ๐โโ๏ธ๐โโ๏ธ๐โโ๏ธ๐โโ๏ธ๐โโ๏ธ๐โโ๏ธ๐คฆโโ๏ธ๐คฆโโ๏ธ๐คทโโ๏ธ๐คทโโ๏ธ๐โโ๏ธ๐โโ๏ธ๐โโ๏ธ๐โโ๏ธ๐ถโโ๏ธ๐ถโโ๏ธ๐โโ๏ธ๐โโ๏ธ๐บ๐๐ฏโโ๏ธ๐ฏโโ๏ธ๐งโโ๏ธ๐งโโ๏ธ๐งโโ๏ธ๐งโโ๏ธ๐งโโ๏ธ๐งโโ๏ธ๐๐๐ด๐ฃ๐ค๐ฅ๐คบ๐โท๐๐๏ธโโ๏ธ๐๏ธโโ๏ธ๐โโ๏ธ๐โโ๏ธ๐ฃโโ๏ธ๐ดโโ๏ธ๐โโ๏ธ๐โโ๏ธโน๏ธโโ๏ธโน๏ธโโ๏ธ๐๏ธโโ๏ธ๐๏ธโโ๏ธ๐ดโโ๏ธ๐ดโโ๏ธ๐ตโโ๏ธ๐ตโโ๏ธ๐๐๐คธโโ๏ธ๐คธโโ๏ธ๐คผโโ๏ธ๐คผโโ๏ธ๐คฝโโ๏ธ๐คฝโโ๏ธ๐คพโโ๏ธ๐คพโโ๏ธ๐คนโโ๏ธ๐คนโโ๏ธ๐ซ๐ฌ๐ญ๐๐๐ช๐จโ๐ฉโ๐ง๐จโ๐ฉโ๐งโ๐ฆ๐จโ๐ฉโ๐ฆโ๐ฆ๐จโ๐ฉโ๐งโ๐ง๐จโ๐ฆ๐จโ๐ฆโ๐ฆ๐จโ๐ง๐จโ๐งโ๐ฆ๐จโ๐งโ๐ง๐ฉโ๐ฆ๐ฉโ๐ฆโ๐ฆ๐ฉโ๐ง๐ฉโ๐งโ๐ฆ๐ฉโ๐งโ๐ง๐คณ๐ช๐ฆต๐ฆถ๐๐โ๏ธ๐๐๐โ๐ค๐๐ค๐ค๐โ๐๐๐โ๐๐ค๐ค๐ค๐๐คโ๐๐๐๐คฒ๐๐ค๐ ๐๐๐ฃ๐๐๐ง ๐ฆด๐ฆท๐ ๐๐ฆฐ๐ฆฑ๐ฆณ๐ฆฒ๐๐๐๐๐๐๐๐๐โฃ๐โค๐งก๐๐๐๐๐ค๐๐ค๐ข๐ฃ๐ฅ๐ฆ๐จ๐ซ๐ฌ๐จ๐ฏ๐ญ๐ณ๐๐ถ๐ฅฝ๐ฅผ๐๐๐๐งฃ๐งค๐งฅ๐งฆ๐๐๐๐๐๐๐๐๐๐๐๐ฅพ๐ฅฟ๐ ๐ก๐ข๐๐๐ฉ๐๐งขโ๐ฟ๐๐๐๐ต๐๐ฆ๐ถ๐๐ฉ๐บ๐ฆ๐ฆ๐ฑ๐๐ฆ๐ฏ๐ ๐๐ด๐๐ฆ๐ฆ๐ฆ๐ฎ๐๐๐๐ท๐๐๐ฝ๐๐๐๐ช๐ซ๐ฆ๐ฆ๐๐ฆ๐ฆ๐ญ๐๐๐น๐ฐ๐๐ฟ๐ฆ๐ฆ๐ป๐จ๐ผ๐ฆ๐ฆก๐พ๐ฆ๐๐๐ฃ๐ค๐ฅ๐ฆ๐ง๐๐ฆ ๐ฆ๐ฆข๐ฆ๐ฆ๐ฆ๐ธ๐๐ข๐ฆ๐๐ฒ๐๐ฆ๐ฆ๐ณ๐๐ฌ๐๐ ๐ก๐ฆ๐๐๐ฆ๐ฆ๐ฆ๐ฆ๐๐ฆ๐๐๐๐๐ฆ๐ท๐ธ๐ฆ๐ฆ๐ฆ ๐๐ธ๐ฎ๐ต๐น๐ฅ๐บ๐ป๐ผ๐ทโ๐ฑ๐ฒ๐ณ๐ด๐ต๐พ๐ฟโ๐๐๐๐๐๐๐๐๐๐๐๐ฅญ๐๐๐๐๐๐๐ฅ๐ ๐ฅฅ๐ฅ๐๐ฅ๐ฅ๐ฝ๐ถ๐ฅ๐ฅฌ๐ฅฆ๐๐ฅ๐ฐ๐๐ฅ๐ฅ๐ฅจ๐ฅฏ๐ฅ๐ง๐๐๐ฅฉ๐ฅ๐๐๐๐ญ๐ฅช๐ฎ๐ฏ๐ฅ๐ฅ๐ณ๐ฅ๐ฒ๐ฅฃ๐ฅ๐ฟ๐ง๐ฅซ๐ฑ๐๐๐๐๐๐๐ ๐ข๐ฃ๐ค๐ฅ๐ฅฎ๐ก๐ฅ๐ฅ ๐ฅก๐ฆ๐ง๐จ๐ฉ๐ช๐๐ฐ๐ง๐ฅง๐ซ๐ฌ๐ญ๐ฎ๐ฏ๐ผ๐ฅโ๐ต๐ถ๐พ๐ท๐ธ๐น๐บ๐ป๐ฅ๐ฅ๐ฅค๐ฅข๐ฝ๐ด๐ฅ๐ช๐บ๐๐๐๐๐โจ๐๐๐๐๐๐๐๐๐๐งง๐๐๐๐๐ซ๐๐๐ ๐ฅ๐ฅ๐ฅโฝ๏ธโพ๏ธ๐ฅ๐๐๐๐๐พ๐ฅ๐ณ๐๐๐๐ฅ๐๐ธ๐ฅ๐ฅ๐ฅ โณโธ๐ฃ๐ฝ๐ฟ๐ท๐ฅ๐ฏ๐ฑ๐ฎ๐งฟ๐ฎ๐น๐ฐ๐ฒ๐งฉ๐งธโ ๏ธโฅ๏ธโฆ๏ธโฃ๏ธโ๐๐๐ด๐ญ๐ผ๐จ๐งต๐งถ๐๐๐๐๐บ๐งญ๐โฐ๐๐ป๐๐๐๐๐๐๐๐๐งฑ๐๐๐ ๐ก๐ข๐ฃ๐ค๐ฅ๐ฆ๐จ๐ฉ๐ช๐ซ๐ฌ๐ญ๐ฏ๐ฐ๐๐ผ๐ฝโช๐๐โฉ๐โฒโบ๐๐๐๐๐ ๐๐๐โจ๏ธ๐๐ ๐ก๐ข๐๐ช๐๐๐๐ ๐๐๐๐๐๐๐๐๐๐๐๐๐๐๐๐๐๐๐๐๐๐๐๐๐ฒ๐ด๐น๐ต๐๐ฃ๐ค๐ขโฝ๐จ๐ฅ๐ฆ๐๐งโโต๐ถ๐ค๐ณโด๐ฅ๐ขโ๐ฉ๐ซ๐ฌ๐บ๐๐๐ ๐ก๐ฐ๐๐ธ๐๐งณโโณโโฐโฑโฒ๐ฐ๐๐ง๐๐๐๐๐๐๐๐๐๐ ๐๐ก๐๐ข๐๐ฃ๐๐ค๐๐ฅ๐๐ฆ๐๐๐๐๐๐๐๐๐๐๐๐๐กโ๏ธ๐๐โญ๐๐ โ๏ธโ โ๐ค๐ฌ๐ฆ๐ง๐จ๐ฉ๐ช๐ซ๐ฌ๐๐๐โ๏ธโโฑโกโโ๏ธโโ๐ฅ๐ง๐๐๐๐๐๐ข๐ฃ๐ฏ๐๐๐ผ๐ต๐ถ๐๐๐๐ค๐ง๐ป๐ท๐ธ๐น๐บ๐ป๐ฅ๐ฑ๐ฒโ๏ธ๐๐๐ ๐๐๐ป๐ฅ๐จโจ๐ฑ๐ฒ๐ฝ๐พ๐ฟ๐๐งฎ๐ฅ๐๐ฝ๐ฌ๐บ๐ท๐ธ๐น๐ผ๐๐๐ฏ๐ก๐ฆ๐ฎ๐๐๐๐๐๐๐๐๐๐๐๐๐ฐ๐๐๐๐ท๐ฐ๐ด๐ต๐ถ๐ท๐ธ๐ณ๐งพ๐ฑ๐ฒโ๐ง๐จ๐ฉ๐ค๐ฅ๐ฆ๐ซ๐ช๐ฌ๐ญ๐ฎ๐ณโโ๐๐๐๐๐๐ผ๐๐๐๐ ๐๐๐๐๐๐๐๐๐๐๐๐๐๐โ๏ธ๐๐๐๐๐๐๐๐๐๐จโโ๐ ๐กโ๐ซ๐น๐ก๐ง๐ฉโ๐โ๐โ๐งฐ๐งฒโ๐งช๐งซ๐งฌ๐ฌ๐ญ๐ก๐๐๐ช๐๐๐ฝ๐ฟ๐๐งด๐งท๐งน๐งบ๐งป๐งผ๐งฝ๐งฏ๐๐ฌโฐโฑ๐ฟ๐ง๐ฎ๐ฐโฟ๐น๐บ๐ป๐ผ๐พ๐๐๐๐ โ ๏ธ๐ธโ๐ซ๐ณ๐ญ๐ฏ๐ฑ๐ท๐ต๐โขโฃโฌ๏ธโ๏ธโก๏ธโ๏ธโฌ๏ธโ๏ธโฌ ๏ธโ๏ธโ๏ธโ๏ธโฉโชโคด๏ธโคต๏ธ๐๐๐๐๐๐๐๐โ๐โกโธโฏ๏ธโ๏ธโฆโช๏ธโฎ๐๐ฏโโโโโโโโโโโโโ๐๐๐โถ๏ธโฉโญโฏโ๏ธโชโฎ๐ผโซ๐ฝโฌโธโนโบโ๐ฆ๐ ๐๐ถ๐ณ๐ดโ๏ธโ๏ธโโพโป๏ธโ๐ฑ๐๐ฐโญโ โโโโโโโโโฐโฟใฝ๏ธโณโดโโผโ๏ธโโโโใฐ๏ธยฉ๏ธยฎ๏ธโข๏ธ#๏ธโฃ*๏ธโฃ0๏ธโฃ1๏ธโฃ2๏ธโฃ3๏ธโฃ4๏ธโฃ5๏ธโฃ6๏ธโฃ7๏ธโฃ8๏ธโฃ9๏ธโฃ๐๐ฏ๐ ๐ก๐ข๐ฃ๐ค๐ ฐ๏ธ๐๏ธ๐ ฑ๏ธ๐๏ธ๐๏ธ๐๏ธโน๐๏ธโ๏ธ๐๏ธ๐๏ธ๐ พ๏ธ๐๏ธ๐ ฟ๏ธ๐๏ธ๐๏ธ๐๏ธ๐๏ธ๐๏ธ๐ท๏ธ๐ถ๏ธ๐ฏ๏ธ๐๏ธ๐น๏ธ๐๏ธ๐ฒ๏ธ๐๏ธ๐ธ๏ธ๐ด๏ธ๐ณ๏ธใ๏ธใ๏ธ๐บ๏ธ๐ต๏ธ๐ด๐ตโชโซโฌโฌโผโปโฝโพโซ๏ธโช๏ธ๐ถ๏ธ๐ท๏ธ๐ธ๏ธ๐น๏ธ๐บ๏ธ๐ป๐ ๐๐ฒ๐ณ๐๐ฉ๐ด๐ณ๐ณ๏ธโ๐๐ดโโ ๏ธ๐ฆ๐จ๐ฆ๐ฉ๐ฆ๐ช๐ฆ๐ซ๐ฆ๐ฌ๐ฆ๐ฎ๐ฆ๐ฑ๐ฆ๐ฒ๐ฆ๐ด๐ฆ๐ถ๐ฆ๐ท๐ฆ๐ธ๐ฆ๐น๐ฆ๐บ๐ฆ๐ผ๐ฆ๐ฝ๐ฆ๐ฟ๐ง๐ฆ๐ง๐ง๐ง๐ฉ๐ง๐ช๐ง๐ซ๐ง๐ฌ๐ง๐ญ๐ง๐ฎ๐ง๐ฏ๐ง๐ฑ๐ง๐ฒ๐ง๐ณ๐ง๐ด๐ง๐ถ๐ง๐ท๐ง๐ธ๐ง๐น๐ง๐ป๐ง๐ผ๐ง๐พ๐ง๐ฟ๐จ๐ฆ๐จ๐จ๐จ๐ฉ๐จ๐ซ๐จ๐ฌ๐จ๐ญ๐จ๐ฎ๐จ๐ฐ๐จ๐ฑ๐จ๐ฒ๐จ๐ณ๐จ๐ด๐จ๐ต๐จ๐ท๐จ๐บ๐จ๐ป๐จ๐ผ๐จ๐ฝ๐จ๐พ๐จ๐ฟ๐ฉ๐ช๐ฉ๐ฌ๐ฉ๐ฏ๐ฉ๐ฐ๐ฉ๐ฒ๐ฉ๐ด๐ฉ๐ฟ๐ช๐ฆ๐ช๐จ๐ช๐ช๐ช๐ฌ๐ช๐ญ๐ช๐ท๐ช๐ธ๐ช๐น๐ช๐บ๐ซ๐ฎ๐ซ๐ฏ๐ซ๐ฐ๐ซ๐ฒ๐ซ๐ด๐ซ๐ท๐ฌ๐ฆ๐ฌ๐ง๐ฌ๐ฉ๐ฌ๐ช๐ฌ๐ซ๐ฌ๐ฌ๐ฌ๐ญ๐ฌ๐ฎ๐ฌ๐ฑ๐ฌ๐ฒ๐ฌ๐ณ๐ฌ๐ต๐ฌ๐ถ๐ฌ๐ท๐ฌ๐ธ๐ฌ๐น๐ฌ๐บ๐ฌ๐ผ๐ฌ๐พ๐ญ๐ฐ๐ญ๐ฒ๐ญ๐ณ๐ญ๐ท๐ญ๐น๐ญ๐บ๐ฎ๐จ๐ฎ๐ฉ๐ฎ๐ช๐ฎ๐ฑ๐ฎ๐ฒ๐ฎ๐ณ๐ฎ๐ด๐ฎ๐ถ๐ฎ๐ท๐ฎ๐ธ๐ฎ๐น๐ฏ๐ช๐ฏ๐ฒ๐ฏ๐ด๐ฏ๐ต๐ฐ๐ช๐ฐ๐ฌ๐ฐ๐ญ๐ฐ๐ฎ๐ฐ๐ฒ๐ฐ๐ณ๐ฐ๐ต๐ฐ๐ท๐ฐ๐ผ๐ฐ๐พ๐ฐ๐ฟ๐ฑ๐ฆ๐ฑ๐ง๐ฑ๐จ๐ฑ๐ฎ๐ฑ๐ฐ๐ฑ๐ท๐ฑ๐ธ๐ฑ๐น๐ฑ๐บ๐ฑ๐ป๐ฑ๐พ๐ฒ๐ฆ๐ฒ๐จ๐ฒ๐ฉ๐ฒ๐ช๐ฒ๐ซ๐ฒ๐ฌ๐ฒ๐ญ๐ฒ๐ฐ๐ฒ๐ฑ๐ฒ๐ฒ๐ฒ๐ณ๐ฒ๐ด๐ฒ๐ต๐ฒ๐ถ๐ฒ๐ท๐ฒ๐ธ๐ฒ๐น๐ฒ๐บ๐ฒ๐ป๐ฒ๐ผ๐ฒ๐ฝ๐ฒ๐พ๐ฒ๐ฟ๐ณ๐ฆ๐ณ๐จ๐ณ๐ช๐ณ๐ซ๐ณ๐ฌ๐ณ๐ฎ๐ณ๐ฑ๐ณ๐ด๐ณ๐ต๐ณ๐ท๐ณ๐บ๐ณ๐ฟ๐ด๐ฒ๐ต๐ฆ๐ต๐ช๐ต๐ซ๐ต๐ฌ๐ต๐ญ๐ต๐ฐ๐ต๐ฑ๐ต๐ฒ๐ต๐ณ๐ต๐ท๐ต๐ธ๐ต๐น๐ต๐ผ๐ต๐พ๐ถ๐ฆ๐ท๐ช๐ท๐ด๐ท๐ธ๐ท๐บ๐ท๐ผ๐ธ๐ฆ๐ธ๐ง๐ธ๐จ๐ธ๐ฉ๐ธ๐ช๐ธ๐ฌ๐ธ๐ญ๐ธ๐ฎ๐ธ๐ฏ๐ธ๐ฐ๐ธ๐ฑ๐ธ๐ฒ๐ธ๐ณ๐ธ๐ด๐ธ๐ท๐ธ๐ธ๐ธ๐น๐ธ๐ป๐ธ๐ฝ๐ธ๐พ๐ธ๐ฟ๐น๐ฆ๐น๐จ๐น๐ฉ๐น๐ซ๐น๐ฌ๐น๐ญ๐น๐ฏ๐น๐ฐ๐น๐ฑ๐น๐ฒ๐น๐ณ๐น๐ด๐น๐ท๐น๐น๐น๐ป๐น๐ผ๐น๐ฟ๐บ๐ฆ๐บ๐ฌ๐บ๐ณ๐บ๐ธ๐บ๐พ๐บ๐ฟ๐ป๐ฆ๐ป๐จ๐ป๐ช๐ป๐ฌ๐ป๐ฎ๐ป๐ณ๐ป๐บ๐ผ๐ซ๐ผ๐ธ๐ฝ๐ฐ๐พ๐ช๐พ๐น๐ฟ๐ฆ๐ฟ๐ฒ๐ฟ๐ผ๐ด๓ ง๓ ข๓ ฅ๓ ฎ๓ ง๓ ฟ๐ด๓ ง๓ ข๓ ณ๓ ฃ๓ ด๓ ฟ๐ด๓ ง๓ ข๓ ท๓ ฌ๓ ณ๓ ฟ every emoji