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.
Drag the following link to your bookmarks and then use the bookmark to enable ReShape on a webpage.
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.
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.
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.
The keycode for a key, in Javascript, matches the button that is pressed, without any modifiers. For example,
5and
%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
191manually. He also needs to enable
shiftby pressing the
shiftbutton in ReShape.
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.
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.