Skip to content
This repository was archived by the owner on Dec 9, 2018. It is now read-only.

Commit edffc12

Browse files
committed
Fix $ to end of line, HOME, END, CTRL+F (forward) and CTRL+B (backward) on Chrome. Also tested on Firefox and IE.
1 parent 8840a84 commit edffc12

File tree

1 file changed

+18
-4
lines changed

1 file changed

+18
-4
lines changed

web/vim_lib.js

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -86,17 +86,20 @@ var LibraryVIM = {
8686
if(charCode == 0) {
8787
var special = vimjs.special_keys[keyCode];
8888
if(special !== undefined) {
89-
vimjs.gui_web_handle_key(charCode || keyCode, modifiers, special.charCodeAt(0), special.charCodeAt(1));
89+
vimjs.gui_web_handle_key(keyCode, modifiers, special.charCodeAt(0), special.charCodeAt(1));
9090
handled = true;
91-
}
91+
} else {
92+
vimjs.gui_web_handle_key(keyCode, modifiers, 0, 0);
93+
handled = true;
94+
}
9295
}
9396

9497
if(!handled) {
9598
var MAX_UTF8_BYTES = 6;
9699
var chars = new Uint8Array(MAX_UTF8_BYTES + 1); // null-terminated
97100
var charLen = stringToUTF8Array(String.fromCharCode(charCode), chars, 0, MAX_UTF8_BYTES);
98101
if (charLen == 1) {
99-
vimjs.gui_web_handle_key(chars[0], modifiers, 0, 0);
102+
vimjs.gui_web_handle_key(chars[0], 0, 0, 0);
100103
} else {
101104
// no modifers for UTF-8, should be handled in chars already
102105
for (var i = 0; i < charLen; i++) {
@@ -696,6 +699,7 @@ var LibraryVIM = {
696699
* C means "needed for Chrome"
697700
*/
698701
var keys_to_intercept_upon_keydown = {};
702+
var ctrl_keys_to_intercept_upon_keydown = {};
699703
[ KeyEvent.DOM_VK_ESCAPE, // CF
700704
KeyEvent.DOM_VK_TAB, // C
701705
KeyEvent.DOM_VK_BACK_SPACE, // C
@@ -706,14 +710,24 @@ var LibraryVIM = {
706710
KeyEvent.DOM_VK_DELETE, // C
707711
KeyEvent.DOM_VK_PAGE_UP, // C
708712
KeyEvent.DOM_VK_PAGE_DOWN, // C
713+
KeyEvent.DOM_VK_HOME, // C
714+
KeyEvent.DOM_VK_END, // C
709715
].forEach(function(k) {
710716
keys_to_intercept_upon_keydown[k] = 1;
711717
});
718+
[
719+
KeyEvent.DOM_VK_F,
720+
KeyEvent.DOM_VK_B,
721+
].forEach(function(k) {
722+
ctrl_keys_to_intercept_upon_keydown[k] = 1;
723+
});
724+
712725

713726
/* capture some special keys that won't trigger 'keypress' */
714727
document.addEventListener('keydown', function(e) {
715728
if (ignoreKeys()) return true;
716-
if(e.keyCode in keys_to_intercept_upon_keydown) {
729+
if((e.keyCode in keys_to_intercept_upon_keydown) ||
730+
(e.ctrlKey && (e.keyCode in ctrl_keys_to_intercept_upon_keydown))) {
717731
e.preventDefault();
718732
vimjs.handle_key(0, e.keyCode, e);
719733
}

0 commit comments

Comments
 (0)