VirtualBox

Ticket #599: write_xkb.cc

File write_xkb.cc, 2.2 kB (added by michael, 10 months ago)

The source code of the previous binary

Line 
1 #include <X11/Xatom.h>
2 #include <X11/keysym.h>
3 #include <X11/Xlib.h>
4 #include <X11/Xresource.h>
5 #include <X11/Xutil.h>
6
7 #include <iostream>
8
9 void print_key(Display *display, int keyc)
10 {
11     bool was_escape = false;
12
13     for (int i = 0; i < 2; ++i)
14     {
15         int keysym = XKeycodeToKeysym (display, keyc, i);
16
17         int val = keysym & 0xff;
18         if ('\\' == val)
19         {
20             std::cout << "\\\\";
21         }
22         else if ('"' == val)
23         {
24             std::cout << "\\\"";
25         }
26         else if ((val > 32) && (val < 127))
27         {
28             if (
29                    was_escape
30                 && (
31                        ((val >= '0') && (val <= '9'))
32                     || ((val >= 'A') && (val <= 'F'))
33                     || ((val >= 'a') && (val <= 'f'))
34                    )
35                )
36             {
37                 std::cout << "\"\"";
38             }
39             std::cout << (char) val;
40         }
41         else
42         {
43             std::cout << "\\x" << std::hex << (int) val << std::dec;
44             was_escape = true;
45         }
46     }
47 }
48
49 int main()
50 {
51     Display *display = XOpenDisplay(NULL);
52     std::cout << "\"";
53     print_key(display, 49);
54     for (int i = 10; i <= 21; ++i)
55     {
56         std::cout << "\",\"";
57         print_key(display, i);
58     }
59     std::cout << "\"," << std::endl;
60     std::cout << "\"";
61     print_key(display, 24);
62     for (int i = 25; i <= 35; ++i)
63     {
64         std::cout << "\",\"";
65         print_key(display, i);
66     }
67     std::cout << "\"," << std::endl;
68     std::cout << "\"";
69     print_key(display, 38);
70     for (int i = 39; i <= 48; ++i)
71     {
72         std::cout << "\",\"";
73         print_key(display, i);
74     }
75     std::cout << "\",\"";
76     print_key(display, 51);
77     std::cout << "\"," << std::endl;
78     std::cout << "\"";
79     print_key(display, 52);
80     for (int i = 53; i <= 61; ++i)
81     {
82         std::cout << "\",\"";
83         print_key(display, i);
84     }
85     std::cout << "\",\"";
86     print_key(display, 94); /* The 102nd key */
87     std::cout << "\",\"";
88     print_key(display, 211); /* The Brazilian key */
89     std::cout << "\",\"";
90     print_key(display, 133); /* The Yen key */
91     std::cout << "\"" << std::endl;
92     return 0;
93 }
Download the file.

© 2008 Sun Microsystems, Inc.
ContactPrivacy policy