Remark: if you are able to read Russian, you should look at the appropriate section
Letter layout was divided from project to separate repository
qPhyx is a layout supplement script to the keyboard layout that transform latter into a multilingual layout with extended symbol support and a few extra features.
Benefits:
- Unified symbol and language typing system.
- Full support for all languages in Latin and Cyrillic scripts, with all features, without separate language layouts.
- Extended symbol support.
- Additional internal and external functionality.
The best way to get to know a project is to use it
tl;dr
You can use any letter layout, but it is preferable to use adapted versions, which have been cleared of non-alphabetic characters, beause they are fully provided by the described script.
One of the goals pursued by the project is the complete separation of the layers. To do this, the following conditions must be met:
- the alphabetic characters of the main script are completely arranged in the letter part of the keyboard, with the condition of upper case at the modifier
Shift
(an obvious condition, which, however, is neglected by some Cyrillic keyboard layouts); - numeric characters are completely arranged in the numeric row;
- all other symbols are completely arranged in their own layers.
This division of responsibilities, in other words – a modular system, allows you to use each of the parts independently of the others. In the existing layouts, however, these layers are chaotically jumbled between each other, putting a lot of restrictions on each of the parts, which also leads to the fact that for the smallest change the entire likeness of the system must be changed and used as a fork of the original layout version, with potential unnecessary cascading reassignments.
In order to separate layers, many popular keyboard layouts have been modified into adapted forms. In the adapted layouts there were no changes in the positioning of the alphabetic characters located in the alphabetic part of the keyboard, which allows you to use them as before. The auxiliary characters as well as the alphabetic characters that are outside the alphabetic part have been changed.
The alphabetic characters in the main part have deliberately not been repositioned, in order to keep the original look and typing skills of their users, even though, after adaptation, many of the alphabetic characters can be assigned to more convenient positions.
Adapted layouts for Latin and Cyrillic, ready to install and use, are in the folder external/layouts.
tl;dr
There are three layers – underAlt
, under"long" presses
(base 0.15s, can be changed by user), and under their combination.
All three layers are located in the alphabetic part of the keyboard + numeric row with diacritical symbols.
All characters are grouped into logical categories and arranged with maximum typing convenience.
Total coverage – 83 auxiliary characters + 24 diacritics + 10 control commands.
The following requirements were specified for the symbol layers:
- extended symbol support;
- auxiliary diacritics support;
- division by logical categories;
- adding control commands to minimize unnecessary movements;
- location within the standard 60% ANSI keyboard;
- location of the most popular symbols in the most convenient positions and layers
An explanation of what a 60% keyboard is
Source: nytimes.com; Illustration: Sarah Macreading, Dana DavisThere are two ways to typing symbols on the layers:
- select the layer to be typed directly at the moment of input, by pressing the modifier;
- switching between layers with subsequent typing.
This project uses the first way, as it minimizes intermediate actions.
When selecting the "obvious" modifiers, excluding the combined held modifiers due to the inconvenience of this kind of modifiers, Shift
and Ctrl
due to their own use, as well as AltGr
, for its ambiguous use, only Alt
was left.
The non-obvious modifier chosen was "long press". Yes, it is somewhat different from the usual method of interaction with the keyboard, but, I assure you, this modifier is much more convenient than even the usual Alt/Ctrl/Shift
, and you can see for yourself once you get used to this functionality, turning it into automatism.
As a small confirmation of these words – after many trials and comparisons, the most popular symbols are located under the long press modifier, precisely because of its convenience, compared to the others.
The basic value of the trigger time for this modifier is 0.15s. It can be reassigned by the user to a more comfortable value at any time. After introducing it into automatism it is likely to be a comfortable value of about 0.11s.
So we got two layers of single modifiers, and one layer of their combination - a long press with Alt
, which is not equivalent to the combination of two held modifiers, for the reasons described in the last paragraph.
As mentioned earlier, the most demanded symbols were located under the long-press modifier; alternate views and symbols with less demand were located under Alt
; an auxiliary set of symbols were located under their AltLong
combination.
As you can see, there are mostly symbols that are familiar to everyone from the standard layouts.
- symbols are grouped into categories – basic math, punctuation, currencies, brackets;
- the first two categories, as the most demanded of all, are located at the home finger positions;
- graphically and/or logically close symbols are on vertically adjacent positions;
- brackets are mirrored around the home row – opening at the top, closing at the bottom;
- in the upper right corner is the most demanded diacritic combining symbol "acute" primarily as a marker of the main accent.
Looking ahead to the additional functionality section, the decr
and incr
keys in the numeric row are responsible for decreasing/increasing the highlighted number by 1, but can be reassigned by the user to enter additional symbols.
Half of the symbols in this set are alternate representations of the main set symbols at the same positions:
- hyphen (used as a minus) and minus;
- asterisk (as multiplication) and multiplication symbol;
- middle dash and long dash;
- acute (main accent) and grave (secondary accent);
- exclamation mark and inverted counterpart;
- single quote (used as apostrophe) and apostrophe;
- …
The inheritance of logical category positions is also followed for symbols that have no alternative representation.
The right hand finger home positions have "arrow" navigation, to minimize hand tearing to press them. Here, on either side of the home row are also the "forward"/"backward" and "undo"/"redo" commands.
The numeric row contains all the used superscript combined diacritics (apart from acute and grave, which have their own position in the alphabetic part of the keyboard).
This layer contains the less demanded symbols of different categories. The inheritance of the positions of the logical categories is followed as much as possible.
The keys that contain the control commands on the alternate layer have no assignments on the AltLong
layer, in order to preserve the ability to repeat the command through key-holding.
In the numeric row there is a subscript combined diacritic, which in half of the cases is a subscript variant of a similar symbol from the previous layer. The two remaining places in the numeric row after the allocation were given to auxiliary symbols.
tl;dr
The numeric row belowShift
contains a number of specific language characters.
This set can be selected from many preset ones, depending on the user's needs. Each set provides access to a number of languages, as they are grouped to provide maximum coverage for each set.
The character set is selectable separately for Cyrillic (Russian) and Latin (English) layouts.
The minimal total simultaneous coverage of any pair of sets is 77.7% of the languages of the Internet (share of use), the maximum (the main sets) is 84.5% of the Internet. Total coverage of all sets is 90.1% + 9.9% of all romanization variants of languages with main script different from Latin or Cyrillic.
Switching between sets, if necessary, is performed "on the fly" in three presses.
Perhaps you noticed that the numeric row has no option with Shift
? That is where the language layer is located.
The main idea of the language layer is that it acts as an open access to typing in any writing language, with no ties to a particular language, no cascading restrictions on typing, and no effect on the convenience of typing for those users who do not use it, although the latter may have a rare need for it someday, too.
Of course, it is not possible to fit all the available additional language characters in 12 positions, so this layer/module gives the end user a choice of preset language character positions, separately for Cyrillic and Latin (the character set depends on the language of the current active layout).
Basically, the "main" sets are chosen for each script that have the greatest potential use and coverage. The user can switch to any other set as they use it, either for one-time needs or for further primary use.
Pressing the corresponding key in the numeric row with pressed Shift
will pass the character in lowercase, and the already familiar "long" press with Shift
will enter its version in uppercase.
The allocation of characters to the sets was designed to provide maximum coverage for each set.
Symbols from the language layer sets can be logically divided into two categories:
- independent, graphically unique symbols;
- graphically equivalent characters of the basic writing script with added diacritics.
From the characters of the first category, opening access to typing in the most popular languages of the Latin script, a core set was formed, present in the most part of Latin character sets.
Characters in the second category are potentially available for typing even without the use of a language layer, through an additional diacritic that fully covers the needs of all minimally used languages. However, it is necessary to provide input of such characters through a single press, without additional diacritics input, which we will call "simplified typing" hereafter.
The modifiable parts of the character sets consist of just the simplified character set, to increase the convenience of the users of these languages.
There are also graphically unique characters in the modifiable part of character sets that are not available to input from other character sets, but which have limited relevance and are of interest only to speakers of such languages.
It follows that each character set which contains the base set, in addition to language-specific characters (be they unique characters or simplified characters), open up the possibility of text input in a number of the most popular languages which can be in demand from any character set.
The situation is somewhat different for Cyrillic sets:
- most Cyrillic languages have a fairly extensive set of additional characters, different from the base script;
- almost all specific characters are graphically unique, and those rare ones that can potentially be displayed in a combined diacritic form cannot be displayed correctly in the majority of fonts;
- in Cyrillic sets it is not possible to identify a core set of potentially most popular characters – each set is of interest to its own group of users.
In connection with the above, Cyrillic sets are fully dynamic, and each of them contains its own unique set of characters.
Let's look at the main character sets for Latin and Cyrillic.
Latin main set – ñ å ä ö ü ł đ ı ß ø æ œ
The first 5 characters are dynamic and in this combination are present only in this set. The remaining 7 characters are stably present in most sets, extending their coverage to them.
This character set opens up access to full-fledged typing in the following languages: Spanish (and several dozen other languages it has influenced), German, French, Vietnamese, Swedish, Danish, Finnish, and Norwegian. Also, a set of unique graphical characters opens up basic typing capability (with input of other specific characters via diacritics) to Turkish, Polish, and Slovenian.
This does not list the myriad languages available for typing (both in basic script and via diacritics) without using a language layer – their support is self-evidently implied
The Latin sets are divided into two categories:
- supportive – which provide simplified typing: Turkish, Polish, Romanian, Hungarian, and 25 other sets, totaling more than 40 languages;
- allowing – sets with unique graphic characters necessary for a language that can only be typed in a given set: Icelandic/Old English, Maltese, Azerbaijani, a number of African languages (Hausa, Mossi, Fula, Yoruba, etc.), …
A total of 37 Latin sets were formed, 22 of which were formed with the basic symbol set, łđıßøæœ
.
In other 7 sets, in which 6 dynamic positions were required, additional position was sacrificed from ł
.
The remaining 8 sets are for languages with a large number of additional symbols, in which the basic symbol set has been truncated, in varying degrees, in favor of the main language of the set.
Some clarifications and attention to the specifics of languages
- in sets based on the Turkish variant of the Latin alphabet, there is a small optional repositioning of the characters
iI
andıİ
, for more logical typing –iİ
andıI
(switchable setting); - when selecting the Romanian language set, there is an optional replacement of the diacritical cedilla with a comma, to correct a popular misuse of the first one (switchable setting);
- in the "Icelandic/Old English" and "Mossi" sets, the symbol
đĐ
is replaced by the variants of the lettering used in these languages –ðÐ
andɖƉ
, respectively; - in sets in which the number of dynamic characters was restricted to 4,
ñ
was added, not even related to the main language of the set, as a character with maximum extension of coverage, without dependence on other characters; - in some sets, in which the number of dynamic characters required 6 positions, additional place was sacrificed from
ł
; - the sets for Polish, Lithuanian and Hungarian are provided both in a full form, with a truncated basic set, and as a partial simplified input, where the basic symbol set is present, and some language symbols are given to combined input (mostly with a single diacritical symbol - acute for Polish and Hungarian, ogonek for Lithuanian + ż);
- the sets for Czech and Slovak, even with abandoning the basic symbol set, are still partial-simplifying (without řďťťň for Czech, without acute forms for Slovak);
- the Polish, Lithuanian, Latvian, and Hungarian sets have only partially simplified typing, due to the extremely widespread use of diacritics in these languages. Simplified typing, if possible, covers characters with different diacritics, leaving for combined typing letters with a single diacritical symbol (acute for Polish and Hungarian, ogonek for Lithuanian);
- the previous two points can be fixed and optimized by additional user assignments;
- depending on the user's needs (switchable setting), the simplified characters can be input as in a combined form (two characters – letter+diacritics), or as a single Unicode character;
- the same dynamic characters occurring in different sets are located in the same positions, where possible.
All Latin sets (37)
Main | ñ | å | ä | ö | ü | ł | đ | ı | ß | ø | æ | œ |
Turkish | ç | ş | ğ | ö | ü | ł | đ | ı | ß | ø | æ | œ |
Polish (partial + base) | ñ | ą | ę | ż | ó | ł | đ | ı | ß | ø | æ | œ |
Polish (full − base) | ń | ą | ę | ż | ó | ł | ś | ć | ß | ø | æ | ź |
Czech (partial − base) | á | é | ó | í | ú | ý | ů | ě | ß | š | č | ž |
Romanian | î | ă | â | ș | ț | ł | đ | ı | ß | ø | æ | œ |
Hungarian (partial + base) | ñ | ő | ű | ö | ü | ł | đ | ı | ß | ø | æ | œ |
Hungarian (full − base) | á | ő | ű | ö | ü | ł | é | í | ß | ø | ó | ú |
Slovene, Croatian (Gaj's latin), Romany | č | š | ž | ǵ | ć | ł | đ | ı | ß | ø | æ | œ |
Slovak (full − base) | ň | ô | ä | ö | ü | ľ | ď | ť | ß | š | č | ž |
Turkic languages (full − base) | ñ | ê | ä | ö | ü | ū | ə | ı | ţ | ş | ç | ğ |
Lithuanian (partial + base) | č | š | ž | ė | ū | ł | đ | ı | ß | ø | æ | œ |
Lithuanian (full − base) | č | š | ž | ė | ū | ł | ų | į | ß | ą | ę | ż |
Latvian (full − base) | ā | ē | ī | ū | ǵ | ļ | ķ | ņ | ß | š | č | ž |
Estonian (base − ł) | õ | š | ä | ö | ü | ž | đ | ı | ß | ø | æ | œ |
Albanian, Northern Sotho | ç | š | ê | ô | ë | ł | đ | ı | ß | ø | æ | œ |
Old English, Icelandic | þ | ƿ | ſ | ö | ᵹ | ł | ð | ı | ß | ø | æ | œ |
Urdu (Roman script) (base − ł) | ū | ṛ | ṣ | ṭ | ẓ | z̤ | đ | ı | ß | ø | æ | œ |
Uzbek | ç | ş | ḡ | ō | ñ | ł | đ | ı | ß | ø | æ | œ |
Southern-Berber, Kanuri | ǝ | ŋ | ɣ | ʕ | ɍ | ł | đ | ı | ß | ø | æ | œ |
Twi, Yoruba (Benin) ... | ñ | ŋ | ɲ | ɛ | ɔ | ł | đ | ı | ß | ø | æ | œ |
Northern Sami (base − ł) | č | š | ž | á | ŋ | ŧ | đ | ı | ß | ø | æ | œ |
Esperanto (base − ł) | ĉ | ŝ | ĝ | ĥ | ĵ | ǔ | đ | ı | ß | ø | æ | œ |
Kurdish (Hawar alphabet) | ç | ş | ê | î | û | ł | đ | ı | ß | ø | æ | œ |
Turkmen (base − łđœ) | ç | ş | ä | ö | ü | ý | ň | ı | ß | ø | æ | ž |
Irish, Sundanese, Luba-Katanga | á | é | í | ó | ú | ł | đ | ı | ß | ø | æ | œ |
Luxembourgish, Uyghur | é | ë | ä | ö | ü | ł | đ | ı | ß | ø | æ | œ |
Maltese | ñ | ċ | ġ | ż | ħ | ł | đ | ı | ß | ø | æ | œ |
Maori, Samoan, Niuean | ā | ē | ī | ō | ū | ł | đ | ı | ß | ø | æ | œ |
Haitian, Javanese, Kikuyu | é | è | ò | ĩ | ũ | ł | đ | ı | ß | ø | æ | œ |
Hausa | ɓ | ɗ | ƙ | r̃ | ƴ | ł | đ | ı | ß | ø | æ | œ |
Volta–Niger languages (Yoruba, Igbo, ...) | ṅ | ṣ | ẹ | ọ | ụ | ị | đ | ı | ß | ø | æ | œ |
Western Frisian (base − ł) | â | ê | é | ô | û | ú | đ | ı | ß | ø | æ | œ |
Venda | ṅ | ḓ | ḽ | ṋ | ṱ | ł | đ | ı | ß | ø | æ | œ |
Sicilian | à | è | ì | ò | ù | ḍ | đ | ı | ß | ø | æ | œ |
Fula | ɓ | ɗ | ŋ | ɲ | ƴ | ł | đ | ı | ß | ø | æ | œ |
Mossi | ɓ | ɩ | ʋ | ɛ | ɔ | ł | ɖ | ı | ß | ø | æ | œ |
Let's move on to Cyrillic sets.
As mentioned earlier, in Cyrillic sets all positions are dynamic, due to which their number is much smaller than in Latin sets.
All Cyrillic sets are "allowing" because complete typing in the languages of these sets is not possible without using them.
Characters from Cyrillic sets are always input in a single form (with the exception of з́ and с́, which do not have a coherent representation).
The main Cyrillic set in terms of potential demand – ґ є і ї ӏ ў ѣ ѵ ѳ ӂ ӕ ӧ
This character set provides access to full-fledged typing in Ukrainian, Belarusian, Moldovan, Rusyn, Ossetian, Komi, a dialect of Ruska Roma, a number of Caucasian languages, and pre-revolutionary Russian.
All Cyrillic sets (6)
Ukrainian, Belarusian, Caucasian, … | ґ | є | і | ї | ӏ | ў | ѣ | ѵ | ѳ | ӂ | ӕ | ӧ |
Serbian, Montenegrin, Interslavic, … | ѓ | ќ | ђ | ћ | љ | њ | ѣ | џ | ј | ѕ | з́ | с́ |
Kazakh, Mongolian, Uzbek, Kyrgyz, Tajik, … | ғ | қ | ң | ҷ | ҳ | ү | ә | һ | ө | і | Ұ | ӯ |
Bashkir, Chuvash, Tatar, … | ғ | ҡ | ң | ӑ | ӗ | ү | ә | һ | ө | җ | ҙ | ҫ |
Abkhazian | ӷ | қ | ҟ | ҷ | ҳ | ҩ | ә | ҵ | ӡ | ҭ | ҽ | ҿ |
Yakut, Even(ki), Altai, Krymchak, … | ҕ | ҥ | ҋ | һ | ӏ | ү | ӈ | ј | ө | ӫ | ӱ | ӧ |
You can view all sets in corresponding GUI tab
The currently active character sets are also displayed in the first two tabs of GUI.
The GUI for buttons uses your default layout, no matter what it is.
Some final statistics:
according to the use of languages on the Internet by w3techs.com of 24.04.2022
- fully supported languages on any modes – 76.73% (90.20% without simplified typing)
- fully supported languages on main modes – 8.12%
- fully supported languages on additional modes – 5.36%
- romanized versions of languages of other scripts: all versions – 9.45%, some – 0.01%
For details on all (200+) languages, categories, usability, alphabets, and support, see external/languages.xlsx
Switchable option.
Automatically closes brackets and quotation marks <>
, «»
, ""
, “”
, ()
, []
and {}
, setting the carriage position between them.
Automatic closing single quotes is not provided, as this symbol is often used in the meaning of apostrophe, where a paired quote would be undesirable.
Switchable option.
Shifts the numeric row one position to the right, moving the zero to the first position.
Overridable option.
Called by non-numeric keys on numeric row (-_
and +=
)
Changes the integer part of the number. If the selected text cannot be treating as number – changes the last symbol by the unicode character position (combining symbols are ommited)
Called by pressing Ctrl-Shift-v
.
Pastes text from the clipboard in place of the selected text, saving the latter as a new clipboard value.
Switchable option.
Called by pressing Shift
twice.
When called, it reverses the case of each character.
When called with Ctrl
or Alt
it changes the case to upper or lower, respectively.
Navigation via simulated arrow keys supports all the original modifiers:
- with
Shift
to navigate with highlighting; - with
Ctrl
for word navigation (j
andk
will move the carriage to the beginning and end of the line, respectively); - with
LWin
instead ofAlt
to control window position. With additionalShift
to position the window between screens.
Unbreakable space – Shift-Space
(switchable functionality)
Additional Esc
– LShift-RShift
(switchable)
Minimize all windows – LWin-Enter
Restore minimized windows – LWin-Enter long
Pause/resume the script – Shift-Tilde
Restart the script – Ctrl-Shift-Tilde
The script has a minimal hinting graphical interface, called via Alt+F1
or by clicking on an icon in the tray.
The interface displays in the corresponding tabs:
- main layer – the user's system letter layout, language sets, reassignments;
- three tabs of symbol layers - long presses,
Alt
,Alt Long
; - tab with scan codes for user assignments;
- list of all language sets for two scripts with switching between them by double click;
- list of all hotkeys for both script control and other functions.
The GUI is also used to the initial binding of the current Latin and Cyrillic layouts.
The GUI can be modified depending on certain settings, displaying the view provided by these options. This includes the current language sets, paired bracket functionality, and custom reassignments.
The layer tabs respond to keystrokes on the physical keyboard, prompting its position on the screen.
Switching between tabs can be done by pressing the F1-F7
keys.
Other settings are managed in the menu called by LWin+F1
or by right mouse clicking on the tray icon.
There are three types of user assignments:
- assignment of additional keys in the number row, which, being empty, perform the function of decreasing and increasing the selected character/number, or, if there is no selection, mark next character;
- additional assignments in the letter part of the keyboard for the Latin script. After adapting the Latin layouts, there are 7 additional positions that can be used in addition to the language layer, depending on the individual needs of the user;
- assignment for switching between applications in combination with the
LWin
modifier. Starts the application if it is not running.
The assignments are defined in the config.ini
file, which is generated next to the executable file of the script after the first run.
For the first two types, the assignments are defined in the AdditionalAssignments
section by the pattern <key scancode>:<layout code or "1" for any layout>=<assignable character>
. Key scancodes can be viewed in the corresponding GUI tab. It's possible to specify modifier Shift
(set as +
before scan code) for assignments in alphabetic part of the keyboard. It is possible to specify unicode character value by pattern {U+<symbol code>}
.
Assignments for switching focus between applications are defined in the AltApps
section by the pattern <key scancode>=<process name>,<path to executable file>
. Specifying modifiers is not required.
After making changes via config.ini
, the script needs to be restarted.
In addition to what has been described in the previous sections, the user is suggested to try out the reassignment of control keys such as Backspace
, Enter
, CapsLock
and Esc
. Their more comfortable positioning with minimized unnecessary hand movements can be enabled in the corresponding menu item.
Suggested assignment:
Enter
performs theBackspace
function; withShift
pressed –Delete
;CapsLock
performs the function ofEnter
;Tilde
performs theEsc
function;Backspace
performs media control functions (base press - play/pause; withShift
- increase volume; withAlt
- decrease volume; withShift Long
- next media item; withAlt Long
- previous media item);- The
CapsLock
function can be assigned toEsc
by a separate setting.
This arrangement is more ergonomic and minimizes movement that detaches the fingers from home positions.
The current reassignments, both user and toggle control key options, are displayed in the GUI.
An example of a display with control key reassignment, parentheses, and numeric row shifting and key reassignment settings enabled:
Long presses can be undesirable in some applications, affecting their performance.
Such applications are added to the config.ini
file in the BlackList
section with the pattern <order number> = <process name>
, after which the script activity in these applications will be automatically suspended.
Windows only
- (optional) Install adapted versions of your Latin and/or Cyrillic layouts, select them in the OS settings and reboot the system.
- (optional) Install AHK, if you prefer to use an uncompiled version of the script.
- Place the files
qphyx.exe
(orqphyx.ahk
),modes.ini
and the files.ico
in a folder of your choice, runqphyx.*
. - Familiarize yourself with the usage. Set up in the menu (right mouse click on the tray icon or
LWin+F1
) the language sets, "long" press trigger duration and other options. Bind the current layouts via the GUI. - (optional) Add
qphyx.*
to the startup.
Буквенная раскладка была отделена от проекта и перенесена в отдельный репозиторий
qPhyx – дополнение к клавиатурной раскладке, превращающее её в мультиязычную, едино-символьную расширенную раскладку с повышенным удобством набора и некоторыми дополнительными функциями.
Преимущества:
- Единая символьная и языковая система набора.
- Полная поддержка всех языков латинской и кириллической письменностей, со всеми особенностями, без отдельных языковых раскладок.
- Расширенная символьная поддержка.
- Дополнительный внутренний и внешний функционал.
Лучший способ познакомиться с проектом – использовать его
tl;dr
Вы можете использовать любую буквенную раскладку, но предпочтительно использовать их адаптированные версии, очищенные от небуквенных символов, так как последние в полной мере предоставляются описываемым дополнением.
Одна из целей, преследуемых проектом – полное разделение слоёв. Для этого должны соблюдаться следующие условия:
- буквенные символы основной письменности полностью расположены в пределах буквенной части клавиатуры, с условием верхнего регистра при модификаторе
Shift
(очевидное условие, которым, однако, пренебрегают некоторые кириллические раскладки); - цифровые символы полностью расположены в цифровом ряду;
- все прочие символы полностью расположены на собственных слоях.
Подобное разделение зон ответственности, другими словами – модульная система, позволяет использовать каждую из частей независимо от прочих. В существующих же раскладках эти слои хаотично перемешаны между собой, налагая массу ограничений на каждую из частей, что также приводит к тому, что для малейшего изменения всё подобие системы должно быть изменено и использовано как форк изначального варианта раскладки, с потенциальными излишними каскадными переназначенями.
Для разграничения слоёв многие популярные клавиатурные раскладки были приведены в адаптированный вид. В адаптированных раскладках не было изменений позиционирования буквенных символов, расположенных в буквенной части клавиатуры, что позволяет использовать их как и ранее. Изменениям подверглись вспомогательные символы, а также буквенные символы, находящиеся за пределами буквенной части.
Буквенные символы основной части намеренно не были перепозиционированны, для сохранения изначального вида и навыков набора их пользователей, несмотря на то, что после адаптации, многие буквенные символы могут быть назначены на более удобные позиции.
Вы также можете использовать и стандартные виды раскладок, однако в таком случае некоторые символы будут повторяться, а сам принцип логического разделения зон несколько пострадает.
Адаптированные раскладки для латиницы и кириллицы, готовые к установке и использованию, находятся в папке external/layouts.
tl;dr
Есть три слоя – подAlt
, под"длинными" нажатиями
(базово – 0.15с, изменяется пользователем), и под их комбинацией.
Все три слоя расположены в буквенной части клавиатуры + цифровой ряд с диакритическими символами.
Все символы сгруппированы по логическим категориям и расположены с максимальным удобством набора.
Общий охват – 83 вспомогательных символа + 24 диакритических символа + 10 управляющих команд.
К символьному слою были выставлены следующие требования:
- расширенная символьная поддержка;
- поддержка добавочной диакритики;
- разделение по логическим категориям;
- добавление управляющих команд, для минимизации лишних движений;
- расположение в пределах стандартной 60% ANSI-клавиатуры;
- расположение наиболее востребованных символов на наиболее удобных позициях и слоях.
Для набора символов на слоях существует два подхода:
- выбор слоя для набора непосредственно в момент ввода, через зажатие модификатора;
- переключение между слоями с последующим набором.
В данном проекте используется первый подход, так как он позволяет минимизировать промежуточные действия.
При выборе "очевидных" модификаторов, исключив комбинируемые удерживаемые модификаторы, ввиду неудобства такого рода модификаторов, Shift
и Ctrl
из-за их собственного применения, а также AltGr
, за его неоднозначное использование, остался лишь Alt
.
В качестве неочевидного модификатора было выбрано "длинное нажатие". Да, это несколько расходится с привычным методом взаимодействия с клавиатурой, но, уверяю, этот модификатор гораздо удобнее даже привычных Alt/Ctrl/Shift
, в чём вы сможете убедиться сами, как только привыкнете к этой функциональности, переведя её в автоматизм. Как только это произойдёт, набор символов с этим модификатором окажется столь же простым как и обычный набор буквенных символов в нижнем регистре.
В качестве небольшого подтверждения этих слов – после многих проб и сравнений, самые востребованные символы расположились под модификатором длинного нажатия, именно из-за его удобства, по сравнению с прочими.
Базовое значение длительности зажатия для срабатывания данного модификатора – 0.15с. Может быть в любой момент переназначено пользователем на более комфортное. После введения в автоматизм, комфортным скорее всего окажется значение около 0.11с.
Таким образом получилось два слоя одинарных модификаторов, а также один слой из их комбинации – долгое нажатие с Alt
, что не эквивалентно комбинации из двух удерживаемых модификаторов, по причинам, описанным в прошлом абзаце.
Как было озвучено ранее, самые востребованные символы были расположены под модификатором длинного нажатия; альтернативные отображения и символы с меньшей востребованностью – под Alt
; вспомогательный набор символов – под их комбинацией AltLong
.
Как вы можете видеть, здесь расположены преимущественно символы, знакомые всем по стандартным раскладкам.
- символы сгруппированы по категориям – базовая математика, пунктуация, валюты, скобки;
- первые две категории, как самые востребованные из всех, находятся на домашних позициях пальцев;
- графически и/или логически близкие символы расположены на вертикально смежных позициях;
- скобки расположены зеркально вокруг домашнего ряда – открывающие вверху, закрывающие внизу;
- в правом верхнем углу расположен самый востребованный диакритический комбинируемый символ "акут", в первую очередь как маркер основного ударения.
Забегая наперёд, в раздел дополнительной функциональности, клавиши decr
и incr
в цифровом ряду отвечают за уменьшение/увеличение выделенного числа на 1, но могут быть переназначены пользователем для ввода дополнительных символов.
Половина символов данного набора представляет собой альтернативные отображения символов основного набора, расположенных на тех же позициях:
- дефис (используемый как минус) и минус;
- звёздочка (как умножение) и символ умножения;
- среднее тире и длинное тире;
- акут (основное ударение) и гравис (побочное ударение);
- восклицательный знак и перевёрнутый аналог;
- одинарная кавычка-апостроф и апостроф;
- …
Наследование позиций логических категорий соблюдено также и для символов, не имеющих альтернативного отображения.
На домашних позициях пальцев правой руки расположена навигация "стрелками", для минимизации отрыва руки для нажатий последних в стандартном расположении. Здесь же, по обе стороны от домашнего ряда, также расположены команды "вперёд"/"назад" и "отменить"/"повторить".
В цифровом ряду расположена вся используемая надстрочная комбинируемая диакритика (помимо акута и грависа, имеющих собственную позицию в буквенной части клавиатуры).
На этом слое расположены менее востребованные символы разных категорий. Наследование позиций логических категорий по возможности соблюдено.
Клавиши, на которых расположены управляющие команды на альтернативном слое, не имеют назначений на слое AltLong
, для сохранения возможности повтора команды через удержание клавиши.
В цифровом ряду расположена подстрочная комбинируемая диакритика, в половине случаев представляющая собой подстрочный вариант аналогичного символа из прошлого слоя. Два оставшихся после распределения места в цифровом ряду были отданы вспомогательным символам.
tl;dr
В цифровом ряду подShift
расположен ряд специфичных языковых символов.
Этот набор может быть выбран из многих предустановленных, в зависимости от потребностей пользователя. Каждый набор открывает доступ к целому ряду языков, так как они сгруппированы для обеспечения максимального охвата для каждого набора.
Набор символов выбирается раздельно для кириллической (русской) и латинской (английской) раскладок.
Минимальный полноценный одновременный охват любой пары наборов – 77.7% языков интернета (доля использования), максимальный (основные наборы) – 84.5% интернета. Общий охват всех наборов – 90.1% + 9.9% всех версий романизации языков, основная письменность которых отличается от латинской и кириллической.
Переключение между наборами, в случае необходимости, выполняется "на лету" в три нажатия.
Возможно, вы обратили внимание на то, что цифровой ряд не имеет варианта с Shift
. Именно там и расположен языковой слой.
Основная идея языкового слоя состоит в том, что он выступает в роли открывающего доступ к набору на любом языке письменности, без привязки к конкретному языку, без каскадных ограничений набора и никак не сказывается на удобстве набора для тех пользователей, которые им не пользуются, хотя и у последних когда-никогда может возникнуть редкая потребность в нём.
Конечно, уместить все возможные дополнительные языковые символы в 12 позиций не представляется возможным, потому данный слой/модуль предоставляет конечному пользователю выбор из предустановленных позиционирований языковых символов, раздельно для кириллицы и латиницы (набор символов зависит от языка текущей активной раскладки).
Базово выбраны "основные" наборы для каждой письменности, имеющие наибольшее потенциальное использование и охват. Пользователь может в процессе использования переключаться на любой другой набор, как для разовых потребностей, так и для дальнейшего основного использования.
Нажатие соответствующей клавиши в цифровом ряду с зажатым Shift
передаст на ввод символ в нижнем регистре, а, уже знакомое, "длинное" нажатие с Shift
введёт её вариант в верхнем регистре.
Распределение символов по наборам проводилось таким образом, чтобы обеспечить максимальный охват для каждого набора.
Символы из наборов языкового слоя можно логически разделить на две категории:
- самостоятельные, графически уникальные символы;
- графически эквивалентные символам базового набора письменности с добавленной диакритикой.
Из символов первой категории, открывающих доступ к набору текста на популярнейших языках латинской письменности был сформирован базовый набор, присутствующий в большинстве латинских наборов символов.
Символы второй категории потенциально доступны к набору даже без использования языкового слоя, через добавочную диакритику, которая в полной мере покрывает потребности всех минимально используемых языков. Однако необходимо предоставить ввод подобных символов через одинарное нажатие, без дополнительного ввода диакритики, который в дальнейшем мы будем называть "упрощённым вводом".
Изменяемые части символьных наборов состоят как раз из символов упрощённого ввода, для повышения удобства пользователей этих языков.
Также в изменяемой части символьных наборов встречаются и графически уникальные символы, недоступные ко вводу из других символьных наборов, однако имеющие ограниченную востребованность и представляющие интерес исключительно для носителей подобных языков.
Из этого следует, что каждый набор символов, содержащий базовый набор, помимо специфичных символов конкретного языка (будь то уникальные символы или символы упрощённого ввода), открывает возможность ввода на целом ряде популярнейших языков, доступ к которым может быть востребован из любого набора символов.
Для кириллических наборов положение несколько иное:
- большинство кириллических языков имеют довольно обширный набор дополнительных символов, отличных от базовой письменности;
- практически все специфичные символы являются графически уникальными, а те редкие, что потенциально могут быть отображены в виде с комбинируемой диакртикой, не могут быть корректно отображены на подавляющем большинстве шрифтов;
- в кириллических наборах не представляется возможным выделить единый набор потенциально самых востребованных символов – каждый набор представляет интерес для своей группы пользователей.
В связи с вышеперечисленным, кириллические наборы являются полностью динамическими, и каждый из них содержит свой уникальный набор символов.
Рассмотрим наборы символов для латиницы и кириллицы.
Латинский основной набор – ñ å ä ö ü ł đ ı ß ø æ œ
Первые 5 символов являются динамическими и в таком сочетании присутствуют только в данном наборе. Остальные 7 символов стабильно присутствуют в большинстве наборов, распространяя на них свой охват.
Данный набор символов открывает доступ к полноценному набору на следующих языках: испанский (и несколько десятков прочих, на которые он повлиял), немецкий, французский, вьетнамский, шведский, датский, финский и норвежский. Также набор уникальных графических символов открывает базовую возможность ввода (со вводом прочих специальных языковых символов через диакритику) к турецкому, польскому и словенскому.
Здесь не перечислено огромное множество языков, доступных ко вводу (как на базовой письменности, так и через диакритику) без использования языкового слоя – их поддержка подразумевается сама собой
Латинские наборы разделены на две категории:
- поддерживающие – предоставляющие упрощённый ввод: турецкий, польский, румынский, венгерский, и 25 прочих наборов, в сумме охватывающих более 40 языков;
- позволяющие – наборы с уникальными графическими символами, необходимыми для языка, которые могут быть введены только на данном наборе: исландский/древнеанглийский, мальтийский, азербайджанский, ряд африканских языков (хауса, мосси, фула, йоруба, и т.д.), …
Всего сформировано 37 латинских наборов, 22 из которых сформированы с базовым набором символов – łđıßøæœ
.
В ещё 7 наборах, в которых потребовалось 6 динамических позиций, дополнительное место было пожертвовано от ł
.
Оставшиеся 8 наборов предназначены для языков с большим количеством дополнительных символов, в которых базовый набор символов был в разной степени урезан, в пользу основного языка набора.
Отдельные уточнения и учёт языковых особенностей
- в наборах, основанных на турецком варианте латиницы предусмотрено небольшое опциональное перепозиционирование символов
iI
иıİ
, для более логичного ввода –iİ
иıI
(переключаемая опция); - при выборе румынского языкового набора предусмотрена опциональная замена диакритической седили на кому, для исправления распространённого ошибочного использования первой (переключаемая опция);
- в наборах "исландский/древнеанглийский" и "мосси" символ
đĐ
заменён на варианты начертания, использующиеся в данных языках –ðÐ
иɖƉ
, соответственно; - в наборы, в которых количество динамических символов ограничилось 4, была добавлена
ñ
, даже не относясь к основному языку набора, в качестве символа с максимальным расширением охвата, без зависимости от прочих символов; - наборы для польского, литовского и венгерского языков предусмотрены как в полном виде, с урезанным базовым набором, так и в виде частичного упрощённого ввода, где присутствует базовый набор символов, а некоторые языковые символы отданы на комбинированный ввод (преимущественно с единым диакритическим символом – акут для польского и венгерского, огонек для литовского + ż);
- наборы для чешского и словацкого, даже при отказе от базового набора символов, всё равно являются частично-упрощающими (без řďťň для чешского, без акутных форм для словацкого);
- прошлые два пункта могут быть исправлены и оптимизированы дополнительными пользовательскими назначениями;
- в зависимости от потребностей пользователя (переключаемая настройка), символы упрощённого ввода могут подаваться на ввод как в комбинированном виде (два символа – буква+диакритика), так и в виде цельного юникод-символа;
- одинаковые динамические символы, встречающиеся в разных наборах, расположены на одних и тех же позициях, где это было возможно.
Все варианты латинских наборов (37)
Main | ñ | å | ä | ö | ü | ł | đ | ı | ß | ø | æ | œ |
Turkish | ç | ş | ğ | ö | ü | ł | đ | ı | ß | ø | æ | œ |
Polish (partial + base) | ñ | ą | ę | ż | ó | ł | đ | ı | ß | ø | æ | œ |
Polish (full − base) | ń | ą | ę | ż | ó | ł | ś | ć | ß | ø | æ | ź |
Czech (partial − base) | á | é | ó | í | ú | ý | ů | ě | ß | š | č | ž |
Romanian | î | ă | â | ș | ț | ł | đ | ı | ß | ø | æ | œ |
Hungarian (partial + base) | ñ | ő | ű | ö | ü | ł | đ | ı | ß | ø | æ | œ |
Hungarian (full − base) | á | ő | ű | ö | ü | ł | é | í | ß | ø | ó | ú |
Slovene, Croatian (Gaj's latin), Romany | č | š | ž | ǵ | ć | ł | đ | ı | ß | ø | æ | œ |
Slovak (full − base) | ň | ô | ä | ö | ü | ľ | ď | ť | ß | š | č | ž |
Turkic languages (full − base) | ñ | ê | ä | ö | ü | ū | ə | ı | ţ | ş | ç | ğ |
Lithuanian (partial + base) | č | š | ž | ė | ū | ł | đ | ı | ß | ø | æ | œ |
Lithuanian (full − base) | č | š | ž | ė | ū | ł | ų | į | ß | ą | ę | ż |
Latvian (full − base) | ā | ē | ī | ū | ǵ | ļ | ķ | ņ | ß | š | č | ž |
Estonian (base − ł) | õ | š | ä | ö | ü | ž | đ | ı | ß | ø | æ | œ |
Albanian, Northern Sotho | ç | š | ê | ô | ë | ł | đ | ı | ß | ø | æ | œ |
Old English, Icelandic | þ | ƿ | ſ | ö | ᵹ | ł | ð | ı | ß | ø | æ | œ |
Urdu (Roman script) (base − ł) | ū | ṛ | ṣ | ṭ | ẓ | z̤ | đ | ı | ß | ø | æ | œ |
Uzbek | ç | ş | ḡ | ō | ñ | ł | đ | ı | ß | ø | æ | œ |
Southern-Berber, Kanuri | ǝ | ŋ | ɣ | ʕ | ɍ | ł | đ | ı | ß | ø | æ | œ |
Twi, Yoruba (Benin), … | ñ | ŋ | ɲ | ɛ | ɔ | ł | đ | ı | ß | ø | æ | œ |
Northern Sami (base − ł) | č | š | ž | á | ŋ | ŧ | đ | ı | ß | ø | æ | œ |
Esperanto (base − ł) | ĉ | ŝ | ĝ | ĥ | ĵ | ǔ | đ | ı | ß | ø | æ | œ |
Kurdish (Hawar alphabet) | ç | ş | ê | î | û | ł | đ | ı | ß | ø | æ | œ |
Turkmen (base − łđœ) | ç | ş | ä | ö | ü | ý | ň | ı | ß | ø | æ | ž |
Irish, Sundanese, Luba-Katanga | á | é | í | ó | ú | ł | đ | ı | ß | ø | æ | œ |
Luxembourgish, Uyghur | é | ë | ä | ö | ü | ł | đ | ı | ß | ø | æ | œ |
Maltese | ñ | ċ | ġ | ż | ħ | ł | đ | ı | ß | ø | æ | œ |
Maori, Samoan, Niuean | ā | ē | ī | ō | ū | ł | đ | ı | ß | ø | æ | œ |
Haitian, Javanese, Kikuyu | é | è | ò | ĩ | ũ | ł | đ | ı | ß | ø | æ | œ |
Hausa | ɓ | ɗ | ƙ | r̃ | ƴ | ł | đ | ı | ß | ø | æ | œ |
Volta–Niger languages (Yoruba, Igbo, …) | ṅ | ṣ | ẹ | ọ | ụ | ị | đ | ı | ß | ø | æ | œ |
Western Frisian (base − ł) | â | ê | é | ô | û | ú | đ | ı | ß | ø | æ | œ |
Venda | ṅ | ḓ | ḽ | ṋ | ṱ | ł | đ | ı | ß | ø | æ | œ |
Sicilian | à | è | ì | ò | ù | ḍ | đ | ı | ß | ø | æ | œ |
Fula | ɓ | ɗ | ŋ | ɲ | ƴ | ł | đ | ı | ß | ø | æ | œ |
Mossi | ɓ | ɩ | ʋ | ɛ | ɔ | ł | ɖ | ı | ß | ø | æ | œ |
Перейдём к кириллическим наборам.
Как было упомянуто ранее, в кириллических наборах все позиции являются динамическими, за счёт чего их количество значительно меньше латинских наборов.
Все кириллические наборы являются "позволяющими", так как полноценный ввод текста на языках этих наборов невозможен без их использования.
Символы из кириллических наборов всегда подаются на ввод в едином виде (за исключением з́ и с́, не имеющих цельного представления).
Основной по потенциальной востребованности набор – ґ є і ї ӏ ў ѣ ѵ ѳ ӂ ӕ ӧ
Данный набор символов открывает доступ к полноценному набору текста на украинском, белорусском, молдавском, русинском, осетинском, языке коми, диалекте руска рома, ряде кавказских языков, дореволюционном русском.
Все варианты кириллических наборов (6)
Ukrainian, Belarusian, Caucasian, … | ґ | є | і | ї | ӏ | ў | ѣ | ѵ | ѳ | ӂ | ӕ | ӧ |
Serbian, Montenegrin, Interslavic, … | ѓ | ќ | ђ | ћ | љ | њ | ѣ | џ | ј | ѕ | з́ | с́ |
Kazakh, Mongolian, Uzbek, Kyrgyz, Tajik, … | ғ | қ | ң | ҷ | ҳ | ү | ә | һ | ө | і | Ұ | ӯ |
Bashkir, Chuvash, Tatar, … | ғ | ҡ | ң | ӑ | ӗ | ү | ә | һ | ө | җ | ҙ | ҫ |
Abkhazian | ӷ | қ | ҟ | ҷ | ҳ | ҩ | ә | ҵ | ӡ | ҭ | ҽ | ҿ |
Yakut, Even(ki), Altai, Krymchak, … | ҕ | ҥ | ҋ | һ | ӏ | ү | ӈ | ј | ө | ӫ | ӱ | ӧ |
Вы можете ознакомиться со всеми наборами в соответствующей вкладке GUI
Текущие активные наборы символов также отображены на первых двух вкладках GUI.
GUI для подсказки использует вашу стандартную раскладку, какой бы она ни была.
Немного финальной статистики:
согласно данным использования языков в интернете с w3techs.com за 24.04.2022
- полностью поддерживаемые языки на любых наборах – 76.73% (90.20% без упрощённого ввода);
- полностью поддерживаемые языки на основных наборах – 8.12%;
- полностью поддерживаемые языки на дополнительных наборах – 5.36%;
- романизированные версии языков прочих письменностей: все версии – 9.45%, некоторые – 0.01%;
Подробнее со всеми (200+) языками, категориями, используемостью, алфавитами и поддержкой можно ознакомиться в файле external/languages.xlsx
Переключаемая функциональность.
Автоматически закрывает скобки и кавычки <>
, «»
, ""
, “”
, ()
, []
и {}
, устанавливая позицию каретки между ними.
Автоматическое закрытие одинарных кавычек не предусмотрено, так как данный символ часто используется в значении апострофа, где парная кавычка будет нежелательной.
Переключаемая функциональность.
Сдвигает цифровой ряд на одну позицию вправо, перемещая ноль в первую позицию.
Переопределяемая функциональность.
Вызывается через нецифровые клавиши цифрового ряда (-_
и +=
)
Увеличивает/уменьшает целую часть выделенного числа. Если выделенный текст не может быть приведён к числовому значению – изменяет последний символ согласно его unicode позиции (комбинируемые символы пропускаются).
Вызывается нажатием Ctrl-Shift-v
.
Вставляет текст из буфера обмена вместо выделенного текста, сохраняя последний в качестве нового значения буфера.
Переключаемая функциональность.
Вызывается двойным нажатием на Shift
.
При вызове изменяет регистр каждого символа на обратный.
При вызове с Ctrl
или Alt
меняет регистр на верхний или нижний, соответственно.
Навигация через имитацию клавиш-стрелок поддерживает все изначальные модификаторы:
- с
Shift
для навигации с выделением; - с
Ctrl
для навигации по словам (j
иk
будут выполнять функции перемещения каретки в начало и конец строки, соответственно); - с
LWin
вместоAlt
для управления положением окна. С дополнительнымShift
для позиционирования окна между экранами.
Неразрывный пробел – Shift-Space
(переключаемая функциональность)
Дополнительный Esc
– LShift-RShift
(переключаемо)
Свернуть все окна – LWin-Enter
Восстановить свёрнутые окна – LWin-Enter long
Пауза/возобновление работы скрипта – Shift-Tilde
Перезапуск скрипта – Ctrl-Shift-Tilde
Скрипт имеет минимальный подсказывающий графический интерфейс, вызываемый через Alt+F1
или кликом по иконке в трее.
В интерфейсе в соответствующих вкладках отображены:
- базовый слой – системная буквенная раскладка пользователя, языковые наборы, переназначения;
- три вкладки символьных слоёв – длинные нажатия,
Alt
,Alt Long
; - вкладка со скан-кодами клавиш для пользовательских назначений;
- список всех языковых наборов для двух письменностей с переключением двойным нажатием;
- список всех горячих клавиш как для управления скриптом, так и для прочих функций.
Также через GUI соответствующими кнопками производится первичная привязка текущих латинской и кириллической раскладок.
GUI может изменяться в зависимости от некоторых настроек, отображая вид предусматриваемый данными опциями. В их числе текущие языковые наборы, функциональность парных скобок, пользовательские переназначения.
Вкладки слоёв реагируют на нажатия клавиш на физической клавиатуре, подсказывая её положение на экране.
Переключение между вкладками может быть осуществлено клавишами F1-F7
.
Управление прочими настройками расположено в меню, вызываемом через LWin+F1
или ПКМ по иконке в трее.
Предусмотрены пользовательские назначения трёх типов:
- назначения дополнительных клавиш в цифровом ряду, которые, будучи пустыми, выполняют функции уменьшения и увеличения выделенного символа/числа (если нет текущего выделения – выделяет следующий символ без увеличения/уменьшения);
- дополнительные назначения в буквенной части клавиатуры для латинской письменности. После адаптации латинских раскладок в них появилось 7 дополнительных позиций, которые могут быть использованы в дополнение к языковому слою, в зависимости от индивидуальных потребностей пользователя;
- назначения для переключения между приложениями в комбинации с модификатором
LWin
. Запускает приложение, если оно не запущено.
Назначения прописываются в файле config.ini
, который генерируется рядом с исполняемым файлом скрипта после первого запуска.
Для первых двух типов, назначения прописывается в секции AdditionalAssignments
по шаблону <сканкод клавиши>:<код раскладки или "1" для срабатывания на любой раскладке>=<назначаемый символ>
. Скан коды клавиш можно посмотреть в соответствующей вкладке GUI. Возможно указание модификатора Shift
(указывается как +
перед скан кодом) для назначений в буквенной части клавиатуры. Возможно указание unicode значения символа по шаблону {U+<код символа>}
.
Назначения для переключения фокуса между приложениями прописываются в секции AltApps
по шаблону <сканкод клавши>=<имя процесса>,<путь к исполняемому файлу>
. Указание модификаторов не требуется.
После внесения ручных изменений в config.ini
требуется перезапуск скрипта.
В дополнение к перечисленному в прошлых разделах, пользователю предлагается опробовать переназначение управляющих клавиш, таких как Backspace
, Enter
, CapsLock
и Esc
. Их более комфортное расположение с минимизацией лишних движений рук может быть включено в соответствующем пункте меню.
Предлагаемое назначение:
Enter
выполняет функциюBackspace
; с зажатымShift
–Delete
;CapsLock
выполняет функциюEnter
;Tilde
выполняет функциюEsc
;Backspace
выполняет функции управления медиа (нажатие – воспроизведение/пауза; сShift
– увеличить громкость; сAlt
– уменьшить громкость; сShift Long
– следующий медиа-элемент; сAlt Long
– предыдущий медиа-элемент);- Функция
CapsLock
может быть назначена наEsc
отдельной настройкой.
Подобное расположение является более эргономичным и позволяет минимизировать движения, отрывающие пальцы от домашних позиций.
Текущие переназначения, как пользовательские, так и переключение опции управляющих клавиш, отображаются в GUI.
Пример отображения с включёнными настройками переназначения управляющих клавиш, парных скобок, сдвигом цифрового ряда и переназначением клавиш в цифровом ряду:
Отлов длинных нажатий и прочие назначения могут быть нежелательными в некоторых приложениях, сказываясь на их работе.
Такие приложения вносятся в файл config.ini
в секцию BlackList
по шаблону <порядковый номер>=<имя процесса>
, после чего действие скрипта в данных приложениях будет автоматически приостанавливаться.
Только для Windows
- (опционально) Установите адаптированные версии ваших раскладок для латиницы и кириллицы, выберите их в настройках ОС и перезагрузите систему.
- (опционально) Установите AHK, если предпочитаете использовать нескомпилированную версию скрипта.
- Разместите файлы
qphyx.exe
(илиqphyx.ahk
),modes.ini
и файлы.ico
в папке по вашему выбору, запуститеqphyx.*
. - Ознакомьтесь с использованием. Настройте в меню (ПКМ по иконке в трее или
LWin+F1
) языковые наборы, время срабатывания "длинных" нажатий и прочие пункты. Выполните привязку текущих раскладок через GUI. - (опционально) Добавьте
qphyx.*
в автозагрузку.