keyconfig 20110522
-
- Posts: 153
- Joined: September 13th, 2009, 1:12 pm
Re: keyconfig 20110522
One more if I could, I'd like to either modify the current File > Send Now combo that's Command+Return or create a new one that's instead Command+Enter. Can that be done via Thunderbird prefs or tbkeys?
-
- Posts: 6406
- Joined: February 3rd, 2009, 6:29 pm
Re: keyconfig 20110522
@godzfire
The command to send now...
Thunderbird commands
http://kb.mozillazine.org/Keyconfig_ext ... hunderbird
The command to send now...
Code: Select all
window.goDoCommand('cmd_sendNow');
http://kb.mozillazine.org/Keyconfig_ext ... hunderbird
Last edited by morat on July 5th, 2021, 6:10 pm, edited 1 time in total.
-
- Posts: 153
- Joined: September 13th, 2009, 1:12 pm
Re: keyconfig 20110522
How would I format command+enter in tbkeys?
-
- Posts: 6406
- Joined: February 3rd, 2009, 6:29 pm
Re: keyconfig 20110522
@godzfire
The tbkeys addon uses Mousetrap to bind key sequences to custom commands.
Mousetrap - Supported keys
http://craig.is/killing/mice#keys
The default return shortcut, i.e. open message in new tab, may conflict with the tbkeys command+return shortcut on Mac.
Thunderbird shortcuts
http://support.mozilla.org/kb/keyboard-shortcuts
The tbkeys addon uses Mousetrap to bind key sequences to custom commands.
Mousetrap - Supported keys
http://craig.is/killing/mice#keys
The default return shortcut, i.e. open message in new tab, may conflict with the tbkeys command+return shortcut on Mac.
Thunderbird shortcuts
http://support.mozilla.org/kb/keyboard-shortcuts
-
- Posts: 153
- Joined: September 13th, 2009, 1:12 pm
Re: keyconfig 20110522
I could use Command + NumberPad Period instead. I just need to know what the 'equation' is to put into tbkeys (my apologies, but I am not good with understanding programming/coding language. If you could tell me what to copy and paste it in the format of tbkeys would be appreciated ie:
"d": "window.goDoCommand('cmd_viewPageSource');",
"d": "window.goDoCommand('cmd_viewPageSource');",
-
- Posts: 6406
- Joined: February 3rd, 2009, 6:29 pm
Re: keyconfig 20110522
@godzfire
Here is a main key bindings example for the tbkeys addon.
Press One to alert alpha.
Press Two to alert beta.
Press Three to alert gamma.
Now change "1" to "command+." and save settings. That works with the typewriter period and numpad period.
Press Command+Period to alert alpha.
Here is a main key bindings example for the tbkeys addon.
Code: Select all
{
"1": "window.alert('alpha');",
"2": "window.alert('beta');",
"3": "window.alert('gamma');"
}
Press Two to alert beta.
Press Three to alert gamma.
Now change "1" to "command+." and save settings. That works with the typewriter period and numpad period.
Press Command+Period to alert alpha.
-
- Posts: 1932
- Joined: February 10th, 2008, 6:30 am
- Location: Hungary
Re: keyconfig 20110522
Hi morat!
If you're still around.
The Ctrl+F1 DTA one click code I got from you started failing for me. (FF89)
I get an error in the console:
I guess a function might have changed? Is it fixable?
If you're still around.
The Ctrl+F1 DTA one click code I got from you started failing for me. (FF89)
Code: Select all
Components.utils.import("resource://gre/modules/ctypes.jsm");
var user32 = ctypes.open("user32");
var BOOL = ctypes.int;
var LONG = ctypes.long;
var POINT = ctypes.StructType("tagPOINT", [{x:LONG}, {y:LONG}]);
var LPPOINT = POINT.ptr;
var GetCursorPos = user32.declare('GetCursorPos', ctypes.winapi_abi, BOOL, LPPOINT);
var point = new POINT;
if (GetCursorPos(point.address())) {
var utils = window.windowUtils;
var MOUSEEVENTF_RIGHTDOWN = 0x0008;
var MOUSEEVENTF_RIGHTUP = 0x0010;
utils.sendNativeMouseEvent(point.x, point.y, MOUSEEVENTF_RIGHTDOWN | MOUSEEVENTF_RIGHTUP, 0, null);
}
user32.close();
setTimeout(function () {
document.getElementById("dta:turbo-link").doCommand();
document.getElementById("contentAreaContextMenu").hidePopup();
setTimeout(function () {
var win = Services.wm.getMostRecentWindow("alert:alert");
if (win &&
win.document.getElementById("alertTitleLabel") &&
win.document.getElementById("alertTitleLabel").value == "DownThemAll!") {
win.onAlertClose();
}
}, 2000);
}, 1000);
/*
// Save Link with dTa! OneClick
Components.utils.import("resource://gre/modules/ctypes.jsm");
var user32 = ctypes.open("user32");
var BOOL = ctypes.int;
var LONG = ctypes.long;
var POINT = ctypes.StructType("tagPOINT", [{x:LONG}, {y:LONG}]);
var LPPOINT = POINT.ptr;
var GetCursorPos = user32.declare('GetCursorPos', ctypes.winapi_abi, BOOL, LPPOINT);
var point = new POINT;
if (GetCursorPos(point.address())) {
var utils = window.QueryInterface(Components.interfaces.nsIInterfaceRequestor).
getInterface(Components.interfaces.nsIDOMWindowUtils);
var MOUSEEVENTF_RIGHTDOWN = 0x0008;
var MOUSEEVENTF_RIGHTUP = 0x0010;
utils.sendNativeMouseEvent(point.x, point.y, MOUSEEVENTF_RIGHTDOWN | MOUSEEVENTF_RIGHTUP, 0, null);
}
user32.close();
setTimeout(function () {
document.getElementById("dta:turbo-link").doCommand();
document.getElementById("contentAreaContextMenu").hidePopup();
setTimeout(function () {
var win = Services.wm.getMostRecentWindow("alert:alert");
if (win &&
win.document.getElementById("alertTitleLabel") &&
win.document.getElementById("alertTitleLabel").value == "DownThemAll!") {
win.onAlertClose();
}
}, 2000);
}, 1000);
*/
Code: Select all
11:26:53.076 Uncaught
Exception { name: "NS_ERROR_XPC_NOT_ENOUGH_ARGS", message: "Not enough arguments [nsIDOMWindowUtils.sendNativeMouseEvent]", result: 2153185281, filename: "chrome://browser/content/browser.xhtml", lineNumber: 15, columnNumber: 0, data: null, stack: "oncommand@chrome://browser/content/browser.xhtml:15:13\nopenEditor@chrome://keyconfig/content/keyconfig.js:386:12\nondblclick@chrome://keyconfig/content/keyconfig.xhtml:1:11\n", location: XPCWrappedNative_NoHelper }
columnNumber: 0
data: null
filename: "chrome://browser/content/browser.xhtml"
lineNumber: 15
location: XPCWrappedNative_NoHelper { QueryInterface: QueryInterface(), filename: Getter, name: Getter, … }
message: "Not enough arguments [nsIDOMWindowUtils.sendNativeMouseEvent]"
name: "NS_ERROR_XPC_NOT_ENOUGH_ARGS"
result: 2153185281
stack: "oncommand@chrome://browser/content/browser.xhtml:15:13\nopenEditor@chrome://keyconfig/content/keyconfig.js:386:12\nondblclick@chrome://keyconfig/content/keyconfig.xhtml:1:11\n"
<prototype>: ExceptionPrototype { toString: toString(), name: Getter, message: Getter, … }
browser.xhtml:15
-
- Posts: 6406
- Joined: February 3rd, 2009, 6:29 pm
Re: keyconfig 20110522
@avada
Try this:
Reference
http://searchfox.org/mozilla-esr78/sear ... MouseEvent
http://searchfox.org/mozilla-release/se ... MouseEvent
Pet peeve: don't post errors without spaces (forum width messes up)
Try this:
Code: Select all
- var MOUSEEVENTF_RIGHTDOWN = 0x0008;
- var MOUSEEVENTF_RIGHTUP = 0x0010;
- utils.sendNativeMouseEvent(point.x, point.y, MOUSEEVENTF_RIGHTDOWN | MOUSEEVENTF_RIGHTUP, 0, null);
+ utils.sendNativeMouseEvent(point.x, point.y, utils.NATIVE_MOUSE_MESSAGE_BUTTON_DOWN, 2, 0, null, function () {
+ utils.sendNativeMouseEvent(point.x, point.y, utils.NATIVE_MOUSE_MESSAGE_BUTTON_UP, 2, 0, null);
+ });
http://searchfox.org/mozilla-esr78/sear ... MouseEvent
http://searchfox.org/mozilla-release/se ... MouseEvent
Pet peeve: don't post errors without spaces (forum width messes up)
-
- Posts: 1932
- Joined: February 10th, 2008, 6:30 am
- Location: Hungary
Re: keyconfig 20110522
Thanks!morat wrote:@avada
Try this:
ReferenceCode: Select all
- var MOUSEEVENTF_RIGHTDOWN = 0x0008; - var MOUSEEVENTF_RIGHTUP = 0x0010; - utils.sendNativeMouseEvent(point.x, point.y, MOUSEEVENTF_RIGHTDOWN | MOUSEEVENTF_RIGHTUP, 0, null); + utils.sendNativeMouseEvent(point.x, point.y, utils.NATIVE_MOUSE_MESSAGE_BUTTON_DOWN, 2, 0, null, function () { + utils.sendNativeMouseEvent(point.x, point.y, utils.NATIVE_MOUSE_MESSAGE_BUTTON_UP, 2, 0, null); + });
http://searchfox.org/mozilla-esr78/sear ... MouseEvent
http://searchfox.org/mozilla-release/se ... MouseEvent
Pet peeve: don't post errors without spaces (forum width messes up)
-
- Posts: 153
- Joined: January 23rd, 2009, 9:14 pm
- Location: Germany
Re: keyconfig 20110522
@morat
With your help I got this code for tbkeys to move all messages from the active folder to a given folder.
Now I want to completely delete all messages whose sender contains "immo" in that folder before the remaining messages are moved to the given folder. How can this be accomplished?
With your help I got this code for tbkeys to move all messages from the active folder to a given folder.
Now I want to completely delete all messages whose sender contains "immo" in that folder before the remaining messages are moved to the given folder. How can this be accomplished?
Code: Select all
"p": "(function () { var targetUri = 'mailbox://nobody@Local%20Folders/Trash/GMX'; var targetFolder = window.MailUtils.getExistingFolder(targetUri); window.goDoCommand('cmd_selectAll'); window.MsgMoveMessage(targetFolder); })();",
-
- Posts: 6406
- Joined: February 3rd, 2009, 6:29 pm
Re: keyconfig 20110522
@bege
Maybe you can use a message filter to do that. I don't know a solution offhand.
Some ideas..
http://forums.mozillazine.org/viewtopic ... #p14845569
http://forums.mozillazine.org/viewtopic ... #p14717611
Maybe you could use the quick filter bar.
Move messages
http://forums.mozillazine.org/viewtopic ... &t=3007811
http://forums.mozillazine.org/viewtopic ... &t=2400971
http://forums.mozillazine.org/viewtopic ... &t=3007865
Maybe you can use a message filter to do that. I don't know a solution offhand.
Some ideas..
http://forums.mozillazine.org/viewtopic ... #p14845569
http://forums.mozillazine.org/viewtopic ... #p14717611
Maybe you could use the quick filter bar.
Code: Select all
(function () {
var filterField = window.document.getElementById('qfb-qs-textbox');
var button1 = window.document.getElementById('qfb-qs-sender');
var button2 = window.document.getElementById('qfb-qs-recipients');
var button3 = window.document.getElementById('qfb-qs-subject');
var button4 = window.document.getElementById('qfb-qs-body');
var threadTree = window.document.getElementById('threadTree');
window.goDoCommand('cmd_showQuickFilterBar');
filterField.value = 'immo';
filterField.doCommand();
if (button1.checked == false) button1.click();
if (button2.checked == true) button2.click();
if (button3.checked == true) button3.click();
if (button4.checked == true) button4.click();
window.setTimeout(function () {
threadTree.focus();
window.goDoCommand('cmd_selectAll');
}, 1000);
window.setTimeout(function () {
if (button1.checked == false) button1.click();
if (button2.checked == false) button2.click();
if (button3.checked == false) button3.click();
if (button4.checked == true) button4.click();
filterField.value = '';
filterField.doCommand();
window.goDoCommand('cmd_toggleQuickFilterBar');
}, 2000);
window.setTimeout(function () {
threadTree.focus();
// window.goDoCommand('cmd_delete');
window.goDoCommand('cmd_tag1');
}, 3000);
})();
http://forums.mozillazine.org/viewtopic ... &t=3007811
http://forums.mozillazine.org/viewtopic ... &t=2400971
http://forums.mozillazine.org/viewtopic ... &t=3007865
-
- Posts: 153
- Joined: January 23rd, 2009, 9:14 pm
- Location: Germany
Re: keyconfig 20110522
Thank you for your ideas and links.morat wrote:@bege
Maybe you can use a message filter to do that. I don't know a solution offhand.
This one looks quite promising to delete the filtered messages:
Code: Select all
(function () {
function createDummyFilterClone(filter, filterList) {
var retval = filterList.createFilter(filter.filterName);
retval.filterType = filter.filterType;
retval.temporary = true;
retval.enabled = true;
retval.filterDesc = filter.filterDesc;
retval.filterList = filterList;
retval.scope = filter.scope;
var nrActions = filter.actionCount;
for (var i = 0; i < nrActions; i++) {
retval.appendAction(filter.getActionAt(i));
}
return retval;
}
var filterName = "tempFilter"; // filter name in message filters window
var filterService = Components.classes["@mozilla.org/messenger/services/filters;1"].
getService(Components.interfaces.nsIMsgFilterService);
var msg = gFolderDisplay.selectedMessage;
var folder = msg.folder;
var curFilterList = folder.getFilterList(msgWindow);
var filter = curFilterList.getFilterNamed(filterName);
if (filter) {
var tempFilterList = filterService.getTempFilterList(folder);
var msgList = Components.classes["@mozilla.org/array;1"].
createInstance(Components.interfaces.nsIMutableArray);
msgList.appendElement(msg, false);
tempFilterList.logStream = curFilterList.logStream;
tempFilterList.loggingEnabled = curFilterList.loggingEnabled;
tempFilterList.insertFilterAt(0, createDummyFilterClone(filter, tempFilterList));
folder.setFilterList(tempFilterList);
try {
console.log("Running filter '" + filter.filterName + "' on message '" + msg.mime2DecodedSubject + "'");
filterService.applyFilters(Components.interfaces.nsMsgFilterType.All, msgList, folder, msgWindow);
console.log("Done running filter");
} finally {
folder.setFilterList(curFilterList);
}
} else {
console.log("No filter with '" + filterName + "' filter name");
}
})();
- it runs not on all selected but only on the first message
- then it throws the error
- then showsTypeError: msgs.enumerate is not a function bootstrap.js:608:36
and it deleted the first message although the conditions where not met.Done running filter
Do you have an idea what needs to be changed?
-
- Posts: 6406
- Joined: February 3rd, 2009, 6:29 pm
Re: keyconfig 20110522
@bege
The code snippet in the other thread works for me using the error console. I don't get any errors.
Someone would have to rewrite the code snippet to solve your problem. I can't help with the message filter stuff.
The code snippet in the other thread works for me using the error console. I don't get any errors.
Someone would have to rewrite the code snippet to solve your problem. I can't help with the message filter stuff.
-
- Posts: 153
- Joined: January 23rd, 2009, 9:14 pm
- Location: Germany
Re: keyconfig 20110522
Did you test with more than one message selected and with messages of which some match the filter conditions and some don't?morat wrote:@bege
The code snippet in the other thread works for me using the error console. I don't get any errors.
-
- Posts: 6406
- Joined: February 3rd, 2009, 6:29 pm
Re: keyconfig 20110522
@bege
The code snippet only works with a single selected message, not with multiple selected messages.
Okay, I see now. The code snippet is performing the filter action even when the selected message doesn't match the filter condition. I don't know how to fix it. I'm not familiar with the filter methods, so I'm not much help.
The code snippet only works with a single selected message, not with multiple selected messages.
Okay, I see now. The code snippet is performing the filter action even when the selected message doesn't match the filter condition. I don't know how to fix it. I'm not familiar with the filter methods, so I'm not much help.