return dev ? dev->binds : NULL;
}
+const int *in_get_dev_ps2_binds(int dev_id)
+{
+ in_dev_t *dev = get_dev(dev_id);
+
+ return dev ? dev->pico_ps2_binds : NULL;
+}
+
const int *in_get_dev_def_binds(int dev_id)
{
in_dev_t *dev = get_dev(dev_id);
return dev->binds + dev->key_count * IN_BINDTYPE_COUNT;
}
+const int *in_get_dev_ps2_def_binds(int dev_id)
+{
+ in_dev_t *dev = get_dev(dev_id);
+ if (dev == NULL)
+ return NULL;
+ if (dev->binds == NULL)
+ return NULL;
+
+ return dev->pico_ps2_binds;
+}
+
int in_get_config(int dev_id, int what, void *val)
{
int *ival = val;
return 0;
}
+int in_bind_ps2_key(int dev_id, int keycode, int ps2_key)
+{
+ int count;
+ in_dev_t *dev;
+
+ dev = get_dev(dev_id);
+ if (dev == NULL)
+ return -1;
+
+ count = dev->key_count;
+
+ if (dev->pico_ps2_binds == NULL) {
+ dev->pico_ps2_binds = in_alloc_pico_ps2_binds(dev->drv_id, count);
+ if (dev->pico_ps2_binds == NULL)
+ return -1;
+ }
+
+ if (keycode < 0 || keycode >= count)
+ return -1;
+
+ dev->pico_ps2_binds[keycode] = ps2_key;
+ return 0;
+}
+
/*
* Unbind act_mask on binds with type bind_type
* - if dev_id_ < 0, affects all devices
return i;
}
-int in_config_bind_key(int dev_id, const char *key, int acts, int bind_type)
+static int parse_key(in_dev_t *dev, const char *key)
{
- in_dev_t *dev;
- int i, offs, kc;
-
- dev = get_dev(dev_id);
- if (dev == NULL || bind_type >= IN_BINDTYPE_COUNT)
- return -1;
+ int kc, i;
/* maybe a raw code? */
if (key[0] == '\\' && key[1] == 'x') {
}
}
+ return kc;
+}
+
+int in_config_bind_key(int dev_id, const char *key, int acts, int bind_type)
+{
+ in_dev_t *dev;
+ int i, offs, kc;
+
+ dev = get_dev(dev_id);
+ if (dev == NULL || bind_type >= IN_BINDTYPE_COUNT)
+ return -1;
+
+ kc = parse_key(dev, key);
+
if (kc < 0 || kc >= dev->key_count) {
lprintf("input: bad key: '%s' for device '%s'\n",
key, dev->name);
return 0;
}
+int in_config_bind_ps2_key(int dev_id, const char *key, int ps2_key)
+{
+ in_dev_t *dev;
+ int kc;
+
+ dev = get_dev(dev_id);
+ if (dev == NULL)
+ return -1;
+
+ kc = parse_key(dev, key);
+
+ if (kc < 0 || kc >= dev->key_count) {
+ lprintf("input: bad key: '%s' for device '%s'\n",
+ key, dev->name);
+ return -1;
+ }
+
+ dev->pico_ps2_binds[kc] = ps2_key;
+
+ return 0;
+}
+
void in_clean_binds(void)
{
int i;
int in_menu_wait(int interesting, char *charcode, int autorep_delay_ms);
int in_config_parse_dev(const char *dev_name);
int in_config_bind_key(int dev_id, const char *key, int binds, int bind_type);
+int in_config_bind_ps2_key(int dev_id, const char *key, int ps2_key);
int in_get_config(int dev_id, int what, void *val);
int in_set_config(int dev_id, int what, const void *val, int size);
int in_get_key_code(int dev_id, const char *key_name);
int in_name_to_id(const char *dev_name);
int in_bind_key(int dev_id, int keycode, int mask, int bind_type, int force_unbind);
+int in_bind_ps2_key(int dev_id, int keycode, int ps2_key);
void in_unbind_all(int dev_id, int act_mask, int bind_type);
void in_clean_binds(void);
void in_debug_dump(void);
const int *in_get_dev_binds(int dev_id);
+const int *in_get_dev_ps2_binds(int dev_id);
const int *in_get_dev_def_binds(int dev_id);
+const int *in_get_dev_ps2_def_binds(int dev_id);
const char *in_get_dev_name(int dev_id, int must_be_active, int skip_pfix);
const char *in_get_key_name(int dev_id, int keycode);