1 /******************************************************************** 2 Copyright © 2020 Roman Gilg <subdiff@gmail.com> 3 4 This library is free software; you can redistribute it and/or 5 modify it under the terms of the GNU Lesser General Public 6 License as published by the Free Software Foundation; either 7 version 2.1 of the License, or (at your option) version 3, or any 8 later version accepted by the membership of KDE e.V. (or its 9 successor approved by the membership of KDE e.V.), which shall 10 act as a proxy defined in Section 6 of version 3 of the license. 11 12 This library is distributed in the hope that it will be useful, 13 but WITHOUT ANY WARRANTY; without even the implied warranty of 14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15 Lesser General Public License for more details. 16 17 You should have received a copy of the GNU Lesser General Public 18 License along with this library. If not, see <http://www.gnu.org/licenses/>. 19 *********************************************************************/ 20 #pragma once 21 22 #include <QObject> 23 24 #include <Wrapland/Server/wraplandserver_export.h> 25 26 #include <string> 27 28 namespace Wrapland::Server 29 { 30 class Client; 31 class Seat; 32 33 class Surface; 34 35 class WRAPLANDSERVER_EXPORT Keyboard : public QObject 36 { 37 Q_OBJECT 38 public: 39 Client* client() const; 40 Surface* focusedSurface() const; 41 42 Q_SIGNALS: 43 void resourceDestroyed(); 44 45 private: 46 void setFocusedSurface(quint32 serial, Surface* surface); 47 void setKeymap(std::string const& content); 48 void updateModifiers(quint32 serial, 49 quint32 depressed, 50 quint32 latched, 51 quint32 locked, 52 quint32 group); 53 void keyPressed(quint32 serial, quint32 key); 54 void keyReleased(quint32 serial, quint32 key); 55 void repeatInfo(qint32 charactersPerSecond, qint32 delay); 56 57 friend class Seat; 58 friend class keyboard_pool; 59 Keyboard(Client* client, uint32_t version, uint32_t id, Seat* seat); 60 61 class Private; 62 Private* d_ptr; 63 }; 64 65 } 66 67 Q_DECLARE_METATYPE(Wrapland::Server::Keyboard*) 68