Well here we are, a week later just as I promised. I should also mention that I cheated a little bit: I actually started working this several weeks ago, but I think this is a large enough project that the head start was necessary. I didn't get a lot done this week, but I will cover my progress so far.
The first thing I started working on was the AT daemon. Inspired by my recent experiments with Wayland, I decided to base the daemon on Unix sockets. This is a very flexible way of dealing clients, and fits well with the TTY interface of the modem, as we can just poll to wait for I/O. I haven't exactly worked out the details of how the protocol will work, but I have a nearly functional prototype that converts commands from my temporary protocol into AT commands. The state of the code is pretty bad right now, so I will hold of on publishing it.
I also worked on porting
svkbd to Wayland. The visual part is essentially done. All that's left is the hard part: interaction with the compositor. Here's a (bad) picture of it running in
I began to implement
virtual-keyboard protocol support in swc. My intention was to have the compositor send
virtual-keyboard events to the client as keyboard events directly, but I'm beginning to rethink this. The
virtual-keyboard protocol lets a client emulate a keyboard by sending key up/down events and modifier key changes to the compositor. The problem is that touch-based keyboards aren't like physical keyboards. The main difference is that if you press a key with an input field selected, you expect the input to be entered on key release, not on key press, as you would with a physical keyboard. So a program with an input field would have to differentiate between events on a physical keyboard, and a virtual keyboard. It should really be the compositor's job to send the a client the right events, so I think the solutions is to drop the virtual-keyboard protocol entirely, and use the
text-input protocols instead.
Finally, I received my Pinephone this week. So as soon as my microSD cards arrive, I can start testing in earnest on actual hardware.