kodi
LibInputHandler.h
1 /*
2  * Copyright (C) 2005-2018 Team Kodi
3  * This file is part of Kodi - https://kodi.tv
4  *
5  * SPDX-License-Identifier: GPL-2.0-or-later
6  * See LICENSES/README.md for more information.
7  */
8 
9 #pragma once
10 
11 #include "interfaces/IAnnouncer.h"
12 #include "threads/Thread.h"
13 
14 #include <memory>
15 #include <vector>
16 
17 #include <libinput.h>
18 #include <libudev.h>
19 
20 class CLibInputKeyboard;
21 class CLibInputPointer;
22 class CLibInputSettings;
23 class CLibInputTouch;
24 
26 {
27 public:
29  ~CLibInputHandler() override;
30 
31  void Announce(ANNOUNCEMENT::AnnouncementFlag flag,
32  const std::string& sender,
33  const std::string& message,
34  const CVariant& data) override;
35 
36  void Start();
37 
38  bool SetKeymap(const std::string& layout);
39 
40 private:
41  void Process() override;
42  void ProcessEvent(libinput_event *ev);
43  void DeviceAdded(libinput_device *dev);
44  void DeviceRemoved(libinput_device *dev);
45 
46  udev *m_udev;
47  libinput *m_li;
48  int m_liFd;
49 
50  std::unique_ptr<CLibInputKeyboard> m_keyboard;
51  std::unique_ptr<CLibInputPointer> m_pointer;
52  std::unique_ptr<CLibInputSettings> m_settings;
53  std::unique_ptr<CLibInputTouch> m_touch;
54  std::vector<libinput_device*> m_devices;
55 };
56 
Definition: LibInputSettings.h:19
Definition: LibInputKeyboard.h:22
Definition: Thread.h:44
Definition: LibInputPointer.h:19
Definition: IAnnouncer.h:70
Definition: LibInputTouch.h:21
Definition: Variant.h:31
Definition: LibInputHandler.h:25