Here is how I suggest you to solve the problem. The idea is attach the shortcut to the button to be able to execute the button click when the shortcut combination is pressed. Using the following code in a js file loaded in a module(as example for @srihar there is a module definition of the js file for module sample_report, you could use the bold marked text in your own module if you like)
openerp.sample_report = function(instance, local) {
var _t = instance.web._t,
_lt = instance.web._lt;
var QWeb = instance.web.qweb;
var ctrl_count = 0;
$.ctrl_bind = function(key, namespace, callback, args) {
var ev = 'keydown.'+namespace;
$(document).on(ev, function(e) {
if(!args) args=[]; // IE barks when args is null
console.log(e.keyCode)
if((e.keyCode == key.charCodeAt(0) || e.keyCode == key) && e.ctrlKey) {
callback.apply(this, args);
return false;
}
});
};
$.ctrl_unbind = function(name) {
var ev = 'keydown.'+name;
$(document).off(ev);
};
instance.web.form.WidgetButton.include({
start: function() {
var self = this;
this._super.apply(this, arguments);
var context = this.build_context().eval();
if(context.shortcut != undefined){
ctrl_count++;
this.ctrl_count = ctrl_count;
$.ctrl_bind(context.shortcut, this.ctrl_count, function() {
alert(1);//for test
self.on_click();//could be used execute_action() too
});
}
},
destroy: function() {
$.ctrl_unbind(this.ctrl_count);
this._super.apply(this, arguments);
},
});
}
To be able to use that extension you need to define your button with a context that contains a shortcut key, for example for clic the following button using the shortcut "ctrl + i" you need to define:
<button name="print_quotation" string="Print" type="object" context="{'shortcut': 'I'}"/>
Note that the value of the key shortcut in the context need to be uppercased