FreeRDP
Loading...
Searching...
No Matches
RDPKeyboard Class Reference
Inheritance diagram for RDPKeyboard:
Collaboration diagram for RDPKeyboard:

Instance Methods

(void) - initWithSession:delegate:
 
(void) - reset
 
(void) - sendUnicode:
 
(void) - sendVirtualKeyCode:
 
(void) - sendVirtualKey:up:
 
(void) - toggleCtrlKey
 
(void) - toggleAltKey
 
(void) - toggleShiftKey
 
(void) - toggleWinKey
 
(void) - toggleAltGrKey
 
(void) - sendEnterKeyStroke
 
(void) - sendEscapeKeyStroke
 
(void) - sendBackspaceKeyStroke
 
(void) - sendDeleteKeyStroke
 
(void) - sendTabKeyStroke
 

Class Methods

(RDPKeyboard *) + getSharedRDPKeyboard
 

Protected Attributes

RDPSession * _session
 
int _virtual_key_map [256]
 
BOOL _virtual_key_shift_map [256]
 
NSObject< RDPKeyboardDelegate > * _delegate
 
BOOL _ctrl_pressed
 
BOOL _alt_pressed
 
BOOL _shift_pressed
 
BOOL _win_pressed
 
BOOL _altgr_pressed
 

Properties

id< RDPKeyboardDelegate > delegate
 
BOOL ctrlPressed
 
BOOL altPressed
 
BOOL shiftPressed
 
BOOL winPressed
 
BOOL altGrPressed
 

Detailed Description

Definition at line 21 of file RDPKeyboard.h.

Method Documentation

◆ getSharedRDPKeyboard

+ (RDPKeyboard *) getSharedRDPKeyboard

Definition at line 1 of file RDPKeyboard.m.

117{
118 static RDPKeyboard *_shared_keyboard = nil;
119
120 if (_shared_keyboard == nil)
121 {
122 @synchronized(self)
123 {
124 if (_shared_keyboard == nil)
125 _shared_keyboard = [[RDPKeyboard alloc] init];
126 }
127 }
128
129 return _shared_keyboard;
130}

◆ initWithSession:delegate:

- (void) initWithSession: (RDPSession *)  session
delegate: (NSObject<RDPKeyboardDelegate> *)  delegate 

Definition at line 1 of file RDPKeyboard.m.

133 :(RDPSession *)session delegate:(NSObject<RDPKeyboardDelegate> *)delegate
134{
135 _alt_pressed = NO;
136 _ctrl_pressed = NO;
137 _shift_pressed = NO;
138 _win_pressed = NO;
139 _altgr_pressed = NO;
140
141 _session = session;
142 _delegate = delegate;
143}

◆ reset

- (void) reset

Definition at line 1 of file RDPKeyboard.m.

146{
147 // reset pressed ctrl, alt, alt gr, shift or win key
148 if (_shift_pressed)
149 [self toggleShiftKey];
150 if (_alt_pressed)
151 [self toggleAltKey];
152 if (_ctrl_pressed)
153 [self toggleCtrlKey];
154 if (_win_pressed)
155 [self toggleWinKey];
156 if (_altgr_pressed)
157 [self toggleAltGrKey];
158}

◆ sendBackspaceKeyStroke

- (void) sendBackspaceKeyStroke

Definition at line 1 of file RDPKeyboard.m.

255{
256 [self sendVirtualKeyCode:VK_BACK];
257}

◆ sendDeleteKeyStroke

- (void) sendDeleteKeyStroke

Definition at line 1 of file RDPKeyboard.m.

260{
261 [self sendVirtualKeyCode:(VK_DELETE | KBDEXT)];
262}

◆ sendEnterKeyStroke

- (void) sendEnterKeyStroke

Definition at line 1 of file RDPKeyboard.m.

245{
246 [self sendVirtualKeyCode:(VK_RETURN | KBDEXT)];
247}

◆ sendEscapeKeyStroke

- (void) sendEscapeKeyStroke

Definition at line 1 of file RDPKeyboard.m.

250{
251 [self sendVirtualKeyCode:VK_ESCAPE];
252}

◆ sendTabKeyStroke

- (void) sendTabKeyStroke

Definition at line 1 of file RDPKeyboard.m.

265{
266 [self sendVirtualKeyCode:VK_TAB];
267}

◆ sendUnicode:

- (void) sendUnicode: (NSInteger)  character

Definition at line 1 of file RDPKeyboard.m.

162 :(NSInteger)character
163{
164 if ((character >= 0) && (character < 256) && isalnum((unsigned char)character))
165 [self handleAlphaNumChar:(int)character];
166 else
167 [self handleSpecialKey:character];
168
169 [self reset];
170}

◆ sendVirtualKey:up:

- (void) sendVirtualKey: (NSInteger)  vKey
up: (BOOL)  up 

Definition at line 1 of file RDPKeyboard.m.

183 :(NSInteger)vKey up:(BOOL)up
184{
185 const DWORD dvKey = WINPR_ASSERTING_INT_CAST(DWORD, vKey);
186 DWORD scancode = GetVirtualScanCodeFromVirtualKeyCode(dvKey, 4);
187 int flags = (up ? KBD_FLAGS_RELEASE : KBD_FLAGS_DOWN);
188 flags |= ((scancode & KBDEXT) ? KBD_FLAGS_EXTENDED : 0);
189 [_session
190 sendInputEvent:[NSDictionary
191 dictionaryWithObjectsAndKeys:@"keyboard", @"type", @"scancode",
192 @"subtype",
193 [NSNumber numberWithUnsignedShort:flags],
194 @"flags",
195 [NSNumber
196 numberWithUnsignedShort:(scancode &
197 0xFF)],
198 @"scancode", nil]];
199}

◆ sendVirtualKeyCode:

- (void) sendVirtualKeyCode: (NSInteger)  keyCode

Definition at line 1 of file RDPKeyboard.m.

173 :(NSInteger)keyCode
174{
175 [self sendVirtualKey:keyCode up:NO];
176 [self sendVirtualKey:keyCode up:YES];
177
178 // release modifier key
179 [self reset];
180}

◆ toggleAltGrKey

- (void) toggleAltGrKey

Definition at line 1 of file RDPKeyboard.m.

236{
237 [self sendVirtualKey:(VK_RMENU | KBDEXT) up:_altgr_pressed];
238 _altgr_pressed = !_altgr_pressed;
239 [self notifyDelegateModifiersChanged];
240}

◆ toggleAltKey

- (void) toggleAltKey

Definition at line 1 of file RDPKeyboard.m.

212{
213 [self sendVirtualKey:VK_LMENU up:_alt_pressed];
214 _alt_pressed = !_alt_pressed;
215 [self notifyDelegateModifiersChanged];
216}

◆ toggleCtrlKey

- (void) toggleCtrlKey

Definition at line 1 of file RDPKeyboard.m.

204{
205 [self sendVirtualKey:VK_LCONTROL up:_ctrl_pressed];
206 _ctrl_pressed = !_ctrl_pressed;
207 [self notifyDelegateModifiersChanged];
208}

◆ toggleShiftKey

- (void) toggleShiftKey

Definition at line 1 of file RDPKeyboard.m.

220{
221 [self sendVirtualKey:VK_LSHIFT up:_shift_pressed];
222 _shift_pressed = !_shift_pressed;
223 [self notifyDelegateModifiersChanged];
224}

◆ toggleWinKey

- (void) toggleWinKey

Definition at line 1 of file RDPKeyboard.m.

228{
229 [self sendVirtualKey:(VK_LWIN | KBDEXT) up:_win_pressed];
230 _win_pressed = !_win_pressed;
231 [self notifyDelegateModifiersChanged];
232}

Field Documentation

◆ _alt_pressed

- (BOOL) _alt_pressed
protected

Definition at line 32 of file RDPKeyboard.h.

◆ _altgr_pressed

- (BOOL) _altgr_pressed
protected

Definition at line 35 of file RDPKeyboard.h.

◆ _ctrl_pressed

- (BOOL) _ctrl_pressed
protected

Definition at line 31 of file RDPKeyboard.h.

◆ _delegate

- (NSObject<RDPKeyboardDelegate>*) _delegate
protected

Definition at line 29 of file RDPKeyboard.h.

◆ _session

- (RDPSession*) _session
protected

Definition at line 24 of file RDPKeyboard.h.

◆ _shift_pressed

- (BOOL) _shift_pressed
protected

Definition at line 33 of file RDPKeyboard.h.

◆ _virtual_key_map

- (int _virtual_key_map[256])
protected

Definition at line 26 of file RDPKeyboard.h.

◆ _virtual_key_shift_map

- (BOOL _virtual_key_shift_map[256])
protected

Definition at line 27 of file RDPKeyboard.h.

◆ _win_pressed

- (BOOL) _win_pressed
protected

Definition at line 34 of file RDPKeyboard.h.

Property Documentation

◆ altGrPressed

- (BOOL) altGrPressed
readatomicassign

Definition at line 43 of file RDPKeyboard.h.

◆ altPressed

- (BOOL) altPressed
readatomicassign

Definition at line 40 of file RDPKeyboard.h.

◆ ctrlPressed

- (BOOL) ctrlPressed
readatomicassign

Definition at line 39 of file RDPKeyboard.h.

◆ delegate

- (id<RDPKeyboardDelegate>) delegate
readwriteatomicassign

Definition at line 38 of file RDPKeyboard.h.

◆ shiftPressed

- (BOOL) shiftPressed
readatomicassign

Definition at line 41 of file RDPKeyboard.h.

◆ winPressed

- (BOOL) winPressed
readatomicassign

Definition at line 42 of file RDPKeyboard.h.


The documentation for this class was generated from the following files: