| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
Stream Deck-like keyboard shortcut controller - Mobile control over local network
Local Desk transforms your mobile device (iOS/Android) into a wireless shortcut controller for your desktop computer. With a Stream Deck-like interface, you can easily trigger keyboard shortcuts for OBS, video editing, game streaming, and general productivity.
┌─────────────────┐ ┌─────────────────┐ │ │ │ │ │ 📱 Mobile App │ ←──── WiFi ────→ │ 🖥️ Desktop │ │ React Native │ │ Electron │ │ │ │ │ │ • Discovery │ │ • HTTP Server │ │ • Socket.IO │ │ • Socket.IO │ │ • Button Grid │ │ • C++ Addon │ │ │ │ • SendInput │ └─────────────────┘ └─────────────────┘
LocalDesk/
├── desktop/ # Electron desktop application
│ ├── main.js # Electron main process
│ ├── preload.js # IPC bridge
│ ├── server/ # Node.js backend
│ │ ├── index.js # Socket.IO server
│ │ ├── discovery.js # UDP + mDNS
│ │ └── keyboard-addon/ # C++ SendInput module
│ └── ui/ # HTML/CSS/JS interface
│
└── LocalDesk/ # React Native mobile app
├── App.jsx # Main application
└── src/
├── hooks/ # Custom hooks
├── components/ # UI components
└── screens/ # Screens
Desktop:
Mobile:
cd desktop
# Install dependencies
npm install
# Build C++ Addon
cd server/keyboard-addon
npm install
cd ../..
# Or directly
npm run rebuild
# Start the application
npm startcd LocalDesk
# Install dependencies
npm install
# For iOS
cd ios && pod install && cd ..
npm run ios
# For Android
npm run android{
"label": "Start/Stop Recording",
"keys": ["CONTROL", "ALT", "R"],
"color": "#f44336"
}{
"label": "Render",
"keys": ["CONTROL", "M"],
"color": "#9c27b0"
}{
"label": "Discord Mute",
"keys": ["CONTROL", "SHIFT", "M"],
"color": "#5865F2"
}{
"label": "Screenshot",
"keys": ["WIN", "SHIFT", "S"],
"color": "#00C853"
}desktop/server/data/ ├── config.json # Device settings ├── shortcuts.json # Shortcut list ├── trusted.json # Trusted devices └── icons/ # Custom icons
Desktop:
NODE_ENV=development npm start
# DevTools opens automaticallyMobile:
npm start -- --reset-cache
# Shake device > Debugcd desktop/server/keyboard-addon
npm run rebuildRequest (Broadcast):
LOCALDESK_DISCOVER_REQUEST
Response:
{
"type": "LOCALDESK_DISCOVER_RESPONSE",
"deviceId": "desktop-uuid-here",
"deviceName": "Desktop-PC",
"deviceType": "desktop",
"port": 3100,
"timestamp": 1234567890
}Pairing:
// Client → Server
emit('pair-request', {
deviceId: 'mobile-xxx',
deviceName: 'iPhone 15',
deviceType: 'ios'
})
// Server → Client
emit('pair-response', {
success: true,
message: 'Pairing approved'
})Execute Shortcut:
// Client → Server
emit('execute-shortcut', {
shortcutId: 1,
keys: ['CONTROL', 'ALT', 'O']
})
// Server → Client
emit('execute-result', {
success: true,
shortcutId: 1
})Synchronization:
// Server → Client
emit('shortcuts-update', [
{ id: 1, label: '...', keys: [...], color: '...' }
])Add icons to desktop/server/data/icons/ folder:
{
"label": "OBS",
"icon": "obs.png",
"keys": ["CONTROL", "ALT", "O"],
"color": "#1F6FEB"
}For desktop UI desktop/ui/style.css:
:root {
--bg-primary: #1e1e1e;
--accent-blue: #1F6FEB;
/* ... */
}For mobile UI LocalDesk/src/components/ButtonGrid.jsx:
const styles = StyleSheet.create({
button: {
backgroundColor: '#252526',
// ...
}
});MIT License - See LICENSE file for details
|
Harun Selçuk Çetin 🔗 LinkedIn • ▶️ YouTube |
⭐ If you liked the project, don't forget to give it a star!
| Back | FazBrowse Home | New Git URL |