KeyPosé - это бесплатная альтернатива MousePosé для Windows. Вы можете увидеть это в действии на экране .
Вот пример скриншота:
Я дистанционно обучаю большую группу людей и расскажу о нескольких сочетаниях клавиш приложений.
Я видел на экране MousePose отображение нажатий клавиш; Есть ли аналогичный продукт для Windows?
Другие функции MousePose (причудливые указатели мыши и т. Д.) Не очень полезны для меня, просто OSD нажатий клавиш.
KeyPosé - это бесплатная альтернатива MousePosé для Windows. Вы можете увидеть это в действии на экране .
Вот пример скриншота:
Я очень рекомендую Carnac . Это бесплатный проект, размещенный на GitHub.
Утилита регистрации и презентации на клавиатуре для презентаций, скринкастов и для того, чтобы помочь вам стать лучшим пользователем клавиатуры.
Это красиво выполнено, красиво разработано и также с открытым исходным кодом на GitHub .
Найдите релиз форка с исправлениями и визуализацией ввода мышью здесь: https://github.com/bfritscher/carnac/releases/tag/v3-beta
I would like to share my tool -- keycastow.
https://brookhong.github.io/2014/04/28/keycast-on-windows.html
I've written an AutoHotkey_L script for this purpose.
To run it, use AutoHotkey_L (direct dl), it's FOSS. Also, with AutoHotkey you can compile script to EXE (simply Ahk2Exe.exe /in
DisplayPressedKeyOnScreen.ahk
/out
DisplayPressedKeyOnScreen.exe
).
It can display pressed keys OSD-like or standard Tool-tip near mouse cursor. Also, it displays mouse button clicks and wheel scrolling.
(note that frame & blurring is done for illustration purposes, the script itself only displays text w/o any disturbances)
Heres's the script (copy and paste to notepad, save as DisplayPressedKeysOnScreen.ahk):
#NoEnv #SingleInstance force #InstallKeybdHook Global KeyStates, MouseState, ClickCount, IdleDelay, LargeDisplay IdleDelay=3000 LargeDisplay=1 ; 0 = Tooltip near mouse pointer ; 1 = Big pane at screen bottom If LargeDisplay { ;Initializing GUI ;modded func originated from http://www.autohotkey.com/board/topic/8190-osd-function/ SysGet Monitor, Monitor GUIx := MonitorLeft GUIw := MonitorRight - MonitorLeft GUIh := (MonitorBottom - MonitorTop) * GUIw * 0.00003 If (GUIh > ((MonitorBottom - MonitorTop) * 0.3)) GUIh := (MonitorBottom - MonitorTop) * 0.3 opacity=230 fname="Tahoma" fsize:=GUIh * 0.65 ; really, pixel = 0.75 point, but with 0.75 lowercase letter with lower part (like "g") get cut fcolor=cccccc bcolor=222222 fformat="600" Gui +LastFound +AlwaysOnTop +ToolWindow -Caption Gui Margin, 0, 0 ;pixels of space to leave at the left/right and top/bottom sides of the window when auto-positioning. Gui Color, ffffff ;changes background color Gui Font, s%fsize% w%fformat%, %fname% ; 0x80 = SS_NOPREFIX -> Ampersand (&) is shown instead of underline one letter for Alt+letter navigation Gui Add, Text, c%bcolor% Center +0x80 w%GUIw% h%GUIh% BackgroundTrans VblkOsdCtrlName, tesT test test Gui Add, Text, c%fcolor% Center +0x80 w%GUIw% h%GUIh% BackgroundTrans VblkOsdCtrlName2 xp-3 yp-3, tesT test test WinSet ExStyle, +0x20 ; WS_EX_TRANSPARENT -> mouse klickthrough WinSet TransColor, ffffff %opacity% } TrayTip %A_ScriptName%, To Exit`, press the Right Windows logo key. Loop { Input SingleKey, L1 V M I B, GetKeyStates() ; IfInString ErrorLevel, EndKey ; CollectedText .= (CollectedText =="" ? "" : " + " ) . SubStr(ErrorLevel, 8) If SingleKey { SingleKeyText= If (SingleKey==Chr(27)) SingleKeyText=Esc Else If (SingleKey==Chr(32)) SingleKeyText=Space If (GetKeyState("LControl", "P") || GetKeyState("RControl", "P")) { If (SingleKey==Chr(10) && EnterPressed) SingleKeyText=Enter Else If (SingleKey >= Chr(1) && SingleKey <= Chr(26)) ; With "M" in Input, Ctrl-A through Ctrl-Z correspond to Chr(1) through Chr(26) SingleKeyText := Chr(Asc("A")-1+Asc(SingleKey)) } Else { If (SingleKey==Chr(10)) SingleKeyText=Enter } If Not SingleKeyText SingleKeyText:=SingleKey ShowKeys(KeyStates . SingleKeyText) ; . (MouseState ? "`n" . MouseState : "") EnterPressed=0 GoSub ClearMouseState } Else { ShowKeys(SubStr(KeyStates, 1, -3) . (MouseState ? " + " . MouseState : "")) } SetTimer TooltipOff, % -IdleDelay } RWin:: ExitApp ~*Enter:: EnterPressed=1 return ~*LButton:: ~*RButton:: ~*MButton:: ~*XButton1:: ~*XButton2:: MouseState := "Mouse " . SubStr(A_ThisHotkey, 3) . " Pressed" MouseTooltip() return ~*WheelDown:: ~*WheelUp:: ~*WheelLeft:: ~*WheelRight:: MouseState := "Mouse " . SubStr(A_ThisHotkey, 3) MouseTooltip() return ~*LButton Up:: ~*RButton Up:: ~*MButton Up:: ~*XButton1 Up:: ~*XButton2 Up:: ; MsgBox %A_PriorHotkey%`n%A_ThisHotkey% If (A_PriorHotkey == SubStr(A_ThisHotkey, 1, -3) && A_TimeSincePriorHotkey < 200) { ClickCount++ Suffix := " Clicked " . ClickCount . "x" } Else { ClickCount:=0 Suffix := " Released" } MouseState := "Mouse " . SubStr(A_ThisHotkey, 3, -3) . Suffix MouseTooltip() return MouseTooltip(){ GetKeyStates() ShowKeys(KeyStates . MouseState) SetTimer ClearMouseState, % -IdleDelay SetTimer TooltipOff, % -IdleDelay } ClearMouseState: MouseState= ClickCount=0 return TooltipOff: If LargeDisplay Gui Hide Else Tooltip return GetKeyStates() { KeyStates := "" . ( GetKeyState("LControl", "P") ? "LControl + " : "" ) . ( GetKeyState("RControl", "P") ? "RControl + " : "" ) . ( GetKeyState("LAlt", "P") ? "LAlt + " : "" ) . ( GetKeyState("RAlt", "P") ? "RAlt + " : "" ) . ( GetKeyState("LShift", "P") ? "LShift + " : "" ) . ( GetKeyState("RShift", "P") ? "RShift + " : "" ) . ( GetKeyState("LWin", "P") ? "LWin + " : "" ) . ( GetKeyState("AppsKey", "P") ? "AppsKey + " : "" ) . ( GetKeyState("F1", "P") ? "F1 + " : "" ) . ( GetKeyState("F2", "P") ? "F2 + " : "" ) . ( GetKeyState("F3", "P") ? "F3 + " : "" ) . ( GetKeyState("F4", "P") ? "F4 + " : "" ) . ( GetKeyState("F5", "P") ? "F5 + " : "" ) . ( GetKeyState("F6", "P") ? "F6 + " : "" ) . ( GetKeyState("F7", "P") ? "F7 + " : "" ) . ( GetKeyState("F8", "P") ? "F8 + " : "" ) . ( GetKeyState("F9", "P") ? "F9 + " : "" ) . ( GetKeyState("F10", "P") ? "F10 + " : "" ) . ( GetKeyState("F11", "P") ? "F11 + " : "" ) . ( GetKeyState("F12", "P") ? "F12 + " : "" ) . ( GetKeyState("Left", "P") ? "Left + " : "" ) . ( GetKeyState("Right", "P") ? "Right + " : "" ) . ( GetKeyState("Up", "P") ? "Up + " : "" ) . ( GetKeyState("Down", "P") ? "Down + " : "" ) . ( GetKeyState("Home", "P") ? "Home + " : "" ) . ( GetKeyState("End", "P") ? "End + " : "" )x . ( GetKeyState("PgUp", "P") ? "PgUp + " : "" ) . ( GetKeyState("PgDn", "P") ? "PgDn + " : "" ) . ( GetKeyState("Del", "P") ? "Del + " : "" ) . ( GetKeyState("Ins", "P") ? "Ins + " : "" ) . ( GetKeyState("BS", "P") ? "BS + " : "" ) . ( GetKeyState("Capslock", "P") ? "Capslock + " : "" ) . ( GetKeyState("Numlock", "P") ? "Numlock + " : "" ) . ( GetKeyState("PrintScreen", "P") ? "PrintScreen + " : "" ) . ( GetKeyState("Pause", "P") ? "Pause + " : "" ) } ShowKeys(text) { If LargeDisplay { Global blkOsdCtrlName, blkOsdCtrlName2, MonitorLeft, MonitorRight, MonitorBottom, MonitorTop, GUIx, GUIy, GUIh CoordMode Mouse, Screen MouseGetPos MouseX, MouseY If ((!GUIy) || (MouseX >= MonitorLeft && MouseX <= MonitorRight && MouseY >= GUIy && MouseY <= (GUIy+GUIh)) ) { If (MouseY < (MonitorTop + (MonitorBottom - MonitorTop) / 2) ) GUIy := MonitorBottom - (MonitorBottom - MonitorTop) * 0.2 Else GUIy := MonitorTop + (MonitorBottom - MonitorTop) * 0.2 } GuiControl Text, blkOsdCtrlName, %text% GuiControl Text, blkOsdCtrlName2, %text% Gui, Show, x%GUIx% y%GUIy% NoActivate } Else { Tooltip % text } }
Вы можете использовать экранную клавиатуру, чтобы показать нажатия клавиш, которые идут с окнами. Когда вы печатаете на своей физической клавиатуре, на экране выделяется указанная клавиша.
PointerFocus может отображать нажатия клавиш.
Presentation Pointer is a best alternative to MousePosé for Windows. It provides Pointer Effect, Mouse Clicks Effect, Keystrokes and even allows you to draw freely on the screen but not lock the screen. That's really an advantage of the program.
I have written a small Windows app called QiPress. It has controls to change the look-n-feel, display or ignore certain key-groups, even add static text (your own name or company name for example). Positioning is possible by disabling click-through and click-dragging the pop-up. There are other features which you probably may not require, but it covers mostly what you want.
Вы можете использовать PassMark KeyboardTest (бесплатная 30-дневная пробная версия, затем 24 доллара США на покупку).
FYI: