types.hh revision 12660
112660Sandreas.sandberg@arm.com/* 212660Sandreas.sandberg@arm.com * Copyright (c) 2011, 2018 ARM Limited 312660Sandreas.sandberg@arm.com * All rights reserved 412660Sandreas.sandberg@arm.com * 512660Sandreas.sandberg@arm.com * The license below extends only to copyright in the software and shall 612660Sandreas.sandberg@arm.com * not be construed as granting a license to any other intellectual 712660Sandreas.sandberg@arm.com * property including but not limited to intellectual property relating 812660Sandreas.sandberg@arm.com * to a hardware implementation of the functionality of the software 912660Sandreas.sandberg@arm.com * licensed hereunder. You may use the software subject to the license 1012660Sandreas.sandberg@arm.com * terms below provided that you ensure that this notice is replicated 1112660Sandreas.sandberg@arm.com * unmodified and in its entirety in all distributions of the software, 1212660Sandreas.sandberg@arm.com * modified or unmodified, in source code or in binary form. 1312660Sandreas.sandberg@arm.com * 1412660Sandreas.sandberg@arm.com * Redistribution and use in source and binary forms, with or without 1512660Sandreas.sandberg@arm.com * modification, are permitted provided that the following conditions are 1612660Sandreas.sandberg@arm.com * met: redistributions of source code must retain the above copyright 1712660Sandreas.sandberg@arm.com * notice, this list of conditions and the following disclaimer; 1812660Sandreas.sandberg@arm.com * redistributions in binary form must reproduce the above copyright 1912660Sandreas.sandberg@arm.com * notice, this list of conditions and the following disclaimer in the 2012660Sandreas.sandberg@arm.com * documentation and/or other materials provided with the distribution; 2112660Sandreas.sandberg@arm.com * neither the name of the copyright holders nor the names of its 2212660Sandreas.sandberg@arm.com * contributors may be used to endorse or promote products derived from 2312660Sandreas.sandberg@arm.com * this software without specific prior written permission. 2412660Sandreas.sandberg@arm.com * 2512660Sandreas.sandberg@arm.com * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 2612660Sandreas.sandberg@arm.com * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 2712660Sandreas.sandberg@arm.com * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 2812660Sandreas.sandberg@arm.com * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 2912660Sandreas.sandberg@arm.com * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 3012660Sandreas.sandberg@arm.com * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 3112660Sandreas.sandberg@arm.com * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 3212660Sandreas.sandberg@arm.com * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 3312660Sandreas.sandberg@arm.com * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 3412660Sandreas.sandberg@arm.com * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 3512660Sandreas.sandberg@arm.com * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 3612660Sandreas.sandberg@arm.com * 3712660Sandreas.sandberg@arm.com * Authors: Ali Saidi 3812660Sandreas.sandberg@arm.com */ 3912660Sandreas.sandberg@arm.com 4012660Sandreas.sandberg@arm.com#ifndef __DEV_PS2_HH__ 4112660Sandreas.sandberg@arm.com#define __DEV_PS2_HH__ 4212660Sandreas.sandberg@arm.com 4312660Sandreas.sandberg@arm.com#include <stdint.h> 4412660Sandreas.sandberg@arm.com 4512660Sandreas.sandberg@arm.com#include <list> 4612660Sandreas.sandberg@arm.com#include <vector> 4712660Sandreas.sandberg@arm.com 4812660Sandreas.sandberg@arm.com#include "base/bitunion.hh" 4912660Sandreas.sandberg@arm.com 5012660Sandreas.sandberg@arm.com/** @file misc functions and constants required to interface with or 5112660Sandreas.sandberg@arm.com * emulate ps2 devices 5212660Sandreas.sandberg@arm.com */ 5312660Sandreas.sandberg@arm.com 5412660Sandreas.sandberg@arm.comnamespace Ps2 { 5512660Sandreas.sandberg@arm.com 5612660Sandreas.sandberg@arm.comenum { 5712660Sandreas.sandberg@arm.com SelfTestPass = 0xAA, 5812660Sandreas.sandberg@arm.com ReadID = 0xF2, 5912660Sandreas.sandberg@arm.com Enable = 0xF4, 6012660Sandreas.sandberg@arm.com Disable = 0xF5, 6112660Sandreas.sandberg@arm.com DefaultsAndDisable = 0xF6, 6212660Sandreas.sandberg@arm.com SelfTestFail = 0xFC, 6312660Sandreas.sandberg@arm.com Ack = 0xFA, 6412660Sandreas.sandberg@arm.com Resend = 0xFE, 6512660Sandreas.sandberg@arm.com Reset = 0xFF, 6612660Sandreas.sandberg@arm.com}; 6712660Sandreas.sandberg@arm.com 6812660Sandreas.sandberg@arm.comnamespace Keyboard { 6912660Sandreas.sandberg@arm.com 7012660Sandreas.sandberg@arm.comenum { 7112660Sandreas.sandberg@arm.com LEDWrite = 0xED, 7212660Sandreas.sandberg@arm.com DiagnosticEcho = 0xEE, 7312660Sandreas.sandberg@arm.com AlternateScanCodes = 0xF0, 7412660Sandreas.sandberg@arm.com TypematicInfo = 0xF3, 7512660Sandreas.sandberg@arm.com AllKeysToTypematic = 0xF7, 7612660Sandreas.sandberg@arm.com AllKeysToMakeRelease = 0xF8, 7712660Sandreas.sandberg@arm.com AllKeysToMake = 0xF9, 7812660Sandreas.sandberg@arm.com AllKeysToTypematicMakeRelease = 0xFA, 7912660Sandreas.sandberg@arm.com KeyToTypematic = 0xFB, 8012660Sandreas.sandberg@arm.com KeyToMakeRelease = 0xFC, 8112660Sandreas.sandberg@arm.com KeyToMakeOnly = 0xFD, 8212660Sandreas.sandberg@arm.com}; 8312660Sandreas.sandberg@arm.com 8412660Sandreas.sandberg@arm.comextern const std::vector<uint8_t> ID; 8512660Sandreas.sandberg@arm.com 8612660Sandreas.sandberg@arm.com}; 8712660Sandreas.sandberg@arm.com 8812660Sandreas.sandberg@arm.comnamespace Mouse { 8912660Sandreas.sandberg@arm.com 9012660Sandreas.sandberg@arm.comenum { 9112660Sandreas.sandberg@arm.com Scale1to1 = 0xE6, 9212660Sandreas.sandberg@arm.com Scale2to1 = 0xE7, 9312660Sandreas.sandberg@arm.com SetResolution = 0xE8, 9412660Sandreas.sandberg@arm.com GetStatus = 0xE9, 9512660Sandreas.sandberg@arm.com ReadData = 0xEB, 9612660Sandreas.sandberg@arm.com ResetWrapMode = 0xEC, 9712660Sandreas.sandberg@arm.com WrapMode = 0xEE, 9812660Sandreas.sandberg@arm.com RemoteMode = 0xF0, 9912660Sandreas.sandberg@arm.com SampleRate = 0xF3, 10012660Sandreas.sandberg@arm.com}; 10112660Sandreas.sandberg@arm.com 10212660Sandreas.sandberg@arm.comextern const std::vector<uint8_t> ID; 10312660Sandreas.sandberg@arm.com 10412660Sandreas.sandberg@arm.com}; 10512660Sandreas.sandberg@arm.com 10612660Sandreas.sandberg@arm.com/** A bitfield that represents the first byte of a mouse movement packet 10712660Sandreas.sandberg@arm.com */ 10812660Sandreas.sandberg@arm.comBitUnion8(Ps2MouseMovement) 10912660Sandreas.sandberg@arm.com Bitfield<0> leftButton; 11012660Sandreas.sandberg@arm.com Bitfield<1> rightButton; 11112660Sandreas.sandberg@arm.com Bitfield<2> middleButton; 11212660Sandreas.sandberg@arm.com Bitfield<3> one; 11312660Sandreas.sandberg@arm.com Bitfield<4> xSign; 11412660Sandreas.sandberg@arm.com Bitfield<5> ySign; 11512660Sandreas.sandberg@arm.com Bitfield<6> xOverflow; 11612660Sandreas.sandberg@arm.com Bitfield<7> yOverflow; 11712660Sandreas.sandberg@arm.comEndBitUnion(Ps2MouseMovement) 11812660Sandreas.sandberg@arm.com 11912660Sandreas.sandberg@arm.com/** Convert an x11 key symbol into a set of ps2 charecters. 12012660Sandreas.sandberg@arm.com * @param key x11 key symbol 12112660Sandreas.sandberg@arm.com * @param down if the key is being pressed or released 12212660Sandreas.sandberg@arm.com * @param cur_shift if device has already sent a shift 12312660Sandreas.sandberg@arm.com * @param keys list of keys command to send to emulate the x11 key symbol 12412660Sandreas.sandberg@arm.com */ 12512660Sandreas.sandberg@arm.comvoid keySymToPs2(uint32_t key, bool down, bool &cur_shift, 12612660Sandreas.sandberg@arm.com std::list<uint8_t> &keys); 12712660Sandreas.sandberg@arm.com 12812660Sandreas.sandberg@arm.com} /* namespace Ps2 */ 12912660Sandreas.sandberg@arm.com#endif // __DEV_PS2_HH__ 130