AutoHotkey Community

It is currently May 25th, 2012, 9:45 am

All times are UTC [ DST ]




Post new topic Reply to topic  [ 18 posts ]  Go to page 1, 2  Next
Author Message
 Post subject: Toddler Keyboard
PostPosted: June 29th, 2007, 3:14 am 
Offline

Joined: March 19th, 2007, 2:36 pm
Posts: 15
I've got a 1-year-old boy that's just starting to bang on the keyboard to this kind of game:
http://www.fisher-price.com/fp.aspx?st= ... nt&site=us

I've also got a 4-year-old girl who's starting to move up to side-scrollers:
http://www.nickjr.com/playtime/index.jhtml

My problem was they tended to bump the Windows key, or an Alt key, etc., and the game's window lost focus. (Or the 1-year-old somehow re-arranged all the desktop icons.) I looked for a long time for a kid's keyboard, or an overlay, or something, but it just doesn't exist.

So my answer was this simple script that does just two things: (1) disables all keys except the alpha-numerics and direction keys, and (2) for a held-down key, only sends a single key-press.

Code:
; Toddler Keyboard
; v1.0 29Jun2007
;
; AutoHotkey Version: 1.x
; Language:       English
; Platform:       Win9x/NT
; Author:         bobbo
;
; Script Function:
;    Prevents key presses to most keys other than A-F and 0-9.
;    Useful to prevent children's games from losing window focus.
;    Also only sends key press once if held down.
;
;-------------------------------------------------

#NoEnv ;
SendMode Input ;

;key list found at: http://www.autohotkey.com/docs/KeyList.htm

;-------------------------------------------------
;KEYS NOT ALLOWED:
;-------------------------------------------------

Tab::
Escape::
Backspace::

Delete::
Insert::
Home::
End::
PgUp::
PgDn::

ScrollLock::
CapsLock::
NumLock::

F1::
F2::
F3::
F4::
F5::
F6::
F7::
F8::
F9::
F10::
F11::
F12::
F13::
F14::
F15::
F16::
F17::
F18::
F19::
F20::
F21::
F22::
F23::
F24::

AppsKey::

LWin::
RWin::

LControl::
RControl::
LShift::
RShift::
LAlt::
RAlt::

PrintScreen::
CtrlBreak::
Pause::
Break::

Help::
Sleep::

Browser_Back::
Browser_Forward::
Browser_Refresh::
Browser_Stop::
Browser_Search::
Browser_Favorites::
Browser_Home::
Volume_Mute::
Volume_Down::
Volume_Up::
Media_Next::
Media_Prev::
Media_Stop::
Media_Play_Pause::
Launch_Mail::
Launch_Media::
Launch_App1::
Launch_App2::

;not an allowed key, so do nothing
return

;-------------------------------------------------
;KEYS ALLOWED:
;-------------------------------------------------

; I chose to let these through unaffected, to allow
; for certain game control
;Up::
;Down::
;Left::
;Right::
;Space::
;Enter::

Numpad0::
NumpadIns::
Numpad1::
NumpadEnd::
Numpad2::
NumpadDown::
Numpad3::
NumpadPgDn::
Numpad4::
NumpadLeft::
Numpad5::
NumpadClear::
Numpad6::
NumpadRight::
Numpad7::
NumpadHome::
Numpad8::
NumpadUp:
Numpad9::
NumpadPgUp::
NumpadDot::
NumpadDel::
NumpadDiv::
NumpadMult::
NumpadAdd::
NumpadSub::
NumpadEnter::

;only send the key press through once if held down continually
;(use curly brackets to send these special keys)
if (A_PriorHotkey <> A_ThisHotkey or A_TimeSincePriorHotkey > 500)
{
   Hotkey, %A_ThisHotkey%, Off
   Send, {%A_ThisHotkey%}
   Hotkey, %A_ThisHotkey%, On
}
return

a::
b::
c::
d::
e::
f::
g::
h::
i::
j::
k::
l::
m::
n::
o::
p::
q::
r::
s::
t::
u::
v::
w::
x::
y::
z::

0::
1::
2::
3::
4::
5::
6::
7::
8::
9::

;only send the key press through once if held down continually
;(send the literal keys)
if (A_PriorHotkey <> A_ThisHotkey or A_TimeSincePriorHotkey > 500)
{
   Hotkey, %A_ThisHotkey%, Off
   Send, %A_ThisHotkey%
   Hotkey, %A_ThisHotkey%, On
}
return

This script has really cut down on the, "Dad, fix the computer!" calls in my house; hope you find it useful, too.


Report this post
Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: June 29th, 2007, 4:19 am 
Offline

Joined: January 27th, 2007, 8:24 pm
Posts: 30
Location: Canada
Fantastic.. I hadnt even thought of using ahk to lock-down the wife's pc like that for our 4 yr old to use..

Ill prob compile and install it tomorrow.

Thanks for thinking outside the box !


Report this post
Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: June 29th, 2007, 11:00 am 
Offline

Joined: December 27th, 2005, 1:46 pm
Posts: 6837
Location: France (near Paris)
Good idea. In the past, I had found a freeware locking the Windows key using a hook DLL, and displaying fancy graphics depending on the key hits.
I also found that Tux Paint is a nice playing field for kids...
That said, I have found (in France) keyboard covers for kids, never bought one though.

_________________
Image vPhiLho := RegExReplace("Philippe Lhoste", "^(\w{3})\w*\s+\b(\w{3})\w*$", "$1$2")


Report this post
Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: June 30th, 2007, 10:06 am 
Offline

Joined: November 11th, 2005, 3:13 am
Posts: 202
great work, bobbo! previously i used Toddler Keys but this is very good and since it's in AHK i can easily adapt it to my needs.. hope you don't mind.. :wink:


Report this post
Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: March 29th, 2008, 12:21 pm 
Offline

Joined: February 25th, 2008, 4:13 pm
Posts: 37
Be sure to check out the KidzCD's. I mirror them on my freeware site http://www.MissingBytes.net in the Kids section, but the main site can be found at http://www.kidzcd.com

Mine are 5, 4, 1.5, & 6mo, so I've been where you are now, but the tool you put together will be very useful, thanks for taking the time to do it.


Report this post
Top
 Profile  
Reply with quote  
PostPosted: December 20th, 2008, 10:57 pm 
I know this is an old topic, but the theme is an everlasting one. I needed a slightly different thing, so I adapted the bobbo's script to suit my needs.

The idea behind the script is to disable all keyboard keys and mouse buttons by default, but allow the keyboard and mouse input by using a specific keyboard modifier - the left shift key. Whenever you need to use the keyboard or a mouse button, just hold the left shift key down. Read the comments in the script for the fuller description of the script's features.

What this means in practice is that you can surf the net, watch a movie, read a document, etc. while your dearest human being is banging against the keyboard. It is most useful for tasks that require few and occasional keyboard input.

Boris


Code:
; Toddler Keyboard
; v1.0 19dec2008
;
; AutoHotkey Version: 1.x
; Platform: WinNT/2k/XP
; Author:   Boris Mazic
;
; Script Function:
;   Based on bobbo's Toddler Keyboard script, but with the mind
;   on the parents using the computer, not the kids.
;
;   I have a kid that, like any other kid, feels a strong urge
;   to do whatever his dad is doing. Likewise so when it comes
;   to computers... It is next to impossible to surf the net or
;   watch a movie without him wanting to help a little, after all
;   all these keys are there to be pressed, banged against, popped
;   out, and what not. Are they not?!
;   
;   The idea behind the script is to allow some keyboard control,
;   while at the same time making the keyboard childproof. What
;   this means in practice is that you can surf the net, watch a
;   movie, read a document, etc. while your dearest human being
;   is banging against the keyboard. It is most useful for tasks
;   that require few and occasional keyboard input.
;
;   This is accomplished by disabling all keyboard keys and mouse
;   buttons by default, but allowing the keyboard and mouse input
;   by using a specific keyboard modifier. By default this is the
;   left shift key (you can change this relatively easy - just
;   search for TODO within this script and follow the instructions).
;
;   So, whenever you need a certain key combination, just add left
;   shift to it. For example, to paste a clipboard content, instead
;   of pressing Ctrl+V (which does nothing), press LShift+Ctrl+V. To
;   use mouse buttons, hold the left shift key down while pressing a
;   mouse button.
;
;   If you need a key combination that contains shift key, use right
;   shift key to do it: e.g. LShift+Ctrl+RShift+Space would produce
;   Ctrl+Shift+Space key combination.
;
;   You can suspend the script action by pressing LShift+Ctrl+Alt+S,
;   which will restore full keyboard access. Press Ctrl+Alt+S to enable
;   the script again.
;
;-------------------------------------------------

#NoEnv ;
SendMode Input ;


; TODO
; If you want a different keyboard modifier, make sure you change it here
; and all references to it in the section 'KEYS ALLOWED' below.
prefix := "LShift & "


ResendKey()
{
    global prefix
    key := A_ThisHotkey
    mod := (GetKeyState("RShift", "P") ? "+" : "")
    mod .= (GetKeyState("Alt", "P") ? "!" : "")
    mod .= (GetKeyState("Control", "P") ? "^" : "")
    mod .= (GetKeyState("LWin", "P") || GetKeyState("RWin", "P") ? "#" : "")
    key := RegExReplace(key, "^" . prefix . "\s*")
    hotkey := "*" . key

    Hotkey, %hotkey%, Off
    Send, %mod%{%key%}
    Hotkey, %hotkey%, On
}


;key list found at: http://www.autohotkey.com/docs/KeyList.htm


^!s::Suspend  ; Assign the toggle-suspend function to a hotkey.


;-------------------------------------------------
;KEYS NOT ALLOWED:
;-------------------------------------------------

; Mouse buttons

*LButton::
*RButton::
*MButton::

*WheelDown::
*WheelUp::

*XButton1::
*XButton2::


; Keyboard keys

*Tab::
*Escape::
*Backspace::

*Delete::
*Insert::
*Home::
*End::
*PgUp::
*PgDn::

*ScrollLock::
*CapsLock::
*NumLock::

*F1::
*F2::
*F3::
*F4::
*F5::
*F6::
*F7::
*F8::
*F9::
*F10::
*F11::
*F12::
*F13::
*F14::
*F15::
*F16::
*F17::
*F18::
*F19::
*F20::
*F21::
*F22::
*F23::
*F24::

*AppsKey::

*LWin::
*RWin::

*LControl::
*RControl::
*LShift::
*RShift::
*LAlt::
*RAlt::

*PrintScreen::
*CtrlBreak::
*Pause::
*Break::

*Help::
*Sleep::

*Browser_Back::
*Browser_Forward::
*Browser_Refresh::
*Browser_Stop::
*Browser_Search::
*Browser_Favorites::
*Browser_Home::
*Volume_Mute::
*Volume_Down::
*Volume_Up::
*Media_Next::
*Media_Prev::
*Media_Stop::
*Media_Play_Pause::
*Launch_Mail::
*Launch_Media::
*Launch_App1::
*Launch_App2::

*Up::
*Down::
*Left::
*Right::
*Space::
*Enter::

*Numpad0::
*NumpadIns::
*Numpad1::
*NumpadEnd::
*Numpad2::
*NumpadDown::
*Numpad3::
*NumpadPgDn::
*Numpad4::
*NumpadLeft::
*Numpad5::
*NumpadClear::
*Numpad6::
*NumpadRight::
*Numpad7::
*NumpadHome::
*Numpad8::
*NumpadUp:
*Numpad9::
*NumpadPgUp::
*NumpadDot::
*NumpadDel::
*NumpadDiv::
*NumpadMult::
*NumpadAdd::
*NumpadSub::
*NumpadEnter::

*a::
*b::
*c::
*d::
*e::
*f::
*g::
*h::
*i::
*j::
*k::
*l::
*m::
*n::
*o::
*p::
*q::
*r::
*s::
*t::
*u::
*v::
*w::
*x::
*y::
*z::

*0::
*1::
*2::
*3::
*4::
*5::
*6::
*7::
*8::
*9::

; keyboard specific keys
; TODO (change them according to your keyboard layout)
*š::
*đ::
*č::
*ć::
*ž::
*'::
*+::
*,::
*.::
*-::
*SC056::    ; <
*SC029::    ; CEDILLA

;not an allowed key, so do nothing
return

;-------------------------------------------------
;KEYS ALLOWED:
;-------------------------------------------------

; Mouse buttons

LShift & LButton::
LShift & RButton::
LShift & MButton::

LShift & WheelDown::
LShift & WheelUp::

LShift & XButton1::
LShift & XButton2::


; Keyboard keys

LShift & Tab::
LShift & Escape::
LShift & Backspace::

LShift & Delete::
LShift & Insert::
LShift & Home::
LShift & End::
LShift & PgUp::
LShift & PgDn::

LShift & ScrollLock::
LShift & CapsLock::
LShift & NumLock::

LShift & F1::
LShift & F2::
LShift & F3::
LShift & F4::
LShift & F5::
LShift & F6::
LShift & F7::
LShift & F8::
LShift & F9::
LShift & F10::
LShift & F11::
LShift & F12::
LShift & F13::
LShift & F14::
LShift & F15::
LShift & F16::
LShift & F17::
LShift & F18::
LShift & F19::
LShift & F20::
LShift & F21::
LShift & F22::
LShift & F23::
LShift & F24::

LShift & AppsKey::

LShift & LWin::
LShift & RWin::

LShift & PrintScreen::
LShift & CtrlBreak::
LShift & Pause::
LShift & Break::

LShift & Help::
LShift & Sleep::

LShift & Browser_Back::
LShift & Browser_Forward::
LShift & Browser_Refresh::
LShift & Browser_Stop::
LShift & Browser_Search::
LShift & Browser_Favorites::
LShift & Browser_Home::
LShift & Volume_Mute::
LShift & Volume_Down::
LShift & Volume_Up::
LShift & Media_Next::
LShift & Media_Prev::
LShift & Media_Stop::
LShift & Media_Play_Pause::
LShift & Launch_Mail::
LShift & Launch_Media::
LShift & Launch_App1::
LShift & Launch_App2::

LShift & Up::
LShift & Down::
LShift & Left::
LShift & Right::
LShift & Space::
LShift & Enter::

LShift & Numpad0::
LShift & NumpadIns::
LShift & Numpad1::
LShift & NumpadEnd::
LShift & Numpad2::
LShift & NumpadDown::
LShift & Numpad3::
LShift & NumpadPgDn::
LShift & Numpad4::
LShift & NumpadLeft::
LShift & Numpad5::
LShift & NumpadClear::
LShift & Numpad6::
LShift & NumpadRight::
LShift & Numpad7::
LShift & NumpadHome::
LShift & Numpad8::
LShift & NumpadUp::
LShift & Numpad9::
LShift & NumpadPgUp::
LShift & NumpadDot::
LShift & NumpadDel::
LShift & NumpadDiv::
LShift & NumpadMult::
LShift & NumpadAdd::
LShift & NumpadSub::
LShift & NumpadEnter::

LShift & a::
LShift & b::
LShift & c::
LShift & d::
LShift & e::
LShift & f::
LShift & g::
LShift & h::
LShift & i::
LShift & j::
LShift & k::
LShift & l::
LShift & m::
LShift & n::
LShift & o::
LShift & p::
LShift & q::
LShift & r::
LShift & s::
LShift & t::
LShift & u::
LShift & v::
LShift & w::
LShift & x::
LShift & y::
LShift & z::

LShift & 0::
LShift & 1::
LShift & 2::
LShift & 3::
LShift & 4::
LShift & 5::
LShift & 6::
LShift & 7::
LShift & 8::
LShift & 9::

; keyboard specific keys
; TODO (change them according to your keyboard layout)
LShift & š::
LShift & đ::
LShift & č::
LShift & ć::
LShift & ž::
LShift & '::
LShift & +::
LShift & ,::
LShift & .::
LShift & -::
LShift & SC056::    ; <
LShift & SC029::    ; CEDILLA

ResendKey()
return


Report this post
Top
  
Reply with quote  
PostPosted: December 21st, 2008, 1:23 am 
Offline

Joined: November 6th, 2008, 7:43 pm
Posts: 26
bmazic wrote:
What this means in practice is that you can surf the net, watch a movie, read a document, etc. while your dearest human being is banging against the keyboard.


I don't have kids, but I have cats, who like to practice their keyboarding while I'm asleep. This is perfect!


Report this post
Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: December 22nd, 2008, 12:43 am 
Offline
User avatar

Joined: November 2nd, 2008, 4:23 pm
Posts: 2906
Location: 127.0.0.1
Haha nice one. Ill try this out on my little brother. That windows key can get in the way of his key mashing...

_________________
aboutscriptappsscripts
Any code ⇈ above ⇈ requires AutoHotkey_L to run


Report this post
Top
 Profile  
Reply with quote  
PostPosted: December 23rd, 2008, 12:54 am 
Offline

Joined: November 26th, 2008, 4:16 pm
Posts: 32
bmazic wrote:
It is most useful for tasks that require few and occasional keyboard input.

Boris,

I was prompted about duplicate\non-existent keys & removed them from the script. Thanks for the script, it works great!


Code:
; Toddler Keyboard
; v1.0 19dec2008
;
; AutoHotkey Version: 1.x
; Platform: WinNT/2k/XP
; Author:   Boris Mazic
;
; Script Function:
;   Based on bobbo's Toddler Keyboard script, but with the mind
;   on the parents using the computer, not the kids.
;
;   I have a kid that, like any other kid, feels a strong urge
;   to do whatever his dad is doing. Likewise so when it comes
;   to computers... It is next to impossible to surf the net or
;   watch a movie without him wanting to help a little, after all
;   all these keys are there to be pressed, banged against, popped
;   out, and what not. Are they not?!
;   
;   The idea behind the script is to allow some keyboard control,
;   while at the same time making the keyboard childproof. What
;   this means in practice is that you can surf the net, watch a
;   movie, read a document, etc. while your dearest human being
;   is banging against the keyboard. It is most useful for tasks
;   that require few and occasional keyboard input.
;
;   This is accomplished by disabling all keyboard keys and mouse
;   buttons by default, but allowing the keyboard and mouse input
;   by using a specific keyboard modifier. By default this is the
;   left shift key (you can change this relatively easy - just
;   search for TODO within this script and follow the instructions).
;
;   So, whenever you need a certain key combination, just add left
;   shift to it. For example, to paste a clipboard content, instead
;   of pressing Ctrl+V (which does nothing), press LShift+Ctrl+V. To
;   use mouse buttons, hold the left shift key down while pressing a
;   mouse button.
;
;   If you need a key combination that contains shift key, use right
;   shift key to do it: e.g. LShift+Ctrl+RShift+Space would produce
;   Ctrl+Shift+Space key combination.
;
;   You can suspend the script action by pressing LShift+Ctrl+Alt+S,
;   which will restore full keyboard access. Press Ctrl+Alt+S to enable
;   the script again.
;
;-------------------------------------------------

#NoEnv ;
SendMode Input ;


; TODO
; If you want a different keyboard modifier, make sure you change it here
; and all references to it in the section 'KEYS ALLOWED' below.
prefix := "LShift & "


ResendKey()
{
    global prefix
    key := A_ThisHotkey
    mod := (GetKeyState("RShift", "P") ? "+" : "")
    mod .= (GetKeyState("Alt", "P") ? "!" : "")
    mod .= (GetKeyState("Control", "P") ? "^" : "")
    mod .= (GetKeyState("LWin", "P") || GetKeyState("RWin", "P") ? "#" : "")
    key := RegExReplace(key, "^" . prefix . "\s*")
    hotkey := "*" . key

    Hotkey, %hotkey%, Off
    Send, %mod%{%key%}
    Hotkey, %hotkey%, On
}


;key list found at: http://www.autohotkey.com/docs/KeyList.htm


^!s::Suspend  ; Assign the toggle-suspend function to a hotkey.


;-------------------------------------------------
;KEYS NOT ALLOWED:
;-------------------------------------------------

; Mouse buttons

*LButton::
*RButton::
*MButton::

*WheelDown::
*WheelUp::

*XButton1::
*XButton2::


; Keyboard keys

*Tab::
*Escape::
*Backspace::

*Delete::
*Insert::
*Home::
*End::
*PgUp::
*PgDn::

*ScrollLock::
*CapsLock::
*NumLock::

*F1::
*F2::
*F3::
*F4::
*F5::
*F6::
*F7::
*F8::
*F9::
*F10::
*F11::
*F12::
*F13::
*F14::
*F15::
*F16::
*F17::
*F18::
*F19::
*F20::
*F21::
*F22::
*F23::
*F24::

*AppsKey::

*LWin::
*RWin::

*LControl::
*RControl::
*LShift::
*RShift::
*LAlt::
*RAlt::

*PrintScreen::
*CtrlBreak::
*Pause::
*Break::

*Help::
*Sleep::

*Browser_Back::
*Browser_Forward::
*Browser_Refresh::
*Browser_Stop::
*Browser_Search::
*Browser_Favorites::
*Browser_Home::
*Volume_Mute::
*Volume_Down::
*Volume_Up::
*Media_Next::
*Media_Prev::
*Media_Stop::
*Media_Play_Pause::
*Launch_Mail::
*Launch_Media::
*Launch_App1::
*Launch_App2::

*Up::
*Down::
*Left::
*Right::
*Space::
*Enter::

*Numpad0::
*NumpadIns::
*Numpad1::
*NumpadEnd::
*Numpad2::
*NumpadDown::
*Numpad3::
*NumpadPgDn::
*Numpad4::
*NumpadLeft::
*Numpad5::
*NumpadClear::
*Numpad6::
*NumpadRight::
*Numpad7::
*NumpadHome::
*Numpad8::
*NumpadUp:
*Numpad9::
*NumpadPgUp::
*NumpadDot::
*NumpadDel::
*NumpadDiv::
*NumpadMult::
*NumpadAdd::
*NumpadSub::
*NumpadEnter::

*a::
*b::
*c::
*d::
*e::
*f::
*g::
*h::
*i::
*j::
*k::
*l::
*m::
*n::
*o::
*p::
*q::
*r::
*s::
*t::
*u::
*v::
*w::
*x::
*y::
*z::

*0::
*1::
*2::
*3::
*4::
*5::
*6::
*7::
*8::
*9::

; keyboard specific keys
; TODO (change them according to your keyboard layout)
*š::
*đ::
*č::
*ć::
*ž::
*'::
*+::
*,::
*.::
*-::
*SC056::    ; <
*SC029::    ; CEDILLA

;not an allowed key, so do nothing
return

;-------------------------------------------------
;KEYS ALLOWED:
;-------------------------------------------------

; Mouse buttons

LShift & LButton::
LShift & RButton::
LShift & MButton::

LShift & WheelDown::
LShift & WheelUp::

LShift & XButton1::
LShift & XButton2::


; Keyboard keys

LShift & Tab::
LShift & Escape::
LShift & Backspace::

LShift & Delete::
LShift & Insert::
LShift & Home::
LShift & End::
LShift & PgUp::
LShift & PgDn::

LShift & ScrollLock::
LShift & CapsLock::
LShift & NumLock::

LShift & F1::
LShift & F2::
LShift & F3::
LShift & F4::
LShift & F5::
LShift & F6::
LShift & F7::
LShift & F8::
LShift & F9::
LShift & F10::
LShift & F11::
LShift & F12::
LShift & F13::
LShift & F14::
LShift & F15::
LShift & F16::
LShift & F17::
LShift & F18::
LShift & F19::
LShift & F20::
LShift & F21::
LShift & F22::
LShift & F23::
LShift & F24::

LShift & AppsKey::

LShift & LWin::
LShift & RWin::

LShift & PrintScreen::
LShift & CtrlBreak::
LShift & Pause::
LShift & Break::

LShift & Help::
LShift & Sleep::

LShift & Browser_Back::
LShift & Browser_Forward::
LShift & Browser_Refresh::
LShift & Browser_Stop::
LShift & Browser_Search::
LShift & Browser_Favorites::
LShift & Browser_Home::
LShift & Volume_Mute::
LShift & Volume_Down::
LShift & Volume_Up::
LShift & Media_Next::
LShift & Media_Prev::
LShift & Media_Stop::
LShift & Media_Play_Pause::
LShift & Launch_Mail::
LShift & Launch_Media::
LShift & Launch_App1::
LShift & Launch_App2::

LShift & Up::
LShift & Down::
LShift & Left::
LShift & Right::
LShift & Space::
LShift & Enter::

LShift & Numpad0::
LShift & NumpadIns::
LShift & Numpad1::
LShift & NumpadEnd::
LShift & Numpad2::
LShift & NumpadDown::
LShift & Numpad3::
LShift & NumpadPgDn::
LShift & Numpad4::
LShift & NumpadLeft::
LShift & Numpad5::
LShift & NumpadClear::
LShift & Numpad6::
LShift & NumpadRight::
LShift & Numpad7::
LShift & NumpadHome::
LShift & Numpad8::
LShift & NumpadUp::
LShift & Numpad9::
LShift & NumpadPgUp::
LShift & NumpadDot::
LShift & NumpadDel::
LShift & NumpadDiv::
LShift & NumpadMult::
LShift & NumpadAdd::
LShift & NumpadSub::
LShift & NumpadEnter::

LShift & a::
LShift & b::
LShift & c::
LShift & d::
LShift & e::
LShift & f::
LShift & g::
LShift & h::
LShift & i::
LShift & j::
LShift & k::
LShift & l::
LShift & m::
LShift & n::
LShift & o::
LShift & p::
LShift & q::
LShift & r::
LShift & s::
LShift & t::
LShift & u::
LShift & v::
LShift & w::
LShift & x::
LShift & y::
LShift & z::

LShift & 0::
LShift & 1::
LShift & 2::
LShift & 3::
LShift & 4::
LShift & 5::
LShift & 6::
LShift & 7::
LShift & 8::
LShift & 9::

; keyboard specific keys
; TODO (change them according to your keyboard layout)
LShift & š::
LShift & đ::
LShift & č::
LShift & ć::
LShift & ž::
LShift & '::
LShift & +::
LShift & ,::
LShift & .::
LShift & -::
LShift & SC056::    ; <
LShift & SC029::    ; CEDILLA

ResendKey()
return


Report this post
Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: January 2nd, 2009, 6:43 pm 
Offline

Joined: November 6th, 2008, 7:43 pm
Posts: 26
This does not block the scrollpad on my laptop. Not a big deal, just an fyi :D


Report this post
Top
 Profile  
Reply with quote  
 Post subject: Toddler Friend
PostPosted: April 29th, 2009, 10:27 pm 
Great stuff, guys. Thanks!

I now took it a step further and rewritten it all to combine features from all the above versions, and have a UI to work with.

I called it Toddler Friend and it's in version 0.9b (beta, not tested enough)

Features:
- Override key (as before - defaulted it to NumLock but easy to change)
- Convert blocked keys to space (for 'hit any key' games)
- Ability to allow mouse, alphanumerics, arrows independently
- Prevent key repeat (not working quite right though)
- Hotkeys to toggle all features
- UI to modify the features in a user friendly way
- Easy to change settings

Code:
; Toddler Friend v 0.9b
; v1.0 48.02 April 09
;
; AutoHotkey Version: 1.x (fails with version 1.0.44.07)
; Platform: WinNT/2k/XP
; Author:   Greg De Haas (PlaceboZA, www.grelly.com)
;
; Script Function:
; Allows you to block keyboard and mouse functions selectively, to prevent your adorable wadget
; from doing something silly (like closing the window or rebooting)
; There is also an override key of NumLock (easily changeable) which will allow you to use the keyboard normally while holding
; In addition, you can force all blocked keys to produce a space (Nice for games where 'hit any key' applies)
; And that's not all... you get key repeat prevention as well (although this isn't quite right as at time of writing)
; Feel free to change settings below
;
; Things you might like to change:
; - The override key & startup settings. Just change it in the Public Settings section below
; - If you, for example, want spacebar hotkey to be considered as part of the alpha-numeric keys,
;   then simply move it into the alpha-numeric section
; - I don't convert mouse buttons to spaces when using the 'replace keys with space' option, because my daughter hits the touchpad too easily
; - Compile to exe, give it an icon, remove tray icon, etc
;
; TODO:
; - When enabled & with allow mouse buttons, you still can't drag windows. Not sure why.
;   - The prevention of repeat keys doesn't quite work right.. seems to still allow for a single follup repeat
; - Left Control and Shift keys couldn't be blocked because they interfere with the global shortcuts
; - Some laptops' touchpad scrolls aren't blocked apparently
;   - Block Ctrl-Alt-Del ? Debatable.. and not really necessary IMO
;
; Credits:
; Boris Mazic and bobbo for the original idea of the Toddler Keyboard scripts

#NoEnv ;
SendMode Input ;

;----------- Public Settings (Change as needed) -------------------
OverrideKey := "NumLock"  ;Remember to comment it out from the hotkeys below (don't block it) and uncomment the one that was used previously
ShowSettingsOnStart = true
StartEnabled := false
StartWithAllowAlphaNumeric := false
StartWithAllowArrows := false
StartWithConvertToSpace := false
StartWithPreventRepeats := true
AllowConvertMouseButtonsToSpace := false   ;If false, then only keyboard actions result in space, if Convert To Space is on

;----------- Private Settings -------------------------------------
Version := "0.9b"

;----------- Initial Values ---------------------------------------
m_enabled := (StartEnabled) ? 1 : 0
m_allowAlphanumerics := (StartWithAllowAlphaNumeric) ? 1 : 0
m_allowMouse := (StartWithAllowMouse) ? 1 : 0
m_allowArrows := (StartWithAllowArrows) ? 1 : 0
m_replaceWithSpace := (StartWithConvertToSpace) ? 1 : 0
m_preventRepeats := (StartWithPreventRepeats) ? 1 : 0
m_hintState := 0   ;0=no hint, 1=hint displayed, 2=busy building

;Suspend if needed
if !m_enabled
      Suspend On

;Set up menu   
Menu, TRAY, NoStandard
Menu, TRAY, Add, Show Settings..., OnShowSettings
Menu, TRAY, Add, Exit, OnExitApp
Menu, TRAY, Default, Show Settings...

if ShowSettingsOnStart
   DisplaySettings()
      
return

ResendKeyEx(key, prevKey, timeSince, noRepeat)
{       
   if (!noRepeat or !CheckIfRepeat(key, prevKey, timeSince))
      ResendKey(key)
}

CheckIfRepeat(key, prevKey, timeSince)
{
   return (key = prevKey and timeSince < 150) ? true : false
}

ResendKey(key)
{
      global OverrideKey
      
      mod := (GetKeyState("RShift", "P") ? "+" : "")
      mod .= (GetKeyState("Alt", "P") ? "!" : "")
      mod .= (GetKeyState("Control", "P") ? "^" : "")
      mod .= (GetKeyState("LWin", "P") || GetKeyState("RWin", "P") ? "#" : "")
      


      key := RegExReplace(key, "^" . OverrideKey . "\s+\&\s*")    ;Remove override key if necessary
      key := RegExReplace(key, "^\*")
      
      ;FileAppend, %mod% + %key%`n, C:\keys.txt
               
      ;Resend key
      hotkey := "*" . key   
      Hotkey, %hotkey%, Off, UseErrorLevel
      Send, %mod%{%key%}
      Hotkey, %hotkey%, On, UseErrorLevel
}

CheckForOverride()
{
   global OverrideKey
   state := GetKeyState(OverrideKey, "P")
      return state
}

DisplaySettings()
{
   global Version
   global m_allowAlphanumerics
   global m_replaceWithSpace
   global m_allowMouse
   global m_enabled
   global m_allowArrows
   global m_preventRepeats
   global OverrideKey 
   grayed := (m_enabled = 0) ? "Disabled" : ""
   note := "Global Shortcuts: " . OverrideKey . " + Ctrl + Shift + [Option]"
   
   Gui 8: Default
   Gui, Destroy 
   Gui, +AlwaysOnTop +LastFound +ToolWindow  ; +ToolWindow avoids a taskbar button and an alt-tab menu item.
   Gui, Color, EEF2FF
   Gui, Font, s8, Tahoma
   Gui, Add, CheckBox, x12 y7 Autosize h20 vm_enabled Checked%m_enabled% gOnEnable, [E]nable Toddler Control
   Gui, Add, CheckBox, x12 y27 Autosize h20 %grayed% Checked%m_replaceWithSpace% vm_replaceWithSpace, [R]eplace blocked keys with space
   Gui, Add, CheckBox, x12 y47 Autosize h20 %grayed% Checked%m_preventRepeats% vm_preventRepeats, [P]revent held keys from repeating
   Gui, Add, GroupBox, x12 y70 w300 h90, Block everything except...
   Gui, Add, CheckBox, x22 y87 Autosize h20 %grayed% Checked%m_allowAlphanumerics% vm_allowAlphanumerics, [A]lpha-numeric keys
   Gui, Add, CheckBox, x22 y107  Autosize h20 %grayed% Checked%m_allowMouse% vm_allowMouse, [M]ouse buttons
   Gui, Add, CheckBox, x22 y127 Autosize h20 %grayed% Checked%m_allowArrows% vm_allowArrows, [C]ursor/arrow keys
   Gui, Add, Text, x15 y165 w300 h20, %note%
   Gui, Add, Button, x162 y192 w70 h20 gOnOK Default, &OK
   Gui, Add, Button, x242 y192 w70 h20 gOnCancel, &Cancel 
   Gui, Show, Center h196 Autosize, [T]oddler Friend v%Version%, PlaceboZA (grelly.com)   ; NoActivate avoids deactivating the currently active window.   
   Gui 1: Default
   return
      
8GuiEscape:
   Gui 8: Cancel
   return
      
OnEnable:
   Gui 8: Default
   GuiControlGet, state, , m_enabled
   enable := (state = 1) ? "Enable" : "Disable"
   GuiControl, %enable%, m_replaceWithSpace
   GuiControl, %enable%, m_preventRepeats
   GuiControl, %enable%, m_allowAlphanumerics
   GuiControl, %enable%, m_allowMouse
   GuiControl, %enable%, m_allowArrows
   Gui 1: Default
   return
   
OnOK:
   Gui 8: Submit
   if m_enabled
      Suspend Off
   else
      Suspend On
   return
   
OnCancel:
   Gui 8: Cancel
   return
}

DisplayQuickHint(HintText, Delay)              ;Gui #9 is the hint
{
   ;Use HintState and close window if still displaying
   global HintState
   if HintState = 1
      Gui, 9: Destroy ;Close it
      
   ;Init
   HintState = 2
   
   ;Set Gui
   Gui 9: +AlwaysOnTop   +LastFound +ToolWindow  ; +ToolWindow avoids a taskbar button and an alt-tab menu item.
   Gui 9: Color, EEF2FF
   Gui 9: Font, s8 bold, Verdana
   Gui 9: Add, Text, cBlack, %HintText%     
   Gui 9: -Caption   +Border ; Remove the title bar and window borders.
   Gui 9: Show, x2   y2 NoActivate AutoSize  ; NoActivate avoids deactivating the currently active window.
         
   HintState = 1
   SetTimer, CloseHintLabel, %Delay%
   return   
      
CloseHintLabel:
   SetTimer, CloseHintLabel, Off
   if HintState = 1
      Gui, 9: Destroy ;Close it
   return
}

ToggleEnabled()
{
   global m_enabled
   m_enabled := (m_enabled = 1) ? 0 : 1
   if m_enabled = 1
      Suspend Off
   else
      Suspend On     
   DisplayQuickHint("Toddler Friend: " . ((m_enabled = 1) ? "Enabled" : "Disabled"), 1500)
}

ToggleSpaceConvert()
{
   global m_replaceWithSpace
   m_replaceWithSpace := (m_replaceWithSpace = 1) ? 0 : 1
   DisplayQuickHint("Toddler Friend: Blocked keys" . ((m_replaceWithSpace = 1) ? " will be " : " are no longer ") . "converted to a space", 1500)
}

ToggleAllowMouse()
{
   global m_allowMouse
   m_allowMouse := (m_allowMouse = 1) ? 0 : 1
   DisplayQuickHint("Toddler Friend: Mouse buttons" . ((m_allowMouse = 1) ? " will be allowed" : " will be blocked"), 1500)
}

ToggleAllowArrows()
{
   global m_allowArrows
   m_allowArrows := (m_allowArrows = 1) ? 0 : 1
   DisplayQuickHint("Toddler Friend: Cursor/arrow keys" . ((m_allowArrows = 1) ? " will be allowed" : " will be blocked"), 1500)
}

ToggleAllowAlphanumerics()
{
   global m_allowAlphanumerics
   m_allowAlphanumerics := (m_allowAlphanumerics = 1) ? 0 : 1
   DisplayQuickHint("Toddler Friend: Alpha-numeric keys" . ((m_allowAlphanumerics = 1) ? " will be allowed" : " will be blocked"), 1500)
}

TogglePreventRepeats()
{
   global m_preventRepeats
   m_preventRepeats := (m_preventRepeats = 1) ? 0 : 1
   DisplayQuickHint("Toddler Friend: Held keys will" . ((m_preventRepeats = 1) ? " cause a single keypress" : " will repeat the keypress "), 1500)
}

OnExitApp:    ;Used by tray menu
   ExitApp
   return

OnShowSettings: ;Used by tray menu
   DisplaySettings()
   return

; Global system shortcuts
^+e:: ;Enable/Disable
      Suspend, Permit   ;Allow when suspended
      if CheckForOverride()
         ToggleEnabled()
      return   
   
^+t:: ;Display Settings
   Suspend, Permit   ;Allow when suspended
   if CheckForOverride()
      DisplaySettings()
   return
   
^+r:: ;Replace spaces
   Suspend, Permit   ;Allow when suspended
   if CheckForOverride()
      ToggleSpaceConvert()
   return

^+p:: ;Prevent repeats of held keys
   Suspend, Permit   ;Allow when suspended
   if CheckForOverride()
      TogglePreventRepeats()
   return
   
^+m:: ;Allow mouse
   Suspend, Permit   ;Allow when suspended
   if CheckForOverride()
      ToggleAllowMouse()
   return
   
^+c:: ;Allow cursor
   Suspend, Permit   ;Allow when suspended
   if CheckForOverride()
      ToggleAllowArrows()
   return
   
^+a:: ;Allow alphanumerics
   Suspend, Permit   ;Allow when suspended
   if CheckForOverride()
      ToggleAllowAlphanumerics()
   return

; Alpha-numerics
*a::
*b::
*c::
*d::
*e::
*f::
*g::
*h::
*i::
*j::
*k::
*l::
*m::
*n::
*o::
*p::
*q::
*r::
*s::
*t::
*u::
*v::
*w::
*x::
*y::
*z::

*0::
*1::
*2::
*3::
*4::
*5::
*6::
*7::
*8::
*9::
   if CheckForOverride() or m_allowAlphanumerics = 1
      ResendKeyEx(A_ThisHotkey, A_PriorHotkey, A_TimeSincePriorHotkey, (m_preventRepeats = 1) ? true : false)
   else if (m_replaceWithSpace = 1 and (m_preventRepeats = 0 or !CheckIfRepeat(A_ThisHotkey, A_PriorHotkey, A_TimeSincePriorHotkey)))
      Send, {Space}
   return
   
; Mouse buttons
*LButton::
*RButton::
*MButton::

*WheelDown::
*WheelUp::

*XButton1::
*XButton2::
   if CheckForOverride() or m_allowMouse = 1
      ResendKeyEx(A_ThisHotkey, A_PriorHotkey, A_TimeSincePriorHotkey, (m_preventRepeats = 1) ? true : false)
   else if (m_replaceWithSpace = 1 and AllowConvertMouseButtonsToSpace)
      Send, {Space}
   return

; Arrows
*Up::
*Down::
*Left::
*Right::
   if CheckForOverride() or m_allowArrows = 1
      ResendKeyEx(A_ThisHotkey, A_PriorHotkey, A_TimeSincePriorHotkey, (m_preventRepeats = 1) ? true : false)
   else if (m_replaceWithSpace = 1  and (m_preventRepeats = 0 or !CheckIfRepeat(A_ThisHotkey, A_PriorHotkey, A_TimeSincePriorHotkey)))
      Send, {Space}
   return
      
; Other keys (starting with ones you might want to include above)
*Space::
*Enter::
*Tab::
*Escape::
*Backspace::
   
*Numpad0::
*NumpadIns::
*Numpad1::
*NumpadEnd::
*Numpad2::
*NumpadDown::
*Numpad3::
*NumpadPgDn::
*Numpad4::
*NumpadLeft::
*Numpad5::
*NumpadClear::
*Numpad6::
*NumpadRight::
*Numpad7::
*NumpadHome::
*Numpad8::
*NumpadUp:
*Numpad9::
*NumpadPgUp::
*NumpadDot::
*NumpadDel::
*NumpadDiv::
*NumpadMult::
*NumpadAdd::
*NumpadSub::
*NumpadEnter::

*Delete::
*Insert::
*Home::
*End::
*PgUp::
*PgDn::

*ScrollLock::   
*CapsLock::
;*NumLock::     ;This interferes with global shortcuts and overrides

*F1::
*F2::
*F3::
*F4::
*F5::
*F6::
*F7::
*F8::
*F9::
*F10::
*F11::
*F12::
*F13::
*F14::
*F15::
*F16::
*F17::
*F18::
*F19::
*F20::
*F21::
*F22::
*F23::
*F24::

*AppsKey::

*LWin::
*RWin::

;*LControl::  ;These interfere with global shortcuts
*RControl::
;*LShift::    ;These interfere with global shortcuts
*RShift::
*LAlt::
*RAlt::

*PrintScreen::
*CtrlBreak::
*Pause::
*Break::

*Help::
*Sleep::

*Browser_Back::
*Browser_Forward::
*Browser_Refresh::
*Browser_Stop::
*Browser_Search::
*Browser_Favorites::
*Browser_Home::
*Volume_Mute::
*Volume_Down::
*Volume_Up::
*Media_Next::
*Media_Prev::
*Media_Stop::
*Media_Play_Pause::
*Launch_Mail::
*Launch_Media::
*Launch_App1::
*Launch_App2:: 
   if CheckForOverride()
      ResendKeyEx(A_ThisHotkey, A_PriorHotkey, A_TimeSincePriorHotkey, (m_preventRepeats = 1) ? true : false)
   else if (m_replaceWithSpace = 1  and (m_preventRepeats = 0 or !CheckIfRepeat(A_ThisHotkey, A_PriorHotkey, A_TimeSincePriorHotkey)))
      Send, {Space}
   return


Report this post
Top
  
Reply with quote  
 Post subject:
PostPosted: May 2nd, 2009, 3:32 pm 
Offline

Joined: April 30th, 2009, 10:58 am
Posts: 1
Be careful to make sure of your override key before running the script!
If you're using a laptop where e.g. NumLock is accessed with a function key, make sure you change the key first.
Otherwise you'll be rebooting :)


Report this post
Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: May 29th, 2009, 10:53 pm 
Offline

Joined: May 15th, 2009, 4:49 pm
Posts: 14
Location: Tulsa, OK
Instead of disabling all the keys, I believe I will search for a bunch of funny .wav sounds and just assigning all of the keys out.. OR, I guess I could make it a learning tool and find .wav sounds of the letters and numbers. Lots of applications..

NICE SCRIPT!

H


Report this post
Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: May 30th, 2009, 1:27 am 
Offline

Joined: May 24th, 2009, 1:23 pm
Posts: 89
Location: Bærum, Norway
PlaceboZA wrote:
Be careful to make sure of your override key before running the script!
If you're using a laptop where e.g. NumLock is accessed with a function key, make sure you change the key first.
Otherwise you'll be rebooting :)


Have you actually tried that out? Because as far as I know, the 'Fn' keys are usually hardware-implemented and won't be blocked by the script. Thus, the NumLock key with or without having to activate Fn first should be sent to the system as that key only, regardless of the script.

_________________
Better burden you cannot carry than man-wisdom much -- Hávamál


Report this post
Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: May 31st, 2009, 9:41 pm 
Guys, I found this thread too late, didn't occur to me to search for "toddler". I searched only for "block keyboard", "lock keyboard" and of course "block input".

Here is a solution that I am most pleased with:

I found the "KidKeyLock" application (KKL) very useful. Setup the program to lock mouse clicks, wheel and also whole keyboard.
Then autohotkey can be used to run the program via keyboard shortcut.
Just type "kklquit" (or the password you set up on your own) to end the keyboard/mouse blocking and quit the KKL.

EASY!

Get the KKL app here: http://www.100dof.com/kidkeylock.html

The only thing this does not block is the CTRL+ALT+Del combination, mouse movement and a few keys on my Gyration Remote.


Report this post
Top
  
Reply with quote  
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 18 posts ]  Go to page 1, 2  Next

All times are UTC [ DST ]


Who is online

Users browsing this forum: No registered users and 11 guests


You can post new topics in this forum
You can reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Powered by phpBB® Forum Software © phpBB Group