It is plugin for FM ranger ;).
It allows to enable support command hotkeys for other keyboard layouts.
By default, Russian and Ukrainian are supported enable.
You can add or replace support your keyboard layouts for ranger.
To do this, replace the following fields: other_keys
, en_keys
in a file:
~/.config/ranger/plugins/ranger_multiple_keyboard.py
You can use merge mode (usually for S-[0-9]
): field other_keys_mm
.
Simple to fill in the other_keys_mm (see examples in plugin).
It do not applied for a pager.
multiple_keyboard.py must be copied to ~/.config/ranger/plugins
fix crash on some file names(preview lags input) with translate-keys navigation in list files:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd0 in position 4: unexpected end of data
- You can open your favourite text editor (need support utf-8) and input all keys for your
native keyboard layout. For example to do it for German witch more intricate than Cyrillic group.
- Your En-inputting for all symbols without pressed Shift and below DE-inputting:
- de:
qwertzuiopü+asdfghjklöäyxcvbnm,.-
and up-numerical^1234567890ß´
- en:
qwertyuiop[]asdfghjkl;'zxcvbnm,./
and up-numericalˋ1234567890-=
(ˋ
is replaced)
- de:
- Your En-inputting for alphabetic symbols with pressed Shift and below DE-inputting:
- DE:
QWERTZUIOPÜ*ASDFGHJKLÖÄYXCVBNM;:_
and up-numerical°!"§$%&/()=?ˋ
(ˋ
is replaced) - EN:
QWERTYUIOP{}ASDFGHJKL:"ZXCVBNM<>?
and up-numerical~!@#$%^&*()_+
- DE:
- Your En-inputting for all symbols without pressed Shift and below DE-inputting:
- You can see equals hotkeys in column inputting. Deleting it...
- de:
zü+öäy-
and up-numerical^ß´
- en:
y[];'z/
and up-numericalˋ-=
(ˋ
is replaced) - DE:
ZÜ*ÖÄY;:_
and up-numerical°"§&/()=?ˋ
(ˋ
is replaced) - EN:
Y{}:"Z<>?
and up-numerical~@#^&*()_+
- de:
- Union variables and there are next:
- de:
zü+öäy-
+ZÜ*ÖÄY;:_
+^ß´
+°"§&/()=?ˋ
(ˋ
is replaced) - en:
y[];'z/
+Y{}:"Z<>?
+ˋ-=
+~@#^&*()_+
(ˋ
is replaced)
- de:
- Arrange it for plugin:
- Grouping:
de: "üÜä°§" + 'ö;Ö:' + 'Ä"' + 'ß-/&^`+' + '?_' + '´=)(*' + 'zZyY' en: "[{'~#" + ';<:>' + '"@' + '-/&^`+]' + '_?' + '=)(*}' + 'yYzZ'
- Part. Fill variable by symbols and utf-8, it will be translated in ascii:
other_keys = "üÜä°§" + "öÖ" + 'Ä' + 'ß' en_keys = "[{'~#" + ";:" + '"' + '-' other_keys_mm = ''
- All. Adding merge and handling ascii (fallback):
other_keys = "üÜä°§" + "öÖ" + 'Ä' + 'ß' en_keys = "[{'~#" + ";:" + '"' + '-' \ ';:"------_====zZ' other_keys_mm = '<>@/`^&+]?)(*}yY'
- Optimization:
other_keys = "üÜä°§öÖ" + 'Äß' en_keys = "[{'~#;:" + '"-' \ ';:"------_====zZ' other_keys_mm = '<>@/`^&+]?)(*}yY'
- Grouping:
- Fill variables (copy/paste) in for plugin using text from 4.4.
So, other_keys
and en_keys
need for translate letters for utf-8 into ascii, where translated char is a pair map other_keys
, en_keys
.
other_keys_mm
need for merge keys for two or more keyboards layout (usually for intersection). Too may been used to translate ascii chars (fallback).
other_keys = "фисвуапршолдьтщзйкыіегмцчнябюхъїжэєё'" + 'ФИСВУАПРШОЛДЬТЩЗЙКЫІЕГМЦЧНЯБЮХЪЇЖЭЄЁʼ' + '№'
en_keys = "abcdefghijklmnopqrsstuvwxyz,.[]];''``" + 'ABCDEFGHIJKLMNOPQRSSTUVWXYZ<>{}}:""~ʼ' + '#' \
'@$^&/&'
other_keys_mm = '";:?.,'
other_keys = "üÜä°§öÖ" + 'Äß'
en_keys = "[{'~#;:" + '"-' \
';:"------_====zZ'
other_keys_mm = '<>@/`^&+]?)(*}yY'
other_keys = "фисвуапршолдьтщзйкыіегмцчнябюхъїжэєё'" + 'ФИСВУАПРШОЛДЬТЩЗЙКЫІЕГМЦЧНЯБЮХЪЇЖЭЄЁʼ' + '№' + "üÜä°§öÖ" + 'Äß'
en_keys = "abcdefghijklmnopqrsstuvwxyz,.[]];''``" + 'ABCDEFGHIJKLMNOPQRSSTUVWXYZ<>{}}:""~ʼ' + '#' + "[{'~#;:" + '"-' \
'@$-&/&' + '$-"------&====zZ'
other_keys_mm = '";:?.,' + '<>@/`^&+]_)(*}yY'
other_keys = ""
en_keys = "" \
"uj"
other_keys_mm = "ju"
Unfortunately, in order to completely abandon the merge mode, we need to know the name of the keyboard layout when a key is pressed in a message for the program. It is assumed that this requires a modification of the Linux kernel and keyboard modules. But this would forever solve the input issue for all future console applications in any languages.