Утиліта Windows, щоб відобразити, яку клавішу натискаю на екрані [закрито]


52

Я навчаю велику групу людей віддалено і буду охоплювати ряд клавіш швидкого доступу до додатків.

Я бачив на екрані MousePose екранне натискання клавіш; є подібний продукт для Windows?

Скріншот MousePose

Інші функції MousePose (модні покажчики миші тощо) для мене не дуже корисні, лише екранне меню клавіш.

Відповіді:


36

KeyPosé - безкоштовна альтернатива MousePosé для Windows. Ви можете побачити його в дії в скрінкасти .

Ось зразок скріншоту:

alt текст


@richard Ви більше ніж ласкаво просимо!
Джон Т

4
Я думаю, що це має деякі проблеми. Ви не можете змінити положення, де відображаються клавіші, іноді сіра зона продовжує відображатися, навіть якщо ви не натискаєте клавішу, також не відображається клавіша win / super. Комбінації, що включають більше двох натиснутих клавіш, як, наприклад, ctrl + alt + c, відображаються дивним чином, як спочатку CTRL, потім ALT (я думаю, він повинен відображати CTRL + ALT) і нарешті CTRL + ALT + C. Краще нічого, але, думаю, є кращі варіанти.
Альтер Лагос

Не реєструє ключі Tab чомусь ...
laggingreflex

Не реєструє комбінаторів WIN, не показував CTRL + SHIFT + ESC. Мех.
Ev0oD

1
Використовуйте Карнак нижче. Я тестував і те, і Карнак дає вам різні візуальні варіанти. github.com/bfritscher/carnac/releases/tag/v3-beta
Кай Ноак

13

Я дуже рекомендую Carnac . Це безкоштовний проект, розміщений на GitHub.

Утиліта ведення журналів на клавіатурі та презентацій для презентацій, скріншотів та допоможе вам стати кращим користувачем клавіатури.

Це прекрасно виконаний, добре розроблений, а також відкритий джерело на GitHub .

Знімок екрана

Знайдіть випуск fork з виправленнями та візуалізацією введення миші тут: https://github.com/bfritscher/carnac/releases/tag/v3-beta


Цікавий, але не такий гарний рендерінг, як KeyPosé.
Basj

Сторінка проекту містить лише carnac.applicationфайл, на youtube.com youtube.com/watch?v=qSUDfzUkwnc відображається a Carnac.exe. Лише пізніше я зрозумів, що можу запуститись carnac.applicationу Windows, і вона завантажує та встановлює програму. Я знайшов zip / exe також тут: github.com/downloads/Code52/carnac/Carnac.zip
Кай Ноак

2
@Basj Carnac набагато "красивіший", ніж KeyPosé (який лише букви показує як звичайний текст). За допомогою Carnac ви можете змінити зовнішній вигляд показаних клавіш (розмір шрифту, непрозорість, кольори).
Кай Ноак

@KaiNoack Я маю на увазі, що стиль за замовчуванням Карнака не такий стильний / мінімалістичний, як Keyposé. Дизайн за замовчуванням слід удосконалити;)
Basj

Як я можу змінити положення області відображення натискання клавіш? Я можу знайти будь-яку документацію.
jdhao

10

Я хотів би поділитися своїм інструментом - keycastow.

https://brookhong.github.io/2014/04/28/keycast-on-windows.html

введіть тут опис зображення


1
Чудова річ! Також LICECap теж чудовий, про одного не знав :)
LogicDaemon

@brookhong, що ти використовував для створення анімованих giff?
Рікардо C

@RicardoC It licecap, cockos.com/licecap
Брук

Microsoft Security Essentials класифікує це як загрозу. Ну добре!
rath

1
Цей інструмент не можна завантажити як двійковий файл; ви повинні створити його самостійно, що для мене є проблемою, оскільки я не маю дозволу.
Lqueryvg

5

Я для цього написав сценарій AutoHotkey_L.

Щоб запустити його, використовуйте AutoHotkey_L ( direct dl ), це FOSS. Крім того, за допомогою AutoHotkey ви можете компілювати сценарій до EXE (просто ).Ahk2Exe.exe /inDisplayPressedKeyOnScreen.ahk/outDisplayPressedKeyOnScreen.exe

Він може відображати натиснуті клавіші, подібні до екранного меню, або стандартну підказку поблизу курсору миші. Крім того, він відображає натискання кнопки миші та прокручування коліс.

(зауважте, що кадр і розмиття робиться для ілюстративних цілей, сам сценарій відображає лише текст без будь-яких порушень) Знімок екрана

Тут є сценарій (скопіюйте та вставте в блокнот, збережіть як DisplayPressKeysOnScreen.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, {LControl}{RControl}{LAlt}{RAlt}{LShift}{RShift}{LWin}{AppsKey}{F1}{F2}{F3}{F4}{F5}{F6}{F7}{F8}{F9}{F10}{F11}{F12}{Left}{Right}{Up}{Down}{Home}{End}{PgUp}{PgDn}{Del}{Ins}{BS}{Capslock}{Numlock}{PrintScreen}{Pause}
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
}
}

Я спробував запустити "DisplayPressKeyOnScreen.exe" на Win7 64bit. Я отримую повідомлення про помилку Windows cannot access the specified device, path, or file. You may not have the appropriate permissions to access the item.Чи є exe-файл автономним? Або я повинен заздалегідь встановити AutoHotkey?
Кай Ноак

@EchtEinfachTV Я впевнений, що це окремо. Крім того, я тільки що завантажив і успішно запустив його на Win 8.1 32-розрядний. Чи можемо ми порівняти MD5? Міна - d788516439ed743b3553eb3ae7b9082c, а розмір файлу - 332 288 байт.
LogicDaemon

Файл, який я завантажив із вашого посилання вище, показує мені MD5: D788516439ED743B3553EB3AE7B9082C та розмір файлу 332 288. Отже, це має бути точно той самий файл. Також дивно, що після повідомлення про помилку в Windows 7 сканер вірусів Panda Cloud вискочив, перемістивши «шкідливий» файл на карантин.
Кай Ноак

@EchtEinfachTV, мабуть, антивірус заборонив доступ до файлу, коли ви намагалися запустити його, тому ви отримали повідомлення Windows, що не можете отримати доступ до нього. Хоча я не знаю, чому це блокує, ви можете перевірити: це стандартний двійковий код автоматичної клавіші, з'єднаний з джерелом сценарію з простим текстом (але переформатованим).
LogicDaemon

1
@Amina ty, я думаю, це випадкове переміщення папок dropbox. Виправлю свою посаду.
LogicDaemon

2

Ви можете використовувати екранну клавіатуру для показу натискань клавіш, що постачаються разом із вікнами. Коли ви набираєте на фізичній клавіатурі, на екрані одна виділяється клавішею.


1
Дякую, я вже спробував це, але єдиний ключ модифікатора, який виділяється, - це клавіша Shift.
richardtallent

У Windows 7 введіть "клавіатуру" у вікні пошуку меню "Пуск" і виберіть "Екранна клавіатура"
xhafan

Це не для мене (виграй 10).
NounVerber

1

Presentation Pointer - найкраща альтернатива MousePosé для Windows. Він забезпечує ефект покажчика, ефект натискання миші, натискання клавіш і навіть дозволяє вільно малювати на екрані, але не блокувати екран. Це справді перевага програми.


1
... в даний час 30 USD.
miroxlav

1

PointerFocus може відображати ваші натискання клавіш.


3
на даний момент 12.50 USD
miroxlav

На жаль, він не може налаштувати / ігнорувати певні клавіші.
Basj

1

Я написав невеличку програму для Windows під назвою QiPress . У ньому є елементи керування, щоб змінювати зовнішній вигляд, відображати чи ігнорувати певні групи ключів, навіть додавати статичний текст (наприклад, власне ім’я чи назву компанії). Позиціонування можливо, відключивши натискання та перетягування спливаючих вікон. Є й інші функції, які, можливо, вам не знадобляться, але вони охоплюють переважно те, що ви хочете.


3
наразі 30 USD
miroxlav

Для уточнення версій: Безкоштовна версія: Для особистого, некомерційного використання. Деякі додаткові функції вимкнено (наприклад, різні мовні клавіатури, кілька моніторів, дисплей джойстика тощо). Без обмеження в часі Платна версія: для всіх цілей використання. Увімкнено всі розширені функції. Без обмеження в часі
aalapshah

0

Ви можете використовувати PassMark KeyboardTest (Безкоштовна 30-денна оцінка, потім придбати 24,00 долара США.)

введіть тут опис зображення

FYI:

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.