2015-01-07 20 views
5

Bir tarayıcı penceresi içinde backspace anahtarının back() işlevini nasıl devre dışı bırakacağınızı bulmaya çalışırken, interwebz ve Atom kabuğu belgelerini inceliyorum.Atom kabuğunda geri boş alanı devre dışı bırak

Bir javascript onkeydown dinleyiciye (hangisi çalışır) başvurmak zorunda kalmamayı tercih ederim ve tarayıcı penceresi düzeyi yerine daha yerel ve daha çok uygulama düzeyinde bir şey kullanmamayı tercih ederim.

cevap

2

onkeydown dinleyicisi olmadan bunu yapmamın tek yolu genel bir kısayol ve Electron API'sindeki ipc olaylarıdır. Küresel bir kısayol herhangi bir tuşa devre dışı bırakılması

İlk bir yasal uyarı ...

gerçekten bilgisayarınızda KÜRESEL devre dışı yok! GLOBAL SHORTCUTS KULLANARAK LÜTFEN DİKKAT EDİNİZ! Kısayolunuzun kaydını kaldırmayı unuttuysanız veya düzgün bir şekilde işlemezseniz, hatalarınızı geriye dönüş olmadan düzeltmenin zor olduğunu görürsünüz! Böyle bir ipc "Geçiş" olay işleyicisi içinde kısayol eklemek olabilir

Alternatif
const { app, ipcMain, 
    globalShortcut, 
    BrowserWindow, 
} = require('electron'); 

app.on('ready',() => { 

    // Create the browser window 
    let mainWindow = new BrowserWindow({width: 800, height: 600}); 

    // and load the index.html of the app 
    mainWindow.loadUrl('file://' + __dirname + '/index.html'); 

    // Register a 'Backspace' shortcut listener when focused on window 
    mainWindow.on('focus',() => { 

     if (mainWindow.isFocused()) { 
      globalShortcut.register('Backspace',() => { 

       // Provide feedback or logging here 
       // If you leave this section blank, you will get no 
       // response when you try the shortcut (i.e. Backspace). 

       console.log('Backspace was pressed!'); //comment-out or delete when ready. 
      }); 
     }); 
    }); 

    // ** THE IMPORTANT PART ** 
    // Unregister a 'Backspace' shortcut listener when leaving window. 
    mainWindow.on('blur',() => { 

     globalShortcut.unregister('Backspace'); 
     console.log('Backspace is unregistered!'); //comment-out or delete when ready. 
    }); 
}); 

bu benim için çalıştı ne söyledi

... ...

// In the main process 
ipcMain.on('disableKey-toggle', (event, keyToDisable) => { 
    if (!globalShortcut.isRegistered(keyToDisable){ 

     globalShortcut.register(keyToDisable,() => { 
      console.log(keyToDisable+' is registered!'); //comment-out or delete when ready. 

     }); 
    } else { 

     globalShortcut.unregister(keyToDisable); 
     console.log(keyToDisable+' is unregistered!'); //comment-out or delete when ready. 
    } 
}); 

// In the render process send the accelerator of the keyToDisable. 
// Here we use the 'Backspace' accelerator. 
const { ipcRenderer } = require('electron'); 
ipcRenderer.send('disableKey-toggle', 'Backspace'); 
+0

Neden size olur Tüm uygulama için Backspace tuşunu engelle? Önceden/oluşturucunuzda onu "normal" javascript ile [burada stackoverflow] 'da açıklayabilirsiniz (http://stackoverflow.com/a/2768256/1435377) (veya bu cevabın altında benzer bir cevap). :) Başlangıcı nodejs için sorulan konu başlığını biliyorum ... hala neden anlamıyorum - insanlar sadece bu şekilde akılda tutulmalıdır ... (: –

+1

Katılıyorum, bu genellikle en kolay yoldur. Bu soru Electron ve * değil * Javascript kullanarak nasıl yapılacağını sordu.Ben daha uygulanabilir bir kullanım durumu olacağını hayal edin: Eğer bir pencere açmak için farklı bir uygulama veya sistem diyaloğu açmak istiyorsanız (engellemek için değil) -basın. – Josh

İlgili konular