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) - sendEnterKeyStroke
 
(void) - sendEscapeKeyStroke
 
(void) - sendBackspaceKeyStroke
 

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
 

Properties

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

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
140 _session = session;
141 _delegate = delegate;
142}

◆ reset

- (void) reset

Definition at line 1 of file RDPKeyboard.m.

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

◆ sendBackspaceKeyStroke

- (void) sendBackspaceKeyStroke

Definition at line 1 of file RDPKeyboard.m.

241{
242 [self sendVirtualKeyCode:VK_BACK];
243}

◆ sendEnterKeyStroke

- (void) sendEnterKeyStroke

Definition at line 1 of file RDPKeyboard.m.

231{
232 [self sendVirtualKeyCode:(VK_RETURN | KBDEXT)];
233}

◆ sendEscapeKeyStroke

- (void) sendEscapeKeyStroke

Definition at line 1 of file RDPKeyboard.m.

236{
237 [self sendVirtualKeyCode:VK_ESCAPE];
238}

◆ sendUnicode:

- (void) sendUnicode: (NSInteger)  character

Definition at line 1 of file RDPKeyboard.m.

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

◆ sendVirtualKey:up:

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

Definition at line 1 of file RDPKeyboard.m.

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

◆ sendVirtualKeyCode:

- (void) sendVirtualKeyCode: (NSInteger)  keyCode

Definition at line 1 of file RDPKeyboard.m.

170 :(NSInteger)keyCode
171{
172 [self sendVirtualKey:keyCode up:NO];
173 [self sendVirtualKey:keyCode up:YES];
174}

◆ toggleAltKey

- (void) toggleAltKey

Definition at line 1 of file RDPKeyboard.m.

206{
207 [self sendVirtualKey:VK_LMENU up:_alt_pressed];
208 _alt_pressed = !_alt_pressed;
209 [self notifyDelegateModifiersChanged];
210}

◆ toggleCtrlKey

- (void) toggleCtrlKey

Definition at line 1 of file RDPKeyboard.m.

198{
199 [self sendVirtualKey:VK_LCONTROL up:_ctrl_pressed];
200 _ctrl_pressed = !_ctrl_pressed;
201 [self notifyDelegateModifiersChanged];
202}

◆ toggleShiftKey

- (void) toggleShiftKey

Definition at line 1 of file RDPKeyboard.m.

214{
215 [self sendVirtualKey:VK_LSHIFT up:_shift_pressed];
216 _shift_pressed = !_shift_pressed;
217 [self notifyDelegateModifiersChanged];
218}

◆ toggleWinKey

- (void) toggleWinKey

Definition at line 1 of file RDPKeyboard.m.

222{
223 [self sendVirtualKey:(VK_LWIN | KBDEXT) up:_win_pressed];
224 _win_pressed = !_win_pressed;
225 [self notifyDelegateModifiersChanged];
226}

Field Documentation

◆ _alt_pressed

- (BOOL) _alt_pressed
protected

Definition at line 32 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

◆ altPressed

- (BOOL) altPressed
readatomicassign

Definition at line 39 of file RDPKeyboard.h.

◆ ctrlPressed

- (BOOL) ctrlPressed
readatomicassign

Definition at line 38 of file RDPKeyboard.h.

◆ delegate

- (id<RDPKeyboardDelegate>) delegate
readwriteatomicassign

Definition at line 37 of file RDPKeyboard.h.

◆ shiftPressed

- (BOOL) shiftPressed
readatomicassign

Definition at line 40 of file RDPKeyboard.h.

◆ winPressed

- (BOOL) winPressed
readatomicassign

Definition at line 41 of file RDPKeyboard.h.


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