]> git.lyx.org Git - lyx.git/blob - src/frontends/gtk/GLyXKeySym.C
fix change log format
[lyx.git] / src / frontends / gtk / GLyXKeySym.C
1 /**
2  * \file GLyXKeySym.C
3  * This file is part of LyX, the document processor.
4  * Licence details can be found in the file COPYING.
5  *
6  * \author Huang Ying
7  *
8  * Full author contact details are available in file CREDITS
9  */
10
11 #include <config.h>
12 #include <gtkmm.h>
13
14 #include <gdk/gdkkeysyms.h>
15 #include "GLyXKeySym.h"
16
17
18 GLyXKeySym::GLyXKeySym() : keyval_(GDK_VoidSymbol)
19 {
20 }
21
22
23 GLyXKeySym::GLyXKeySym(unsigned int keyval) : keyval_(keyval)
24 {
25 }
26
27
28 void GLyXKeySym::setKeyval(unsigned int keyval)
29 {
30         keyval_ = keyval;
31 }
32
33
34 void GLyXKeySym::init(string const & symbolname)
35 {
36         keyval_ = gdk_keyval_from_name(symbolname.c_str());
37 }
38
39
40 bool GLyXKeySym::isOK() const
41 {
42         return keyval_ != GDK_VoidSymbol;
43 }
44
45
46 bool GLyXKeySym::isModifier() const
47 {
48         return ((keyval_ >= GDK_Shift_L && keyval_ <= GDK_Hyper_R)
49                 || keyval_ == GDK_Mode_switch || keyval_ == 0);
50 }
51
52
53 string GLyXKeySym::getSymbolName() const
54 {
55         const char * name = gdk_keyval_name(keyval_);
56         return name ? name : string();
57 }
58
59
60 char GLyXKeySym::getISOEncoded(string const & /*encoding*/) const
61 {
62         if (keyval_ == GDK_VoidSymbol)
63                 return 0;
64
65         unsigned int c = keyval_;
66
67         switch (c & 0x0000FF00) {
68                 // latin 1 byte 3 = 0
69         case 0x00000000: break;
70                 // latin 2 byte 3 = 1
71         case 0x00000100:
72                 // latin 3 byte 3 = 2
73         case 0x00000200:
74                 // latin 4 byte 3 = 3
75         case 0x00000300:
76                 // cyrillic KOI8 & Co
77         case 0x00000600:
78                 // greek
79         case 0x00000700:
80                 // latin 8 byte 3 = 18 (0x12)
81         case 0x00001200:
82                 // latin 9 byte 3 = 19 (0x13)
83         case 0x00001300:
84                 c &= 0x000000FF;
85                 break;
86         default:
87                 c = 0;
88         }
89         return c;
90 }
91
92
93 bool operator==(LyXKeySym const & k1, LyXKeySym const & k2)
94 {
95         return static_cast<GLyXKeySym const &>(k1).getKeyval()
96                 == static_cast<GLyXKeySym const &>(k2).getKeyval();
97 }