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< RDPKeyboardDelegatedelegate
 
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.

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

◆ sendEnterKeyStroke

- (void) sendEnterKeyStroke

Definition at line 1 of file RDPKeyboard.m.

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

◆ sendEscapeKeyStroke

- (void) sendEscapeKeyStroke

Definition at line 1 of file RDPKeyboard.m.

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

◆ sendUnicode:

- (void) sendUnicode: (int)  character

Definition at line 1 of file RDPKeyboard.m.

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

◆ sendVirtualKey:up:

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

Definition at line 1 of file RDPKeyboard.m.

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

◆ sendVirtualKeyCode:

- (void) sendVirtualKeyCode: (int)  keyCode

Definition at line 1 of file RDPKeyboard.m.

170 :(int)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.

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

◆ toggleCtrlKey

- (void) toggleCtrlKey

Definition at line 1 of file RDPKeyboard.m.

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

◆ toggleShiftKey

- (void) toggleShiftKey

Definition at line 1 of file RDPKeyboard.m.

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

◆ toggleWinKey

- (void) toggleWinKey

Definition at line 1 of file RDPKeyboard.m.

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

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: