00001
00002
00003
00004
00005
00006
00007
00008
00009 #include "KeyStroke.h"
00010
00011 #include "StringTool.h"
00012
00013
00014
00015
00016
00017 KeyStroke::KeyStroke(const SDL_keysym &keysym)
00018 {
00019 m_sym = keysym.sym;
00020 m_mod = modStrip(keysym.mod);
00021 m_unicode = keysym.unicode;
00022 }
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032 KeyStroke::KeyStroke(SDLKey sym, int mod)
00033 {
00034 m_sym = sym;
00035 m_mod = modStrip(mod);
00036 m_unicode = 0;
00037 }
00038
00039
00040
00041
00042
00043 int
00044 KeyStroke::modStrip(int mod)
00045 {
00046 return mod & ~STROKE_IGNORE;
00047 }
00048
00049
00050
00051
00052
00053
00054
00055 bool
00056 KeyStroke::less(const KeyStroke &other) const
00057 {
00058 bool result = m_sym < other.m_sym;
00059 if (m_sym == other.m_sym) {
00060 result = m_mod < other.m_mod;
00061 }
00062 return result;
00063 }
00064
00065
00066
00067
00068
00069
00070
00071
00072 bool
00073 KeyStroke::equals(const KeyStroke &other) const
00074 {
00075 return m_sym == other.m_sym &&
00076 m_mod == other.m_mod;
00077 }
00078
00079
00080
00081
00082 std::string
00083 KeyStroke::toString() const
00084 {
00085 std::string result = SDL_GetKeyName(m_sym);
00086 result.append("+" + StringTool::toString(m_mod));
00087 return result;
00088 }
00089