/** * Injectable Controls Script * * This script is injected into every page loaded in the browser to provide * global keyboard and mouse controls that work on all domains. * * Only includes essential controls that can work cross-origin: * - Navigation (back/forward) * - Mouse navigation buttons * * Zoom controls are handled natively by the GTK backend */ (function() { 'use strict'; // Prevent multiple injections with a unique timestamp const injectionId = '__dumberControlsInjected_' + Date.now(); if ((window as any).__dumberControlsInjected) { console.log('๐Ÿ”„ Dumber Browser controls already injected, skipping'); return; } (window as any).__dumberControlsInjected = injectionId; console.log('๐Ÿš€ Dumber Browser controls injected on:', window.location.href); // Keyboard event handler for global controls function handleKeyboardEvent(event: KeyboardEvent): void { const { ctrlKey, metaKey, shiftKey, altKey, key } = event; const isCmd = ctrlKey || metaKey; try { // Navigation: Alt + Left Arrow (Back) if (altKey && key === 'ArrowLeft') { event.preventDefault(); event.stopPropagation(); if (window.history.length > 1) { console.log('โฌ…๏ธ Navigating back'); window.history.back(); } return; } // Navigation: Alt + Right Arrow (Forward) if (altKey && key === 'ArrowRight') { event.preventDefault(); event.stopPropagation(); console.log('โžก๏ธ Navigating forward'); window.history.forward(); return; } } catch (error) { console.error('โŒ Error in keyboard handler:', error); } } // Mouse event handler for navigation buttons function handleMouseEvent(event: MouseEvent): void { try { // Mouse button 3 (back button) if (event.button === 3) { event.preventDefault(); event.stopPropagation(); if (window.history.length > 1) { console.log('โฌ…๏ธ Mouse back button pressed'); window.history.back(); } return; } // Mouse button 4 (forward button) if (event.button === 4) { event.preventDefault(); event.stopPropagation(); console.log('โžก๏ธ Mouse forward button pressed'); window.history.forward(); return; } } catch (error) { console.error('โŒ Error in mouse handler:', error); } } // Add event listeners with high priority (capture phase) try { document.addEventListener('keydown', handleKeyboardEvent, true); document.addEventListener('mousedown', handleMouseEvent, true); console.log('โœ… Dumber Browser global controls active'); // Cleanup function for when page is unloaded window.addEventListener('beforeunload', () => { document.removeEventListener('keydown', handleKeyboardEvent, true); document.removeEventListener('mousedown', handleMouseEvent, true); console.log('๐Ÿงน Dumber Browser controls cleaned up'); }); } catch (error) { console.error('โŒ Failed to initialize Dumber Browser controls:', error); } })();