VirtualBox

Ticket #599: write_xkb.cc

File write_xkb.cc, 2.2 KB (added by Michael Thayer, 17 years 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
9void 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
49int 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}

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy