Introduction
Introduction Statistics Contact Development Disclaimer Help
index.md - sites - public wiki contents of suckless.org
git clone git://git.suckless.org/sites
Log
Files
Refs
---
index.md (3094B)
---
1 Easier keyboard shortcuts
2 =========================
3
4 Just a javascript to put in `~/.surf/script.js`, coming from userscript.
5 It just reproduce the vim behavious, to navigate in pages without using
6 the Ctrl key everytime :
7
8 * h: scroll left
9 * j: scroll down
10 * k: scroll up
11 * l: scroll right
12 * g: Top of page
13 * G: bottom of page
14
15 // ==UserScript==
16 // @name vimkeybindings
17 // @namespace renevier.fdn.fr
18 // @author arno <[email protected]>
19 // @licence GPL/LGPL/MPL
20 // @description use vim keybingings (i, j, k, l, …) to navigat…
21 // ==/UserScript==
22
23 /*
24 * If you're a vim addict, and you always find yourself typing j …
25 * page, then wondering why it just does not go up and down like …
26 * software, that user script is what you have been looking for.
27 */
28
29
30 function up() {
31 if (window.scrollByLines)
32 window.scrollByLines(-1); // gecko
33 else
34 window.scrollBy(0, -12); // webkit
35 }
36
37 function down() {
38 if (window.scrollByLines)
39 window.scrollByLines(1); // gecko
40 else
41 window.scrollBy(0, 12); // webkit
42 }
43
44 function pageup() {
45 if (window.scrollByPages)
46 window.scrollByPages(-1); // gecko
47 else
48 window.scrollBy(0, 0 - _pageScroll()); // webkit
49 }
50
51 function pagedown() {
52 if (window.scrollByPages)
53 window.scrollByPages(1); // gecko
54 else
55 window.scrollBy(0, _pageScroll()); // webkit
56 }
57
58 function right() {
59 window.scrollBy(15, 0);
60 }
61
62 function left() {
63 window.scrollBy(-15, 0);
64 }
65
66 function home() {
67 window.scroll(0, 0);
68 }
69
70 function bottom() {
71 window.scroll(document.width, document.height);
72 }
73
74 // If you don't like default key bindings, customize here.
75 // if you want to use the combination 'Ctrl + b' (for example), …
76 var bindings = {
77 'h' : left,
78 'l' : right,
79 'k' : up,
80 'j' : down,
81 'g' : home,
82 'G' : bottom,
83 //'^b': pageup,
84 //'^f': pagedown,
85 }
86
87 function isEditable(element) {
88
89 if (element.nodeName.toLowerCase() == "textarea")
90 return true;
91
92 // we don't get keypress events for text input, but I don't …
93 // if it's a bug, so let's test that
94 if (element.nodeName.toLowerCase() == "input" && element.typ…
95 return true;
96
97 // element is editable
98 if (document.designMode == "on" || element.contentEditable =…
99 return true;
100 }
101
102 return false;
103 }
104
105 function keypress(evt) {
106 var target = evt.target;
107
108 // if we're on a editable element, we probably don't want to…
109 // keypress, we just want to write the typed character.
110 if (isEditable(target))
111 return;
112
113 var key = String.fromCharCode(evt.charCode);
114 if (evt.ctrlKey) {
115 key = '^' + key;
116 }
117
118 var fun = bindings[key];
119 if (fun)
120 fun();
121
122 }
123
124 function _pageScroll() {
125 // Gecko algorithm
126 // ----------------
127 // The page increment is the size of the page, minus the sma…
128 // 10% of the size or 2 lines.
129 return window.innerHeight - Math.min(window.innerHeight / 10…
130 }
131
132 window.addEventListener("keypress", keypress, false);
You are viewing proxied material from suckless.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.