Wireless-X
Functions | Variables
Wireless-X_server.py File Reference

This includes the code for the server-side of Wireless-X. More...

Functions

def Wireless-X_server.bind_sockets ()
 This function establishes two sockets for receiving camera frames as well as mouse and keyboard actions. More...
 
def Wireless-X_server.mouse_keyboard_connections ()
 This function decodes the received mouse and keyboard actions and acts accordingly. More...
 
def Wireless-X_server.camera_stream_connections ()
 This function is responsible for handling the camera frames. More...
 
def Wireless-X_server.listening_connections ()
 This function is responsible for listening to connections. More...
 

Variables

 Wireless-X_server.virtualCamera = subprocess.run(["sudo", "modprobe", "v4l2loopback", "devices=1", "video_nr=20", "card_label='Wireless-X Camera'", "exclusive_caps=1"])
 Creates a virtual camera on the laptop/PC.
 
 Wireless-X_server.width
 Stores the width of the screen.
 
 Wireless-X_server.height
 Stores the height of the screen.
 
 Wireless-X_server.curr_x
 Stores the x-coordinate of the current mouse location.
 
 Wireless-X_server.curr_y
 Stores the y-coordinate of the current mouse location.
 
def Wireless-X_server.remote_x = curr_x/2
 Stores the mid of x-coordinate of current mouse location.
 
def Wireless-X_server.remote_y = curr_y/2
 Stores the mid of y-coordinate of current mouse location.
 
string Wireless-X_server.s = ''
 Socket used for receiving keyboard and mouse related actions.
 
string Wireless-X_server.cameraSocket = ''
 Socket used for receiving the camera frames of user's smartphone.
 
int Wireless-X_server.img_width = 720
 Width of the camera frame.
 
int Wireless-X_server.img_height = 480
 Height of the camera frame.
 
 Wireless-X_server.camera = pyfakewebcam.FakeWebcam('/dev/video20', img_width, img_height)
 Virtual webcam device.
 
bool Wireless-X_server.thread_run = True
 The camera and keyboard-mouse sockets receive user requests until this variable is set to 'True'.
 
 Wireless-X_server.keyboard = KeyboardController()
 Initializing the KeyboardController object.
 
 Wireless-X_server.mouse = MouseController()
 Initializing the MouseController object.
 
int Wireless-X_server.mouse_speed = 2
 Speed of mouse movement.
 
int Wireless-X_server.screenshot_count = 0
 Screenshot counter to keep track of screenshots.
 
dictionary Wireless-X_server.special_key_android_dictionary = {"F1": "F1", "F2":"F2", "F3":"F3", "F4":"F4", "F5":"F5", "F6":"F6", "F7":"F7", "F8":"F8", "F9":"F9", "F10":"F10", "F11":"F11", "F12":"F12", "Alt":"ALT", "Backspace":"BACKSPACE", "Caps\nLock":"CAPS_LOCK", "Ctrl":"CONTROL", "Delete":"DELETE", "↓":"DOWN_ARROW", "End":"END", "Esc":"ESCAPE", "Home":"HOME", "←":"LEFT_ARROW", "META":"META", "Page Down":"PAGE_DOWN", "Page Up":"PAGE_UP", "Enter":"RETURN", "→":"RIGHT_ARROW", "Shift":"SHIFT", "Space":"SPACE", "↑":"UP_ARROW", "Tab":"Tab"}
 Maps the keys in keyboard layout to the actual keyboard keys.
 

Detailed Description

This includes the code for the server-side of Wireless-X.

The server running on laptop or PC is responsible for receiving the actions performed by user on the Wireless-X android app as well as receiving the camera frames of the user's smartphone (if the user has turned) on the camera). Such actions are transmitted to the server in encoded form, the server decodes the received message and instructs the laptop or PC to perform the action described in that message.

Function Documentation

◆ bind_sockets()

def Wireless-X_server.bind_sockets ( )

This function establishes two sockets for receiving camera frames as well as mouse and keyboard actions.

This function creates a camera socket which is responsible for receiving the camera frames, and it also
creates another socket which is responsible for receiving the keyboard and mouse frames.

◆ camera_stream_connections()

def Wireless-X_server.camera_stream_connections ( )

This function is responsible for handling the camera frames.

This function uses the 'OpenCV' library to decode and resize the camera frame. Then, this frame is scheduled on 
the virtual webcam device created using 'pyfakewebcam' library.

◆ listening_connections()

def Wireless-X_server.listening_connections ( )

This function is responsible for listening to connections.

This function creates two threads corresponding to the two sockets, one for handling mouse and keyboard events 
and the other for handling camera frames received from the user's smartphone.

◆ mouse_keyboard_connections()

def Wireless-X_server.mouse_keyboard_connections ( )

This function decodes the received mouse and keyboard actions and acts accordingly.

This function checks if the message received corresponds to a mouse action (left-click, scroll, etc.) or a keyboard action 
(such as keypress). It then instructs the laptop to perform these actions, using the 'autopy' and 'pynput' libraries. Some special 
characters in keyboard are not supported by 'autopy' library, so the actions corresponding to these special characters are performed
by the 'pynput' library, other key actions are handled by the 'autopy' library. In case of mouse, the 'autopy' library was not that 
efficient, so we used the 'pynput' library.