e_input_device: add a new api for remap keyboard 50/212850/7
authorjeon <jhyuni.kang@samsung.com>
Tue, 27 Aug 2019 09:03:27 +0000 (18:03 +0900)
committerJeongHyun Kang <jhyuni.kang@samsung.com>
Wed, 22 Jan 2020 01:19:33 +0000 (01:19 +0000)
Change-Id: I0c730955707b46146060a9bd42b07a3be28b79e1

src/bin/e_input.h
src/bin/e_input_device.c
src/bin/e_input_evdev.c

index 7ac366a..7dd7694 100644 (file)
@@ -100,6 +100,7 @@ E_API int e_input_evdev_wheel_click_angle_get(E_Input_Evdev *dev);
 E_API Ecore_Device *e_input_evdev_get_ecore_device(const char *path, Ecore_Device_Class clas);
 
 E_API unsigned int e_input_device_touch_pressed_get(E_Input_Device *dev);
+E_API Eina_Bool e_input_device_keyboard_remap_set(E_Input_Device *dev, int *from_keys, int *to_keys, int num);
 
 #endif
 #endif
index 4311dfc..8485e33 100644 (file)
@@ -1236,3 +1236,34 @@ e_input_device_touch_pressed_get(E_Input_Device *dev)
 
    return pressed;
 }
+
+E_API Eina_Bool
+e_input_device_keyboard_remap_set(E_Input_Device *dev, int *from_keys, int *to_keys, int num)
+{
+   E_Input_Seat *seat = NULL;
+   E_Input_Evdev *edev = NULL;
+   Eina_List *l = NULL, *l2 = NULL;
+   Eina_Bool res = EINA_TRUE, ret = EINA_TRUE;
+
+   EINA_SAFETY_ON_NULL_RETURN_VAL(dev, EINA_FALSE);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(dev->seats, EINA_FALSE);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(from_keys, EINA_FALSE);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(to_keys, EINA_FALSE);
+   EINA_SAFETY_ON_TRUE_RETURN_VAL(num <= 0, EINA_FALSE);
+
+   EINA_LIST_FOREACH(dev->seats, l, seat)
+     {
+        EINA_LIST_FOREACH(e_input_seat_evdev_list_get(seat), l2, edev)
+          {
+             if (edev->caps & E_INPUT_SEAT_KEYBOARD)
+               {
+                  res = e_input_evdev_key_remap_enable(edev, EINA_TRUE);
+                  if (res)
+                     res = e_input_evdev_key_remap_set(edev, from_keys, to_keys, num);
+               }
+             if (!res) ret = EINA_FALSE;
+          }
+     }
+
+   return ret;
+}
index bb99d94..57e7362 100644 (file)
@@ -409,7 +409,7 @@ _device_handle_key(struct libinput_device *device, struct libinput_event_keyboar
 
    timestamp = libinput_event_keyboard_get_time(event);
    code = libinput_event_keyboard_get_key(event);
-   code = _device_remapped_key_get(edev, code) + 8;
+   code = _device_remapped_key_get(edev, code + 8);
    state = libinput_event_keyboard_get_key_state(event);
    key_count = libinput_event_keyboard_get_seat_key_count(event);