Search
Write a publication
Pull to refresh
0
0
Send message
Я с восхищением отношусь к способности/готовности людей прилагать практические усилия для улучшения повседневных задач, особенно связанных с набором текста (сам претендую туда же), Однако...

... придерживаюсь мнения несколько "перпендикулярного" положенному в основу данной статьи, а именно - функция "исправления раскладки в набранном тексте" является методологически вредной. Поясню: сам факт наличия этой функции продлевает/поощряет практику "зрячего" (противоположного "слепому") набора текста, которая и является корнем решаемой проблемы (на самом деле сразу нескольких проблем, наиболее важной из которых я бы назвал неправильную эргономику* при типовом способе ввода информации).

Лично я после ~20лет "зрячего" набора (с костылем в виде Punto Switcher) в возрасте 40+ в итоге "преодолел себя" и освоил "слепой набор" (к сожалению пока только на русском языке).
... и теперь считаю что если бы не было Punto Switcher-а, то мой период "зрячего" ввода продлился бы меньше и соответственно меньше моих сил ушло бы на освоение "слепого" (со всех точек зрения более правильного) набора.

Однако это не означает, что меня полностью устраивает стандартный подход к набору текста.
Как и автора статьи меня не устраивает способ индикации активной раскладки (точнее даже информирования о моменте ее переключения). Более того меня и стандартный способ смены раскладки не особо устраивает...

Я долго думал как можно улучшить ситуацию и с учетом того, что я использую только две раскладки (русскую и английскую) пришел к следующим выводам:

  1. Циклический переключатель раскладок это зло. За активацию каждой из двух раскладок должна отвечать отдельная кнопка.

  2. В момент переключения раскладки в середине моего поля зрения должен кратковременно отображаться соответствующий индикатор.

В итоге я создал свой AutoHotKey скрипт-помощник**, который:
А. Активирует русскую раскладку при двойном нажатии Shift-левый.
Б. Активирует английскую раскладку при двойном нажатии Shift-правый.
В. Кратковременно (~0,5сек) отображает текстовый индикатор с названием активного языка в центральной верхней части экрана.
Г. Воспроизводит приглушенный короткий звук при смене раскладки.

Да к новому способу переключения раскладки пришлось некоторое время привыкать, но он не подменяет а дополняет штатный, а значит другие пользователи без проблем смогут пользоваться моим ПК. На чужом ПК при отсутствии моего скрипта я буду испытывать некоторое неудобство, но не такое как если бы я не владел слепым набором и на нем не было бы Punto Switcher.

Тут и постоянный отрыв взгляда от области внимания (монитора) и перенос правой руки с клавиатуры на мышь и обратно.
Дополнительной инвестицией в улучшению персональной эргономики стала покупка клавиатуры без цифрового блока и с трекпойнтом (модель Lenovo SK-8855).

**
; ==========================
; Double-press inspired with https://autohotkey.com/board/topic/34078-using-double-shift-as-backspace-resolved/
;===========================

#NoEnv
#SingleInstance force
Process Priority,, High ;!!!
CoordMode, ToolTip, Screen

; ==========================
; If the script is not elevated, relaunch as administrator and kill current instance:

full_command_line := DllCall("GetCommandLine", "str")

; if not (A_IsAdmin or RegExMatch(full_command_line, " /restart(?!\S)"))
; {
; try ; leads to having the script re-launching itself as administrator
; {
; if A_IsCompiled
; Run *RunAs "%A_ScriptFullPath%" /restart
; else
; Run *RunAs "%A_AhkPath%" /restart "%A_ScriptFullPath%"
; }
; ExitApp
; }
; ==========================

STO=0.1 ; Short Time-Out duration
LTO=0.5 ; Long Time-Out duration

SC056::LShift ; L-BackSlash As L-Shift

;; ==========================
;; Double-press L-BackSlash As Double-press of L-Shift
;; ==========================
; ::SC056::
; {
; MsgBox "Left-Shift double press."
; SwtichLang(0x04190419) ; RU
; }
; Return
;; ==========================

~LShift::
KeyWait, LShift, T %STO% ; short timeout to prevent accidents
If Errorlevel
Return
KeyWait, LShift, D T %LTO% ; long timeout to prevent accidents
If Errorlevel
Return
{
; MsgBox "Left-Shift double press."
SwtichLang(0x04190419) ; RU
}
Return

~RShift::
KeyWait, RShift, T %STO% ; short timeout to prevent accidents
If Errorlevel
Return
KeyWait, RShift, D T %LTO% ; long timeout to prevent accidents
If Errorlevel
Return
{
; MsgBox "Right-Shift double press."
SwtichLang(0x04090409) ; EN
}
Return

; ==========================
SwtichLang(newLocale)
{
Thread Priority, 1 ; No re-entrance
If ( InputLocaleID := DllCall("GetKeyboardLayout", "UInt", ThreadID := DllCall("GetWindowThreadProcessId", "UInt", WinExist("A"), "UInt", 0), "UInt") )
{
If (InputLocaleID != newLocale)
{
ControlGetFocus,ctl
PostMessage 0x50,3,%newLocale%,%ctl%,A
SoundBeep 800, 100
SoundBeep 500, 500.
If (newLocale=0x04190419)
{
MsgBody=############# r##-РУССКИЙ-## r#############
} else If (newLocale=0x04090409) {
MsgBody=############ r##-ENGLISH-## r############
}
DisplayWidth = 2560 ; QHD=2560 ; FHD=1920
; DisplayHeight = 1440 ; QHD=1440 ; FHD=1080
Loop 100
ToolTip,%MsgBody%,(DisplayWidth-270)/2,0 ;DisplayHeight-57
ToolTip
return
}
}
}

Недавно меня начала интересовать тема шифрования. Увидел тут цикл ваших статей, обрадовался и решил внимательно прочитать его с самого начала. Судя по ссылкам в статьях самым началом цикла является "задача о рюкзаке". Вот на попытке чтения статьи описывающей задачу моё знакомство с циклом и застопорилось. Статья про задачу не выглядит законченной...
UPDATE:
Vivaldi for Android почему-то не показал спец-знаки.

Хочу уметь также, но с Делфи опыта нет. Как на VBnet писать приложение с возможностью сборки по Вин и Андроид (если конечно возможно)? FMX это что-то, что позволяет вот это все?
UPDATE:
Вопрос снят.
Нашел - FireMonkey Cross-Platform Framework.

Для получения УКЭП через Госключ нужен биометрический паспорт. А он мало у кого есть.

Лично меня, как покупателя недорогой, но мало распространенной фигни в части доставки всегда интересует наименьшая цена и почти никогда не интересует срок.

К вам большая просьба - донесите до кого надо, что лишать продавца возможности разослать скидку подписчикам объявления на том основании, что они подписались более месяца (срок тут не важен) это мягко говоря моветон.

Не вам это решать. Определять вопрос объема платной услуги имеет право только клиент (ПРОДАВЕЦ). Уберите ограничение по сроку подписки, но дайте продавцу возможность разослать скидку последнему одному/трем/десяти и т.д. вплоть до всех подписчиков. Если кто-то уже купил в другом месте, но не отписался - это его проблемы. Ни вы ни продавец из-за этого не должны лишаться возможности взаимовыгодного сотрудничества.

Когда я слышу про бесплатную систему, то я сразу вспоминаю правило "Если ты не платишь за услугу, значит товар в этой схеме - ты сам".

Соответственно прежде чем завязывать свои процессы на какую-то новую систему хорошо бы выяснить как её разработчик планирует отбивать затраты, которые он уже понес на ее создание (а также получать прибыль) ... и является ли для вас способ его заработка приемлемым...

Information

Rating
Does not participate
Registered
Activity

Specialization

Software Developer, CAD
From 150,000 ₽
Software development
OOP
Visual Basic
Visual Studio
C#
WPF
.NET
Git