After all the detours, I finally finished uploading even the code to GitHub. There were two more updates after that, I think, but those were only for incidental things like the design of the internal web page. They were not because there was a functional problem. More than anything, the more I thought about it, the more convinced I became that it had been the right decision to use Wi-Fi, but to make it almost time-limited, and also to leave out the Bluetooth module.
I had tried to make the device usable like a Bluetooth external keyboard, but the Bluetooth module drained the battery far more than expected. It had reached the point where using it like an ordinary keyboard on the market was almost impossible. So that decision came from actual use.
I had posted the news about the final firmware on Reddit and was resting when a thought suddenly came to me.
“Honestly, this is not some product promotion trying to sell something. It is just, ‘I made this, so try it once.’ In that case, is it really right to make a homepage and post links? If the point is simply to let people try it, shouldn’t I just make it possible for them to try it?”
That was not an unreasonable thought. After all, I did not really make the firmware myself. I planned it, but in practice Codex had made it, more or less. So it did not seem impossible to make a simulator with the same structure as that firmware. I asked Codex right away, without thinking about it for long.
“Can you make a simulator with the same functions as this firmware, something people on Reddit could use right away?”
“Yes.”
“You are saying you can do it without even asking what method I want?”
“If people on Reddit are going to use it right away, running it in a web browser is the best option. The code does not have to be complicated, and there is nothing to install.”
“Then make it.”
Now it talks as if none of this was anything, but when making the simulator code, there were so many absurd mistakes that it had to go through about twenty rounds of revision.
“I was trying to make firmware, not a simulator. Is this really something that should drag on and keep bothering me like this?”
That was the kind of thought I had, and once again it became a cycle of debugging.
-
The screen did not look like the ZeroWriter. It was either too wide or square.
-
The key layout did not look like the ZeroWriter. The arrow keys were separated off to the side like a general-purpose keyboard, or there was no menu key.
These two things happened five or six times, even after I had given it a picture of the ZeroWriter and told it to draw it the same way. What made it more irritating was that, only after those five or six repetitions, it finally said:
“This time, I will revise it by referring to the photo you uploaded.”
I wanted to ask what it had been looking at until then, but honestly, this sort of thing was so common that I did not even feel like fighting over it.
After the proportions, screen size, menus, and other visible parts were roughly matched, I began refining the menus. The menu behavior was already the same, but I wanted to implement even the web page settings properly. After making the web page connection screen and password setting screen display the same way, and after making settings like language selection and font size actually apply, I added GitHub integration as one last indulgence. It is clear that adding requirements one by one produces much better results than simply saying, “Make it the same.”
The feature exists, but I do not actually connect the browser simulator to GitHub and use it. I have not even tried connecting it. I did not want it to conflict with the post list in the repository I already use, and honestly, I also did not think anyone would issue an actual GitHub token just to connect it to a simulator. Outwardly, though, I made it look as if syncing and updating work properly.
Finally, I brought one more detail to life. When typing, instead of making the letters appear instantly on the screen, I added a slight delay so that it would feel like an actual e-ink display. I also made the Alt-key accent input for European languages behave the same way as the firmware. And lastly, I blocked the pop-up menu that appears when holding down Control or Shift on a touch screen, where it gets recognized like a right-click.
I had found and blocked that pop-up menu as an inconvenience when using it on a tablet, thinking it would be the last thing. But then, once again, there was one more last thing I wanted to add: the same sleep screen as the firmware. The photo of typewriter letters gathered together was that screen.
After that, there really was no more “last thing.” I added the simulator code page to the Ize Compose repository and website on GitHub, and made a download link. Anyone can look at the HTML code, check it, download it, and use it. Since it is a web version, there is no need to build anything. If you wanted to buy another e-ink device but hesitated because of the price and how often you would use it, you can just use it on the tablet you already have. Since it opens in a web browser, it does not matter whether you are on Windows or Android. On an ordinary laptop or desktop, you can simply use the keyboard. That made me think that writing with the tablet simulator might also be possible. Still, for me, writing for a long time on an on-screen keyboard is basically impossible, so I did not try it.
Unlike the firmware, the browser-based simulation tool really feels like a toy.
It is fun.
Original Korean article: 기기 없이 펌웨어를 써보기?