Mercurial > tablet-emu
view src/protocol.rs @ 20:f81d56c5da76 default tip
Use features to condition building binaries.
author | Emmanuel Gil Peyrot <linkmauve@linkmauve.fr> |
---|---|
date | Thu, 26 Aug 2021 23:49:52 +0200 |
parents | ba09079686a0 |
children |
line wrap: on
line source
// Tablet emulator, for people who don’t own one // Copyright © 2020 Emmanuel Gil Peyrot <linkmauve@linkmauve.fr> // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Affero General Public License for more details. // // You should have received a copy of the GNU Affero General Public License // along with this program. If not, see <https://www.gnu.org/licenses/>. use serde::{Serialize, Deserialize}; use bitflags::bitflags; bitflags! { /// This is the memory layout of the buttons on the 3DS. #[derive(Serialize, Deserialize, Default)] pub struct Buttons: u32 { const A = 0x00000001; const B = 0x00000002; const SELECT = 0x00000004; const START = 0x00000008; const RIGHT = 0x00000010; const LEFT = 0x00000020; const UP = 0x00000040; const DOWN = 0x00000080; const R = 0x00000100; const L = 0x00000200; const X = 0x00000400; const Y = 0x00000800; // Nothing // Nothing const ZL = 0x00004000; const ZR = 0x00008000; const RESIZE = 0x00010000; // Not an actual 3DS button! // Nothing // Nothing // Nothing const TOUCH = 0x00100000; // Nothing // Nothing // Nothing const C_RIGHT = 0x01000000; const C_LEFT = 0x02000000; const C_UP = 0x04000000; const C_DOWN = 0x08000000; const CIRCLE_RIGHT = 0x10000000; const CIRCLE_LEFT = 0x20000000; const CIRCLE_UP = 0x40000000; const CIRCLE_DOWN = 0x80000000; } } #[derive(Serialize, Deserialize, Debug, Default)] pub struct Event { pub buttons: Buttons, pad: (i16, i16), c_pad: (i16, i16), pub touch: (u16, u16), }