From 60a929a250cf4f7f87ac082e5705f9a838a7f8c8 Mon Sep 17 00:00:00 2001 From: Franklin Wei Date: Tue, 17 Apr 2018 16:18:16 -0400 Subject: 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. --- midend.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'midend.c') diff --git a/midend.c b/midend.c index 99112fa..1a08ef6 100644 --- a/midend.c +++ b/midend.c @@ -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); -- cgit v1.1