/AutoHotkey.docset/Contents/Resources/Documents/scripts/KeyboardOnScreen.htm
HTML | 246 lines | 207 code | 39 blank | 0 comment | 0 complexity | 5276c59bdf0478aae6389938b70dd553 MD5 | raw file
- <!DOCTYPE HTML>
- <html>
- <head>
- <title>On-Screen Keyboard (requires XP/2k/NT) -- by Jon</title>
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
- <meta http-equiv="X-UA-Compatible" content="IE=edge">
- <link href="../static/theme.css" rel="stylesheet" type="text/css" />
- <script src="../static/content.js" type="text/javascript"></script>
- </head>
- <body>
- <h1>On-Screen Keyboard (requires XP/2k/NT) -- by Jon</h1>
- <p>This script creates a mock keyboard at the bottom of your screen that shows
- the keys you are pressing in real time. I made it to help me to learn to
- touch-type (to get used to not looking at the keyboard). The size of the
- on-screen keyboard can be customized at the top of the script. Also, you
- can double-click the tray icon to show or hide the keyboard.
- </p>
- <p><a href="KeyboardOnScreen.ahk">Download This Script</a> | <a href="index.htm">Other Sample Scripts</a> | <a href="../AutoHotkey.htm">Home</a></p>
- <pre class="NoIndent"><em>;---- Configuration Section: Customize the size of the on-screen keyboard and
- ; other options here.</em>
- <em>; Changing this font size will make the entire on-screen keyboard get
- ; larger or smaller:</em>
- k_FontSize = 10
- k_FontName = Verdana <em>; This can be blank to use the system's default font.</em>
- k_FontStyle = Bold <em>; Example of an alternative: Italic Underline</em>
- <em>; Names for the tray menu items:</em>
- k_MenuItemHide = Hide on-screen &keyboard
- k_MenuItemShow = Show on-screen &keyboard
- <em>; To have the keyboard appear on a monitor other than the primary, specify
- ; a number such as 2 for the following variable. Leave it blank to use
- ; the primary:</em>
- k_Monitor =
- <em>;---- End of configuration section. Don't change anything below this point
- ; unless you want to alter the basic nature of the script.</em>
- <em>;---- Alter the tray icon menu:</em>
- Menu, Tray, Add, %k_MenuItemHide%, k_ShowHide
- Menu, Tray, Add, &Exit, k_MenuExit
- Menu, Tray, Default, %k_MenuItemHide%
- Menu, Tray, NoStandard
- <em>;---- Calculate object dimensions based on chosen font size:</em>
- k_KeyWidth = %k_FontSize%
- k_KeyWidth *= 3
- k_KeyHeight = %k_FontSize%
- k_KeyHeight *= 3
- k_KeyMargin = %k_FontSize%
- k_KeyMargin /= 6
- k_SpacebarWidth = %k_FontSize%
- k_SpacebarWidth *= 25
- k_KeyWidthHalf = %k_KeyWidth%
- k_KeyWidthHalf /= 2
- k_KeySize = w%k_KeyWidth% h%k_KeyHeight%
- k_Position = x+%k_KeyMargin% %k_KeySize%
- <em>;---- Create a GUI window for the on-screen keyboard:</em>
- Gui, Font, s%k_FontSize% %k_FontStyle%, %k_FontName%
- Gui, -Caption +E0x200 +ToolWindow
- TransColor = F1ECED
- Gui, Color, %TransColor% <em>; This color will be made transparent later below.</em>
- <em>;---- Add a button for each key. Position the first button with absolute
- ; coordinates so that all other buttons can be positioned relative to it:</em>
- Gui, Add, Button, section %k_KeySize% xm+%k_KeyWidth%, 1
- Gui, Add, Button, %k_Position%, 2
- Gui, Add, Button, %k_Position%, 3
- Gui, Add, Button, %k_Position%, 4
- Gui, Add, Button, %k_Position%, 5
- Gui, Add, Button, %k_Position%, 6
- Gui, Add, Button, %k_Position%, 7
- Gui, Add, Button, %k_Position%, 8
- Gui, Add, Button, %k_Position%, 9
- Gui, Add, Button, %k_Position%, 0
- Gui, Add, Button, %k_Position%, -
- Gui, Add, Button, %k_Position%, =
- Gui, Add, Button, %k_Position%, Bk
- Gui, Add, Button, xm y+%k_KeyMargin% h%k_KeyHeight%, Tab <em>; Auto-width.</em>
- Gui, Add, Button, %k_Position%, Q
- Gui, Add, Button, %k_Position%, W
- Gui, Add, Button, %k_Position%, E
- Gui, Add, Button, %k_Position%, R
- Gui, Add, Button, %k_Position%, T
- Gui, Add, Button, %k_Position%, Y
- Gui, Add, Button, %k_Position%, U
- Gui, Add, Button, %k_Position%, I
- Gui, Add, Button, %k_Position%, O
- Gui, Add, Button, %k_Position%, P
- Gui, Add, Button, %k_Position%, [
- Gui, Add, Button, %k_Position%, ]
- Gui, Add, Button, %k_Position%, \
- Gui, Add, Button, xs+%k_KeyWidthHalf% y+%k_KeyMargin% %k_KeySize%, A
- Gui, Add, Button, %k_Position%, S
- Gui, Add, Button, %k_Position%, D
- Gui, Add, Button, %k_Position%, F
- Gui, Add, Button, %k_Position%, G
- Gui, Add, Button, %k_Position%, H
- Gui, Add, Button, %k_Position%, J
- Gui, Add, Button, %k_Position%, K
- Gui, Add, Button, %k_Position%, L
- Gui, Add, Button, %k_Position%, `;
- Gui, Add, Button, %k_Position%, '
- Gui, Add, Button, x+%k_KeyMargin% h%k_KeyHeight%, Enter <em>; Auto-width.</em>
- <em>; The first button below adds %A_Space% at the end to widen it a little,
- ; making the layout of keys next to it more accurately reflect a real keyboard:</em>
- Gui, Add, Button, xm y+%k_KeyMargin% h%k_KeyHeight%, Shift%A_Space%%A_Space%
- Gui, Add, Button, %k_Position%, Z
- Gui, Add, Button, %k_Position%, X
- Gui, Add, Button, %k_Position%, C
- Gui, Add, Button, %k_Position%, V
- Gui, Add, Button, %k_Position%, B
- Gui, Add, Button, %k_Position%, N
- Gui, Add, Button, %k_Position%, M
- Gui, Add, Button, %k_Position%, `,
- Gui, Add, Button, %k_Position%, .
- Gui, Add, Button, %k_Position%, /
- Gui, Add, Button, xm y+%k_KeyMargin% h%k_KeyHeight%, Ctrl <em>; Auto-width.</em>
- Gui, Add, Button, h%k_KeyHeight% x+%k_KeyMargin%, Win <em>; Auto-width.</em>
- Gui, Add, Button, h%k_KeyHeight% x+%k_KeyMargin%, Alt <em>; Auto-width.</em>
- Gui, Add, Button, h%k_KeyHeight% x+%k_KeyMargin% w%k_SpacebarWidth%, Space
- <em>;---- Show the window:</em>
- Gui, Show
- k_IsVisible = y
- WinGet, k_ID, ID, A <em>; Get its window ID.</em>
- WinGetPos,,, k_WindowWidth, k_WindowHeight, A
- <em>;---- Position the keyboard at the bottom of the screen (taking into account
- ; the position of the taskbar):</em>
- SysGet, k_WorkArea, MonitorWorkArea, %k_Monitor%
- <em>; Calculate window's X-position:</em>
- k_WindowX = %k_WorkAreaRight%
- k_WindowX -= %k_WorkAreaLeft% <em>; Now k_WindowX contains the width of this monitor.</em>
- k_WindowX -= %k_WindowWidth%
- k_WindowX /= 2 <em>; Calculate position to center it horizontally.
- ; The following is done in case the window will be on a non-primary monitor
- ; or if the taskbar is anchored on the left side of the screen:</em>
- k_WindowX += %k_WorkAreaLeft%
- <em>; Calculate window's Y-position:</em>
- k_WindowY = %k_WorkAreaBottom%
- k_WindowY -= %k_WindowHeight%
- WinMove, A,, %k_WindowX%, %k_WindowY%
- WinSet, AlwaysOnTop, On, ahk_id %k_ID%
- WinSet, TransColor, %TransColor% 220, ahk_id %k_ID%
- <em>;---- Set all keys as hotkeys. See www.asciitable.com</em>
- k_n = 1
- k_ASCII = 45
- Loop
- {
- Transform, k_char, Chr, %k_ASCII%
- StringUpper, k_char, k_char
- if k_char not in <,>,^,~,,`,
- Hotkey, ~*%k_char%, k_KeyPress
- <em>; In the above, the asterisk prefix allows the key to be detected regardless</em>
- <em>; of whether the user is holding down modifier keys such as Control and Shift.</em>
- if k_ASCII = 93
- break
- k_ASCII++
- }
- return <em>; End of auto-execute section.</em>
- <em>;---- When a key is pressed by the user, click the corresponding button on-screen:</em>
- ~*Backspace::
- ControlClick, Bk, ahk_id %k_ID%, , LEFT, 1, D
- KeyWait, Backspace
- ControlClick, Bk, ahk_id %k_ID%, , LEFT, 1, U
- return
- <em>; LShift and RShift are used rather than "Shift" because when used as a hotkey,
- ; "Shift" would default to firing upon release of the key (in older AHK versions):</em>
- ~*LShift::
- ~*RShift::
- ~*LCtrl:: <em>; Must use Ctrl not Control to match button names.</em>
- ~*RCtrl::
- ~*LAlt::
- ~*RAlt::
- ~*LWin::
- ~*RWin::
- StringTrimLeft, k_ThisHotkey, A_ThisHotkey, 3
- ControlClick, %k_ThisHotkey%, ahk_id %k_ID%, , LEFT, 1, D
- KeyWait, %k_ThisHotkey%
- ControlClick, %k_ThisHotkey%, ahk_id %k_ID%, , LEFT, 1, U
- return
- ~*,::
- ~*'::
- ~*Space::
- ~*Enter::
- ~*Tab::
- k_KeyPress:
- StringReplace, k_ThisHotkey, A_ThisHotkey, ~
- StringReplace, k_ThisHotkey, k_ThisHotkey, *
- SetTitleMatchMode, 3 <em>; Prevents the T and B keys from being confused with Tab and Backspace.</em>
- ControlClick, %k_ThisHotkey%, ahk_id %k_ID%, , LEFT, 1, D
- KeyWait, %k_ThisHotkey%
- ControlClick, %k_ThisHotkey%, ahk_id %k_ID%, , LEFT, 1, U
- Return
- k_ShowHide:
- if k_IsVisible = y
- {
- Gui, Cancel
- Menu, Tray, Rename, %k_MenuItemHide%, %k_MenuItemShow%
- k_IsVisible = n
- }
- else
- {
- Gui, Show
- Menu, Tray, Rename, %k_MenuItemShow%, %k_MenuItemHide%
- k_IsVisible = y
- }
- return
- GuiClose:
- k_MenuExit:
- ExitApp
- </pre>
- </body>
- </html>