added key repeat limiting + minor doc tweaking...

Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
Alex A. Naanou 2015-09-15 02:57:31 +03:00
parent 79cb149a4b
commit 9489f9023e
4 changed files with 63 additions and 12 deletions

View File

@ -180,6 +180,50 @@ function normalizeModifiers(c, m, a, s){
} }
// Event handler wrapper that will drop identical keys repeating at rate
// greater than max_rate
//
// NOTE: this will only limit repeating key combinations thus no lag is
// introduced...
var dropRepeatingkeys =
module.dropRepeatingkeys =
function dropRepeatingkeys(handler, max_rate){
var _timeout = null
var key = null
var ctrl = null
var meta = null
var alt = null
var shift = null
return function(evt){
if(_timeout != null
&& key == evt.keyCode
&& ctrl == evt.ctrlKey
&& meta == evt.metaKey
&& alt == evt.altKey
&& shift == evt.shiftKey){
return
}
key = evt.keyCode
ctrl = evt.ctrlKey
meta = evt.metaKey
alt = evt.altKey
shift = evt.shiftKey
_timeout = setTimeout(function(){
_timeout = null
},
// XXX is this the right way to go???
typeof(max_rate) == typeof(123) ? max_rate : max_rate())
return handler(evt)
}
}
/* Key handler getter /* Key handler getter
* *
* For doc on format see makeKeyboardHandler(...) * For doc on format see makeKeyboardHandler(...)

View File

@ -1,9 +1,9 @@
{ {
"name": "ImageGrid.Viewer", "name": "ImageGrid.Viewer (gen4)",
"main": "index.html", "main": "index.html",
"version": "0.0.1", "version": "0.0.1",
"window": { "window": {
"title": "ImageGrid.Viewer", "title": "ImageGrid.Viewer (gen4)",
"position": "center", "position": "center",
"width": 900, "width": 900,
"height": 700, "height": 700,

View File

@ -61,6 +61,9 @@ var overlay = require('lib/widget/overlay')
/*********************************************************************/ /*********************************************************************/
// XXX move this to config...
module.MAX_KEY_REPEAT_RATE = 100
// XXX add this to the global doc... // XXX add this to the global doc...
module.GLOBAL_KEYBOARD = { module.GLOBAL_KEYBOARD = {
'Global bindings': { 'Global bindings': {
@ -229,7 +232,6 @@ module.GLOBAL_KEYBOARD = {
/*********************************************************************/ /*********************************************************************/
$(function(){ $(function(){
@ -278,12 +280,17 @@ $(function(){
// setup base keyboard for devel, in case something breaks... // setup base keyboard for devel, in case something breaks...
$(document) $(document)
.keydown( .keydown(
keyboard.makeKeyboardHandler( keyboard.dropRepeatingkeys(
module.GLOBAL_KEYBOARD, keyboard.makeKeyboardHandler(
function(k){ module.GLOBAL_KEYBOARD,
window.DEBUG && console.log(k) function(k){
}, window.DEBUG && console.log(k)
a)) },
a),
function(){
// XXX get this from config...
return module.MAX_KEY_REPEAT_RATE
}))
}) })

View File

@ -2547,17 +2547,17 @@ module.ImageBookmarks = features.Feature(ImageGridFeatures, {
var AppControlActions = actions.Actions({ var AppControlActions = actions.Actions({
// XXX revise these... // XXX revise these...
close: ['Cloase viewer', close: ['File|Interface/Cloase viewer',
function(){ function(){
// XXX should we do anything else here like auto-save??? // XXX should we do anything else here like auto-save???
window.close() window.close()
}], }],
toggleFullScreen: ['', toggleFullScreen: ['Interface/Toggle full screen mode',
function(){ function(){
// XXX where should toggleFullscreenMode(..) be defined... // XXX where should toggleFullscreenMode(..) be defined...
toggleFullscreenMode() toggleFullscreenMode()
}], }],
showDevTools: ['', showDevTools: ['Interface|Development/Show Dev Tools',
function(){ function(){
if(window.showDevTools != null){ if(window.showDevTools != null){
showDevTools() showDevTools()