cgv
shortcut.h
1 #pragma once
2 
3 #include <string>
4 #include <iostream>
5 #include "lib_begin.h"
6 
7 namespace cgv {
8  namespace gui {
9 
11 enum Keys {
12  KEY_F1 = 256,
24 
32 
41 
50 
54 
58 
75 
76  KEY_Last
77 };
78 
80 extern CGV_API std::string get_key_string(unsigned short key);
81 
83 class CGV_API shortcut
84 {
85 protected:
87  unsigned short key;
89  unsigned char modifiers;
90 public:
92  shortcut(unsigned short _key = 0, unsigned char _mod = 0);
94  void stream_out(std::ostream& os) const;
96  bool stream_in(std::istream& is);
98  unsigned short get_key() const { return key; }
100  unsigned char get_modifiers() const { return modifiers; }
102  void set_key(unsigned short _key) { key = _key; }
104  void set_modifiers(unsigned char _modifiers) { modifiers = _modifiers; }
106  void validate();
107 };
108 
110 extern CGV_API std::ostream& operator << (std::ostream& os, const shortcut& sc);
111 
113 extern CGV_API std::istream& operator >> (std::istream& is, shortcut& sc);
114 
115  }
116 }
117 
118 #include <cgv/config/lib_end.h>
cgv::gui::KEY_Num_Div
@ KEY_Num_Div
num pad key /
Definition: shortcut.h:69
cgv::gui::KEY_Up
@ KEY_Up
up arrow key
Definition: shortcut.h:44
cgv::gui::KEY_F1
@ KEY_F1
F1 key.
Definition: shortcut.h:12
cgv::gui::KEY_Num_6
@ KEY_Num_6
num pad key 6
Definition: shortcut.h:65
cgv::gui::KEY_Enter
@ KEY_Enter
enter key
Definition: shortcut.h:26
cgv::gui::KEY_Left
@ KEY_Left
left arrow key
Definition: shortcut.h:42
cgv::gui::KEY_Right_Meta
@ KEY_Right_Meta
right meta key
Definition: shortcut.h:40
cgv::gui::KEY_F10
@ KEY_F10
F10 key.
Definition: shortcut.h:21
cgv::gui::KEY_Right_Ctrl
@ KEY_Right_Ctrl
right ctrl key
Definition: shortcut.h:38
cgv::gui::KEY_Page_Down
@ KEY_Page_Down
page down key
Definition: shortcut.h:49
cgv::gui::KEY_F12
@ KEY_F12
F12 key.
Definition: shortcut.h:23
cgv::gui::KEY_Num_2
@ KEY_Num_2
num pad key 2
Definition: shortcut.h:61
cgv::gui::KEY_Right_Shift
@ KEY_Right_Shift
right shift key
Definition: shortcut.h:34
cgv::gui::get_key_string
std::string get_key_string(unsigned short key)
convert a key code into a readable string
Definition: shortcut.cxx:70
cgv::gui::shortcut::set_key
void set_key(unsigned short _key)
set the key
Definition: shortcut.h:102
cgv::gui::KEY_End
@ KEY_End
end key
Definition: shortcut.h:47
cgv::gui::KEY_Num_8
@ KEY_Num_8
num pad key 8
Definition: shortcut.h:67
cgv::gui::KEY_Num_3
@ KEY_Num_3
num pad key 3
Definition: shortcut.h:62
cgv::gui::KEY_Left_Ctrl
@ KEY_Left_Ctrl
left ctrl key
Definition: shortcut.h:37
cgv::gui::KEY_Num_Dot
@ KEY_Num_Dot
num pad key .
Definition: shortcut.h:73
cgv::gui::KEY_Back_Space
@ KEY_Back_Space
back space key
Definition: shortcut.h:51
cgv::gui::KEY_Num_5
@ KEY_Num_5
num pad key 5
Definition: shortcut.h:64
cgv::gui::shortcut::get_modifiers
unsigned char get_modifiers() const
return the modifier set
Definition: shortcut.h:100
cgv::gui::KEY_Num_1
@ KEY_Num_1
num pad key 1
Definition: shortcut.h:60
cgv::gui::KEY_Num_Enter
@ KEY_Num_Enter
num pad enter key
Definition: shortcut.h:74
cgv::gui::KEY_Insert
@ KEY_Insert
insert key
Definition: shortcut.h:53
cgv::gui::KEY_Break
@ KEY_Break
break key
Definition: shortcut.h:30
cgv::gui::shortcut::set_modifiers
void set_modifiers(unsigned char _modifiers)
set the modifier set
Definition: shortcut.h:104
cgv::gui::KEY_Page_Up
@ KEY_Page_Up
page up key
Definition: shortcut.h:48
cgv::gui::KEY_Scroll_Lock
@ KEY_Scroll_Lock
scroll lock key
Definition: shortcut.h:57
cgv::gui::KEY_Right_Alt
@ KEY_Right_Alt
right alt key
Definition: shortcut.h:36
cgv::gui::KEY_F6
@ KEY_F6
F6 key.
Definition: shortcut.h:17
cgv::gui::KEY_F9
@ KEY_F9
F9 key.
Definition: shortcut.h:20
cgv::gui::KEY_Left_Shift
@ KEY_Left_Shift
left shift key
Definition: shortcut.h:33
cgv::gui::KEY_Escape
@ KEY_Escape
escape key
Definition: shortcut.h:31
cgv::gui::KEY_Pause
@ KEY_Pause
pause key
Definition: shortcut.h:29
cgv::gui::KEY_Num_Sub
@ KEY_Num_Sub
num pad key -
Definition: shortcut.h:71
cgv::gui::KEY_F7
@ KEY_F7
F7 key.
Definition: shortcut.h:18
cgv::gui::KEY_Num_4
@ KEY_Num_4
num pad key 4
Definition: shortcut.h:63
cgv::gui::KEY_F4
@ KEY_F4
F4 key.
Definition: shortcut.h:15
cgv::gui::KEY_Right
@ KEY_Right
right arrow key
Definition: shortcut.h:43
cgv::gui::KEY_Left_Alt
@ KEY_Left_Alt
left alt key
Definition: shortcut.h:35
cgv::gui::KEY_F8
@ KEY_F8
F8 key.
Definition: shortcut.h:19
cgv::gui::KEY_Down
@ KEY_Down
down arrow key
Definition: shortcut.h:45
cgv::gui::Keys
Keys
define the names of special keys
Definition: shortcut.h:11
cgv::gui::KEY_Num_9
@ KEY_Num_9
num pad key 9
Definition: shortcut.h:68
cgv::gui::KEY_F3
@ KEY_F3
F3 key.
Definition: shortcut.h:14
cgv::gui::KEY_Space
@ KEY_Space
space key
Definition: shortcut.h:25
cgv::gui::KEY_Delete
@ KEY_Delete
delete key
Definition: shortcut.h:52
cgv::gui::KEY_Left_Meta
@ KEY_Left_Meta
left meta key
Definition: shortcut.h:39
cgv::gui::KEY_Num_0
@ KEY_Num_0
num pad key 0
Definition: shortcut.h:59
cgv::gui::shortcut::get_key
unsigned short get_key() const
return the key
Definition: shortcut.h:98
cgv::gui::KEY_F11
@ KEY_F11
F11 key.
Definition: shortcut.h:22
cgv::gui::KEY_Home
@ KEY_Home
home key
Definition: shortcut.h:46
cgv::gui::KEY_Num_Add
@ KEY_Num_Add
num pad key +
Definition: shortcut.h:72
cgv::gui::KEY_Caps_Lock
@ KEY_Caps_Lock
caps lock key
Definition: shortcut.h:55
cgv::gui::KEY_F5
@ KEY_F5
F5 key.
Definition: shortcut.h:16
cgv::gui::KEY_Num_Mul
@ KEY_Num_Mul
num pad key *
Definition: shortcut.h:70
cgv::gui::KEY_Num_7
@ KEY_Num_7
num pad key 7
Definition: shortcut.h:66
cgv::gui::KEY_F2
@ KEY_F2
F2 key.
Definition: shortcut.h:13
cgv::gui::shortcut
the shortcut class encapsulates a key with modifiers
Definition: shortcut.h:84
cgv
the cgv namespace
Definition: vr_calib.cxx:9
cgv::gui::KEY_Tab
@ KEY_Tab
tab key
Definition: shortcut.h:27
cgv::gui::operator<<
std::ostream & operator<<(std::ostream &os, const shortcut &sc)
stream a shortcut as text to an output stream
Definition: shortcut.cxx:198
cgv::gui::KEY_Print
@ KEY_Print
print key
Definition: shortcut.h:28
cgv::gui::operator>>
std::istream & operator>>(std::istream &is, shortcut &sc)
stream in a shortcut from an input stream
Definition: shortcut.cxx:205
cgv::gui::KEY_Num_Lock
@ KEY_Num_Lock
num lock key
Definition: shortcut.h:56