Add a request_keys() function with a midend wrapper.

This function gives the front end a way to find out what keys the back
end requires; and as such it is mostly useful for ports without a
keyboard. It is based on changes originally found in Chris Boyle's
Android port, though some modifications were needed to make it more
flexible.
This commit is contained in:
Franklin Wei
2018-04-17 16:18:16 -04:00
committed by Simon Tatham
parent 3d04dd3335
commit 60a929a250
45 changed files with 315 additions and 0 deletions

View File

@ -1104,6 +1104,27 @@ int midend_process_key(midend *me, int x, int y, int button)
return ret;
}
key_label *midend_request_keys(midend *me, int *n)
{
key_label *keys = NULL;
int nkeys = 0, i;
if(me->ourgame->request_keys)
{
keys = me->ourgame->request_keys(midend_get_params(me), &nkeys);
for(i = 0; i < nkeys; ++i)
{
if(!keys[i].label)
keys[i].label = button2label(keys[i].button);
}
}
if(n)
*n = nkeys;
return keys;
}
void midend_redraw(midend *me)
{
assert(me->drawing);