From a7ee36c4a9e0aada84fc0364fc640956c2bb0ff8 Mon Sep 17 00:00:00 2001 From: Laurel Williams <laurel.m.williams@gmail.com> Date: Thu, 15 Mar 2018 01:58:30 -0400 Subject: [PATCH] Add built-in mobile keyboard functionality --- public/client.html | 5 ++++- public/js/client.js | 25 +++++++++++++++++++++++++ public/style/main.css | 5 +++++ server.js | 34 +++++++++++++++++++++++++++++++++- 4 files changed, 67 insertions(+), 2 deletions(-) diff --git a/public/client.html b/public/client.html index 51f8e1e..27835cd 100755 --- a/public/client.html +++ b/public/client.html @@ -23,10 +23,13 @@ </div> <div class="swiper-container"> - <div class="swiper-wrapper"> + <div class="swiper-wrapper"> <div class = "keyboard swiper-slide" id="keyboard"> </div> <div class = "numpad swiper-slide" id="numpad"> </div> <div class = "hotkeys swiper-slide" id="hotkeys"> </div> + <div class = "textfield swiper-slide" id="textfieldcontainer"> + <textarea class= "textfield" id="textfield" type="text" placeholder="Type here and press enter to send to desktop"></textarea> + </div> <div class="swiper-slide"> <div class="swiper-container-inner"> <div class="swiper-wrapper" id="custom-container"> diff --git a/public/js/client.js b/public/js/client.js index be9e02b..4c6d4a1 100755 --- a/public/js/client.js +++ b/public/js/client.js @@ -108,6 +108,31 @@ var emitUrl = function(str) { } }; +var emitText = function(text) { + if (move === false){ + console.log(text); + socket.emit('text', text); + } +}; + +$( "#textfield" ).keydown(function(event) { + if (event.key === 'Enter') { // enter + emitText(document.getElementById('textfield').value); + event.preventDefault(); + if (document.getElementById('textfield').value === '') { + socket.emit('functionality', 'enter'); + } + + document.getElementById('textfield').value = ''; + } + else if (event.key === 'Backspace' && document.getElementById('textfield').value === "") { // backspace + socket.emit('functionality', 'backspace'); + } + else if (event.key.startsWith('Arrow') && document.getElementById('textfield').value === "") { // arrow keys + socket.emit('functionality', event.key); + } +}); + //Purpose: Uses interact.js library to enable keys to move around interact('.draggable').draggable({ snap: { diff --git a/public/style/main.css b/public/style/main.css index 410ea32..887a580 100755 --- a/public/style/main.css +++ b/public/style/main.css @@ -203,6 +203,11 @@ mark { background-color: grey; float: left; } +#textfield{ + height: 100%; + width: 100%; + font-size: 30px; +} .wrapper{ height: 100%; width: 100%; diff --git a/server.js b/server.js index b189d7b..f0cdae6 100755 --- a/server.js +++ b/server.js @@ -123,9 +123,41 @@ io.on('connection', function(socket) { robot.keyTap('backspace'); } else{ - robot.typeString(str) + robot.typeString(str); } }); + + socket.on('functionality', function(type) { + console.log(type); + switch (type) { + case 'backspace': + robot.keyTap('backspace'); + break; + case 'enter': + robot.keyTap('enter'); + break; + case 'ArrowUp': + robot.keyTap('up'); + break; + case 'ArrowDown': + robot.keyTap('down'); + break; + case 'ArrowLeft': + robot.keyTap('left'); + break; + case 'ArrowRight': + robot.keyTap('right'); + break; + } + }); + + socket.on('text', function(text) { + console.log('Typing ' + text); + if (text === ' ') { + robot.keyTap('space'); + } + robot.typeString(text); + }); socket.on('saveKey', function(key) { var file = fs.readFileSync("configuration.json") -- GitLab