ReShape

ReShape is intended for interactive webpage "applications". It replaces key presses with other key presses (e.g. A replaced with Shift+S). It can also accompany the key press with a mouse click on an element (selected with a CSS selector).

ReShape currently only supports pages using jQuery, listening to key down events for the whole page.

The settings for ReShape are stored in your browser, for each webpage where you use it. By using ReShape you agree to this.

ReShape is created by Thomas Axelsson and is licensed under GPLv3+. Source code and issue tracker is available on Github. jQuery is used for grabbing key presses.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

Bookmarklet

Drag the following link to your bookmarks and then use the bookmark to enable ReShape on a webpage.

ReShape 1.1.0

Userscript

Use the following userscript to automatically load ReShape. The script is tested with ViolentMonkey.

Warning! To know when the events of the webpage can be reconfigured, the userscript uses a simple polling mechanism, which is not guaranteed to work. reshapeInitWhenStable() can be tweaked for the webpage in question.

Click the following link to add the userscript. Update @match with the URL of the webpage where you want to use ReShape.

ReShape Userscript

Live Example

The box below lists keys that have been pressed (try pressing a key!).

Click the ReShape button () on the bottom right of the browser window and map a key (e.g. A to S) and then try pressing keys again.

Press a key!

Mouse Click

To click the button using a key, add a key mapping with:

The Click value was found by inspecting the element using the built-in web browser inspector (Ctrl+Shift+I) and writing a matching CSS selector. Note that the element you want to click on must existing when the click is performed. The sent key can be used to bring up menus that contain elements to click.

Custom keycode

The keycode for a key, in Javascript, matches the button that is pressed, without any modifiers. For example,

5
and
%
is on the same key on many keyboard layouts. Both
5
(press
5
) and
%
(press
shift
+
5
) results in the same keycode (
<53>
).

The keycode becomes a problem when a keyboard layout has a character only as the shift option on a key, but a webpage expects a dedicated key for the given character to exist.

Example: Swedish QWERTY has
?
as
shift
+
+
(
shift
+
<171>
), while US QWERTY has
?
as
shift
+
/
(
shift
+
<191>
). The webpage expects
shift
+
<191>
, but the Swedish user will press
shift
+
<171>
.

In this case, the Swedish user cannot press
/
to map to
<191>
, because no such key exists in the Swedish layout (
shift
+
7
(
shift
+
<55>
) is used for
/
).

To solve the problem in ReShape, the user can either change to a US layout, and press the key, or right-click on the key button in ReShape and enter the code
191
manually. He also needs to enable
shift
by pressing the
shift
button in ReShape.

Edit Raw / Backup

The Edit Raw button allows for editing of the raw data structures of the ReShape settings.

With Edit Raw it is also possible to copy the settings to create a backup. Just copy the string and save it in a text file.

Licenses

ReShape is licensed under GPLv3+.

Reshape uses jQuery, which is licensed under MIT license:

Copyright JS Foundation and other contributors, https://js.foundation/

Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:

The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.