// -*- C++ -*- /** * \file key_state.h * This file is part of LyX, the document processor. * Licence details can be found in the file COPYING. * * Keyboard modifier state representation. * * \author John Levon * * Full author contact details are available in file CREDITS. */ #ifndef KEY_STATE_H #define KEY_STATE_H namespace lyx { /// modifier key states namespace key_modifier { enum state { none = 0, //< no modifiers held ctrl = 1, //< control button held alt = 2, //< alt/meta key held shift = 4 //< shift key held }; inline state operator|(state const & s1, state const & s2) { int const i1 = static_cast(s1); int const i2 = static_cast(s2); return static_cast(i1 | i2); } inline void operator|=(state & s1, state s2) { s1 = static_cast(s1 | s2); } } // namespace key_modifier } // namespace lyx #endif // KEY_STATE_H