OPRIQ is keyboard layout with possibility of solo-left-handed-typing of any possible keys combinations (you can even code with just left hand). Solo-left-handed-typing does not prevent two-handed typing in any way. OPRIQ doesn't require any special keyboard, and builds on standard QWERTY layout (so learning it should be a breeze).
OPRIQ development took 8 years (2013-2021) with rigorous testing of 5 vastly different layout iterations each built from scratch (including building hardware prototypes and complete relearning of typing for each iteration). Most of those iterations were also very far from QWERTY layout. Point is: to a smallest single little detail OPRIQ was forged in battle and can stand by it's design decisions.
OPRIQ shines when working in hotkey-heavy software like Photoshop, various CADs and similar.
It is built on AutoHotKey v2.0 and currently works only on Windows.
Table of Contents:
- Demonstrations
- How it works
- TFNJ Variation
- Second language support
- Known Issues
- Requirements
- Installation
Standard ANSI-keyboards are used in videos below. Key-caps are colored for better layout visibility.
On the fly switch between left-handed and 2-handed typing:
1-handed coding with OPRIQ layout:
My current (2025) typing speeds in OPRIQ (normal/record):
- 95/115 wpm two-handed
- 55/75 wpm one-handed text
- ~40 wpm one-handed coding
You can find all the schemes shown in this chapter in original excel
Docs/OPRIQ.xlsxfile
OPRIQ has 2 distinct modes:
1L2H— main mode, you can type both with solo-left hand or with both handsNaming
1L2His a shorthand for phrase "solo-left-handed OR two-handed"ONLY2H— compatibility mode for games and software that respond bad to 1L2H mode; it simply switches off all 1L-features of OPRIQ
You can switch between modes via CNFG layer (reachable through original LCtrl key, more on that below).
OPRIQ tray icon will change accordingly.
1L2H mode builds on several things:
- 3 main layers:
HOMETEXT2(holdSpaceto reach it)NAVIGATION(holdTABorRAltto reach it)
Also there is
TEXT2ALTlayer (reached by holding bothTABandSpace), but it is just aTEXT2with all keys seen as ifLAltis pressed. This layer enables user to sendLAlt-modified keys, while user's thumb is already busy withSpacekey. - 3 chords (simultaneous key presses) for left hand at home row that enable entering
BS/Enter/Deletekeys fromHOMElayer. Modifiers (Alt/Ctrl/Shift) work with chords too.In the long run I found chords to be less crippling on the left hand than reaching to
BS/Enter/DeletefromNAVIGATIONlayer. - Pressing any of right-handed keys will disable
SPACE/TABfrom their layer-changing features, and will also disable chords — all of that for a timer of 1 second (RAltwill still be able to openNAVIGATIONlayer though). You can see if timer is active via GUI (described further).Timer feature becomes crucial once you exceed 60 wpm two-handed typing speed. Thanks to this timer, when you are speed-typing, you will not need to worry about accidentally holding
Spacefor too long (thus unwantedly openingTEXT2layer) and things like that.
Alt+TAB has a special recognition:
- If you hold
LAltbefore pressingTAB, standard Alt+TAB windows feature will activate without delay - You should press
TABBEFORE holdingLAltif you want reachNAVIGATIONlayer (when you aim to pressLAlt+Homeor smth)
Games (or other software) that require holding TAB/Space/S/D/T might work bad with OPRIQ.
TAB/Space will open layers, S/D/T will send chords if pressed simultaneously.
In most games this is not what you want.
For such a case you can use ONLY2H mode, in which keyboard has no one-handed features (it's chords and layers),
although it keeps it's main layout. You'll still have NAVIGATION layer reachable through RAlt,
and CNFG layer as usual.
BTW, in programming games like Shapez 2, Turing Complete, etc. opening layers and sending chords may be exactly what you want — so
1L2Hmode will work great there.
Hold LCtrl (usually placed at bottom left key of keyboard) to open CNFG layer.
You can do all sorts of things in CNFG layer including:
LCtrl + 1switches to1L2Hmode,LCtrl + 2switches toONLY2HmodeLCtrl + ssuspends andLCtrl + aactivates OPRIQ. Suspend deactivates all hotkeys except Suspend/Activate/Reload commands onCNFGlayer.LCtrl + tildereloads OPRIQ. Use it when smth is stuck.LCtrl + cacts as CAPS Lock key (you might require it for unstucking unwanted CAPS, see Known Issues)LCtrl + gactivates mini-GUI window — it will indicate active mode (1L2HorONLY2H) and for1L2Hwill also show if 2-handed-timer is active (indicating that 1L-features are suppresed for ~1 second). Try reloading App if GUI is not visible (it will place itself on top of all windows).
By default, variation described below is turned off, because I don't think it fits well for general user.
I personally use OPRIQ with T/F and N/J keys swapped (because T and N are much more frequent than F and J). This change is accordingly propagated to all modes/layers/chords. In demo videos I use this TFNJ version. It makes left index finder life noticeably easier for left-handed typing.
If you want to try it, then edit OPRIQ.ahk2 source code and change this line (in the beginning of the file):
activate_TFNJ := Falseto this:
activate_TFNJ := TrueBy the way, if you are into Vim, you might be interested that I simply relearned new placement of HJKL (instead of trying to remap
ntojall over the place). It doesn't feel ackward in any way.
ru-lang, ZHGIEZH
- OPRIQ does not work in Windows log-in screen. Treat your keyboard as normal QWERTY in this case.
- Some protected forms in internet browsers (like finance-related) will process keyboard keys as if OPRIQ is not running
- Working with remote devices might be challenging. Sometimes OPRIQ on your local machine will be able to send correct keys to remote device. Sometimes it is better to run OPRIQ directly on remote machine. I think it heavily depends on type of remote connection.
Changing source language to smth like C++/Rust, or building QMK version of OPRIQ might solve those issues. I don't plan to implement any of that though.
Few times during a work day below issues might occur:
- Holding
RAlt(which supposed to only openNAVIGATIONlayer), sometimes also sends originalRAltkey. Any subsequent key presses work as usual. CAPSsometimes fires unwantedly (instead of acting asLCtrl)
RAlt (AltGr) and CAPS are notorious for creating problems in AutoHotKey.
The only decent solution I came up with is performing some minimal remappings on register level via Sharpkeys or similar software.
Make remaps shown on the picture, and OPRIQ will recognize F13/F14/F15 accordingly.
Be aware that you'll loose your original CAPS/LCtrl/RAlt though (when keyboard is used without OPRIQ).
When using Sharpkeys, you can load binary file for_Sharpkeys/opriq_ff_remaps.skl with preconfiged remaps.
These remappings are NOT absolutely required. Especially if issues above do not irritate you that much.
There are 2 known bugs which I am trying to solve. Their frequency is like 1..2 times during a work day.
- Entering letters with
Shiftsometimes holdsShiftpressed. When it happens, just press left and rightShift(not necessarily at the same time) and it will unstuck. - In
ONLY2Hmode, chording keys might stuck (although there are no chords inONLY2H). Press key again and it will unstuck.
Software:
- OPRIQ works on AutoHotKey v2.0, so only Windows is supported
OPRIQ idea can be implemented on QMK, on Linux, Mac, etc. I currently don't have plans of doing it myself though.
- OPRIQ needs to be launched when standard english QWERTY layout is currently selected in the system
Hardware:
- You'll need standard ANSI/ISO-keyboard (all docs are made for ANSI keyboard, however changes to ISO should be obvious)
- Ideally keyboard should have 6NKRO support (anti-ghosting), although not obligatory
Without 6NKRO some tricky key combinations (like
Alt+Shift+Space+Q) might not work depending on keyboard. Still 99% of any reasonable key combination will probably work, and remaining 1% will be pressable with two hands as usual.However for best learning experience it is better to use 6NKRO (because in some unexpected behaviour you'll be sure it is not hardware to blame).
There 2 ways to launch OPRIQ.
For both those options if you want to completely get rid of RAlt and CAPS Lock issues, make remaps (descriped in that chapter) at register level. It is not required though.
- Download
OPRIQ.exe,OPRIQ_01.pngandOPRIQ_02.pngto some folder. - Make sure your active layout is QWERTY (if it's not, some keys might not work).
- Run
OPRIQ.exe. - You'll see OPRIQ icon in tray indicating it is now working.
Choose this option if you want to run modified OPRIQ code.
- Install AutoHotKey v2.0
- Download
OPRIQ.ahk2,OPRIQ_01.pngandOPRIQ_02.pngto some folder. - Make sure your active layout is QWERTY (if it's not, some keys might not work).
- Double-click
OPRIQ.ahk2(or open it withAutoHotKey64.exeif*.ahk2file extension was not recognized automatically) - You'll see OPRIQ icon in tray indicating it is now working.
Place link to OPRIQ.exe or OPRIQ.ahk2 to:
C:\Users\USERNAME\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup







