better keyboard mapping

This commit is contained in:
Peter Cottle 2012-12-25 17:10:23 -08:00
parent 2fb843a8d6
commit f71aa87b7d
4 changed files with 50 additions and 34 deletions

View file

@ -4585,6 +4585,7 @@ var CommandBuffer = Backbone.Model.extend({
var Main = require('../app'); var Main = require('../app');
Main.getEvents().trigger('processCommand', popped, callback); Main.getEvents().trigger('processCommand', popped, callback);
} else { } else {
// no more commands to process
this.clear(); this.clear();
} }
}, },
@ -13912,11 +13913,8 @@ exports.MultiView = MultiView;
require.define("/src/js/util/keyboard.js",function(require,module,exports,__dirname,__filename,process,global){var _ = require('underscore'); require.define("/src/js/util/keyboard.js",function(require,module,exports,__dirname,__filename,process,global){var _ = require('underscore');
var Backbone = require('backbone'); var Backbone = require('backbone');
function KeyboardListener(options) { var mapKeycodeToKey = function(keycode) {
this.events = options.events || _.clone(Backbone.Events); var keyMap = {
this.aliasMap = options.aliasMap || {};
this.keyMap = {
37: 'left', 37: 'left',
38: 'up', 38: 'up',
39: 'right', 39: 'right',
@ -13924,8 +13922,14 @@ function KeyboardListener(options) {
27: 'esc', 27: 'esc',
13: 'enter' 13: 'enter'
}; };
this.keydownListener = _.bind(this.keydown, this); return keyMap[keycode];
};
function KeyboardListener(options) {
this.events = options.events || _.clone(Backbone.Events);
this.aliasMap = options.aliasMap || {};
this.keydownListener = _.bind(this.keydown, this);
this.listen(); this.listen();
} }
@ -13941,10 +13945,12 @@ KeyboardListener.prototype.keydown = function(e) {
var which = e.which; var which = e.which;
console.log('key which', which); console.log('key which', which);
if (this.keyMap[which] === undefined) { var key = mapKeycodeToKey(which);
if (key === undefined) {
return; return;
} }
this.fireEvent(this.keyMap[which]);
this.fireEvent(key);
}; };
KeyboardListener.prototype.fireEvent = function(eventName) { KeyboardListener.prototype.fireEvent = function(eventName) {
@ -13953,7 +13959,7 @@ KeyboardListener.prototype.fireEvent = function(eventName) {
}; };
exports.KeyboardListener = KeyboardListener; exports.KeyboardListener = KeyboardListener;
exports.mapKeycodeToKey = mapKeycodeToKey;
}); });
@ -15982,6 +15988,7 @@ var CommandBuffer = Backbone.Model.extend({
var Main = require('../app'); var Main = require('../app');
Main.getEvents().trigger('processCommand', popped, callback); Main.getEvents().trigger('processCommand', popped, callback);
} else { } else {
// no more commands to process
this.clear(); this.clear();
} }
}, },
@ -16559,11 +16566,8 @@ require("/src/js/util/index.js");
require.define("/src/js/util/keyboard.js",function(require,module,exports,__dirname,__filename,process,global){var _ = require('underscore'); require.define("/src/js/util/keyboard.js",function(require,module,exports,__dirname,__filename,process,global){var _ = require('underscore');
var Backbone = require('backbone'); var Backbone = require('backbone');
function KeyboardListener(options) { var mapKeycodeToKey = function(keycode) {
this.events = options.events || _.clone(Backbone.Events); var keyMap = {
this.aliasMap = options.aliasMap || {};
this.keyMap = {
37: 'left', 37: 'left',
38: 'up', 38: 'up',
39: 'right', 39: 'right',
@ -16571,8 +16575,14 @@ function KeyboardListener(options) {
27: 'esc', 27: 'esc',
13: 'enter' 13: 'enter'
}; };
this.keydownListener = _.bind(this.keydown, this); return keyMap[keycode];
};
function KeyboardListener(options) {
this.events = options.events || _.clone(Backbone.Events);
this.aliasMap = options.aliasMap || {};
this.keydownListener = _.bind(this.keydown, this);
this.listen(); this.listen();
} }
@ -16588,10 +16598,12 @@ KeyboardListener.prototype.keydown = function(e) {
var which = e.which; var which = e.which;
console.log('key which', which); console.log('key which', which);
if (this.keyMap[which] === undefined) { var key = mapKeycodeToKey(which);
if (key === undefined) {
return; return;
} }
this.fireEvent(this.keyMap[which]);
this.fireEvent(key);
}; };
KeyboardListener.prototype.fireEvent = function(eventName) { KeyboardListener.prototype.fireEvent = function(eventName) {
@ -16600,7 +16612,7 @@ KeyboardListener.prototype.fireEvent = function(eventName) {
}; };
exports.KeyboardListener = KeyboardListener; exports.KeyboardListener = KeyboardListener;
exports.mapKeycodeToKey = mapKeycodeToKey;
}); });
require("/src/js/util/keyboard.js"); require("/src/js/util/keyboard.js");

View file

@ -80,6 +80,7 @@ var CommandBuffer = Backbone.Model.extend({
var Main = require('../app'); var Main = require('../app');
Main.getEvents().trigger('processCommand', popped, callback); Main.getEvents().trigger('processCommand', popped, callback);
} else { } else {
// no more commands to process
this.clear(); this.clear();
} }
}, },

View file

@ -1,11 +1,8 @@
var _ = require('underscore'); var _ = require('underscore');
var Backbone = require('backbone'); var Backbone = require('backbone');
function KeyboardListener(options) { var mapKeycodeToKey = function(keycode) {
this.events = options.events || _.clone(Backbone.Events); var keyMap = {
this.aliasMap = options.aliasMap || {};
this.keyMap = {
37: 'left', 37: 'left',
38: 'up', 38: 'up',
39: 'right', 39: 'right',
@ -13,8 +10,14 @@ function KeyboardListener(options) {
27: 'esc', 27: 'esc',
13: 'enter' 13: 'enter'
}; };
this.keydownListener = _.bind(this.keydown, this); return keyMap[keycode];
};
function KeyboardListener(options) {
this.events = options.events || _.clone(Backbone.Events);
this.aliasMap = options.aliasMap || {};
this.keydownListener = _.bind(this.keydown, this);
this.listen(); this.listen();
} }
@ -30,10 +33,12 @@ KeyboardListener.prototype.keydown = function(e) {
var which = e.which; var which = e.which;
console.log('key which', which); console.log('key which', which);
if (this.keyMap[which] === undefined) { var key = mapKeycodeToKey(which);
if (key === undefined) {
return; return;
} }
this.fireEvent(this.keyMap[which]);
this.fireEvent(key);
}; };
KeyboardListener.prototype.fireEvent = function(eventName) { KeyboardListener.prototype.fireEvent = function(eventName) {
@ -42,4 +47,4 @@ KeyboardListener.prototype.fireEvent = function(eventName) {
}; };
exports.KeyboardListener = KeyboardListener; exports.KeyboardListener = KeyboardListener;
exports.mapKeycodeToKey = mapKeycodeToKey;

View file

@ -8,15 +8,13 @@ Big Graphic things:
Medium things: Medium things:
~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~
Views
=========
Commands Commands
======== ========
[ ] refactor some kind of 'filter' that processes or yields commands [ ] sip from buffer with post-command hooks. ideally the git engine
[ ] then each sandbox is essentially a series of filters knows nothing about the level being played
[ ] make a shim so a level engine can check after every git command if [ ] text input from the commandPromptView must flow down into
they succeeded and then do finish animation filters. no hacky stuff anymore where it's part of the option parser,
wtf
Small things to implement: Small things to implement:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~