diff --git a/windows/src/engine/keyman32/appint/aiTIP.cpp b/windows/src/engine/keyman32/appint/aiTIP.cpp index 7241ee9fdb..a3b6491ec3 100644 --- a/windows/src/engine/keyman32/appint/aiTIP.cpp +++ b/windows/src/engine/keyman32/appint/aiTIP.cpp @@ -100,14 +100,17 @@ void ProcessToggleChange(UINT key) { // I4793 switch(key) { case VK_CAPITAL: flag = CAPITALFLAG; break; case VK_NUMLOCK: flag = NUMLOCKFLAG; break; + default: return; } - if(*Globals::ShiftState() & flag) { - *Globals::ShiftState() &= ~flag; - } - else { + if (GetKeyState(key) & 1) { + SendDebugMessageFormat(0, sdmAIDefault, 0, "ProcessToggleChange: Setting %s", flag == CAPITALFLAG ? "CAPITALFLAG" : "NUMLOCKFLAG"); *Globals::ShiftState() |= flag; } + else { + SendDebugMessageFormat(0, sdmAIDefault, 0, "ProcessToggleChange: Clearing %s", flag == CAPITALFLAG ? "CAPITALFLAG" : "NUMLOCKFLAG"); + *Globals::ShiftState() &= ~flag; + } } extern "C" __declspec(dllexport) BOOL WINAPI TIPProcessKey(WPARAM wParam, LPARAM lParam, // I3589 // I3588 @@ -131,6 +134,11 @@ extern "C" __declspec(dllexport) BOOL WINAPI TIPProcessKey(WPARAM wParam, LPARAM } if(scan == SCAN_FLAG_KEYMAN_KEY_EVENT) { // I4370 + if (wParam == VK_CAPITAL && !isUp) { + // Must also record toggle state change when Keyman has generated + // a Caps Lock event + ProcessToggleChange((UINT)wParam); // I4793 + } SendDebugMessageFormat(0, sdmAIDefault, 0, "TIPProcessKey: Virtual Key was generated by Keyman [Scan=0xFF]"); return FALSE; } @@ -154,10 +162,10 @@ extern "C" __declspec(dllexport) BOOL WINAPI TIPProcessKey(WPARAM wParam, LPARAM switch(wParam) { case VK_CAPITAL: if(!isUp) ProcessToggleChange((UINT) wParam); // I4793 - KeyCapsLockPress(isUp); // I4548 + if(!Updateable) KeyCapsLockPress(isUp); // I4548 return FALSE; case VK_SHIFT: - KeyShiftPress(isUp); // I4548 + if (!Updateable) KeyShiftPress(isUp); // I4548 // Fall through case VK_MENU: case VK_CONTROL: diff --git a/windows/src/engine/keyman32/appint/aiWin2000Unicode.cpp b/windows/src/engine/keyman32/appint/aiWin2000Unicode.cpp index 52a3824d13..d91b3453d4 100644 --- a/windows/src/engine/keyman32/appint/aiWin2000Unicode.cpp +++ b/windows/src/engine/keyman32/appint/aiWin2000Unicode.cpp @@ -87,9 +87,7 @@ BOOL AIWin2000Unicode::IsWindowHandled(HWND ahwnd) BOOL AIWin2000Unicode::IsUnicode() { BOOL Result = IsWindowUnicode(hwnd); - - SendDebugMessageFormat(0, sdmAIDefault, 0, "IsWindowUnicode=%s WM_UNICHAR:%s", - Result ? "Yes" : "No", FUnicharOkay ? "Yes" : "No"); + SendDebugMessageFormat(0, sdmAIDefault, 0, "IsWindowUnicode=%s", Result ? "Yes" : "No"); return Result; } diff --git a/windows/src/engine/keyman32/appint/aiWin2000Unicode.h b/windows/src/engine/keyman32/appint/aiWin2000Unicode.h index 52c83d1501..3866137074 100644 --- a/windows/src/engine/keyman32/appint/aiWin2000Unicode.h +++ b/windows/src/engine/keyman32/appint/aiWin2000Unicode.h @@ -30,9 +30,6 @@ class AIWin2000Unicode:public AppIntegration { private: - BYTE kbstate[256]; - BOOL FUnicharOkay; - BOOL PostKeys(); diff --git a/windows/src/engine/keyman32/capsstate.cpp b/windows/src/engine/keyman32/capsstate.cpp index e4d6c75a1e..68461b446c 100644 --- a/windows/src/engine/keyman32/capsstate.cpp +++ b/windows/src/engine/keyman32/capsstate.cpp @@ -26,12 +26,6 @@ */ #include "pch.h" -static BYTE kbstate[256]; -extern BOOL FShouldIgnoreNextKey[256]; - -//extern "C" void FAR PASCAL keybd_event(void); - - void ResetCapsLock(void) { PKEYMAN64THREADDATA _td = ThreadGlobals(); @@ -63,7 +57,8 @@ void KeyCapsLockPress(BOOL FIsUp) // I3284 - void // I3529 if(_td->lpActiveKeyboard->Keyboard->dwFlags & KF_CAPSONONLY) { - if(FIsUp && !(GetKeyState(VK_CAPITAL) & 1)) // I267 - 24/11/2006 invert GetKeyState test + SendDebugMessageFormat(0, sdmAIDefault, 0, "KeyCapsLockPress: KF_CAPSONONLY: FIsUp=%d CapsState=%d", FIsUp, GetKeyState(VK_CAPITAL) & 1); + if(FIsUp && !(GetKeyState(VK_CAPITAL) & 1)) // I267 - 24/11/2006 invert GetKeyState test { keybd_event(VK_CAPITAL, SCAN_FLAG_KEYMAN_KEY_EVENT, 0, 0); keybd_event(VK_CAPITAL, SCAN_FLAG_KEYMAN_KEY_EVENT, KEYEVENTF_KEYUP, 0); @@ -71,7 +66,8 @@ void KeyCapsLockPress(BOOL FIsUp) // I3284 - void // I3529 } else if(_td->lpActiveKeyboard->Keyboard->dwFlags & KF_CAPSALWAYSOFF) { - if(!FIsUp && (GetKeyState(VK_CAPITAL) & 1)) + SendDebugMessageFormat(0, sdmAIDefault, 0, "KeyCapsLockPress: KF_CAPSALWAYSOFF: FIsUp=%d CapsState=%d", FIsUp, GetKeyState(VK_CAPITAL) & 1); + if(!FIsUp && (GetKeyState(VK_CAPITAL) & 1)) { // I267 - 24/11/2006 invert GetKeyState test keybd_event(VK_CAPITAL, SCAN_FLAG_KEYMAN_KEY_EVENT, KEYEVENTF_KEYUP, 0); keybd_event(VK_CAPITAL, SCAN_FLAG_KEYMAN_KEY_EVENT, 0, 0); @@ -86,11 +82,10 @@ void KeyShiftPress(BOOL FIsUp) // I3284 - void // I3529 if(!_td) return; if(!_td->lpActiveKeyboard) return; // pass through to window - if((GetKeyState(VK_CAPITAL) & 1) == 0) return; - if(_td->lpActiveKeyboard->Keyboard->dwFlags & KF_SHIFTFREESCAPS) { - if(!FIsUp) + SendDebugMessageFormat(0, sdmAIDefault, 0, "KeyShiftPress: KF_SHIFTFREESCAPS: FIsUp=%d CapsState=%d", FIsUp, GetKeyState(VK_CAPITAL) & 1); + if(!FIsUp && (GetKeyState(VK_CAPITAL) & 1)) { keybd_event(VK_CAPITAL, SCAN_FLAG_KEYMAN_KEY_EVENT, 0, 0); keybd_event(VK_CAPITAL, SCAN_FLAG_KEYMAN_KEY_EVENT, KEYEVENTF_KEYUP, 0); diff --git a/windows/src/engine/keyman32/keystate.cpp b/windows/src/engine/keyman32/keystate.cpp index 1be9fe4658..eb66b2e70d 100644 --- a/windows/src/engine/keyman32/keystate.cpp +++ b/windows/src/engine/keyman32/keystate.cpp @@ -23,9 +23,6 @@ */ #include "pch.h" // I4551 -BYTE kbstate[256]; - - #define MAX_RSHIFT 24 #define MAX_KSHIFT 18 diff --git a/windows/src/engine/kmtip/keys.cpp b/windows/src/engine/kmtip/keys.cpp index de4732a14e..d66e4d65c8 100644 --- a/windows/src/engine/kmtip/keys.cpp +++ b/windows/src/engine/kmtip/keys.cpp @@ -174,7 +174,8 @@ STDAPI CKMTipTextService::OnTestKeyDown(ITfContext *pContext, WPARAM wParam, LPA { LogKey("CKMTipTextService::OnTestKeyDown", 0, wParam, lParam); // If the keystroke is a Keyman-generated key, ignore it - if((lParam & 0x00FF0000L) == 0xFF0000L) // I3566 + if((lParam & 0x00FF0000L) == 0xFF0000L && + wParam != VK_CAPITAL) // I3566 *pfEaten = FALSE; else *pfEaten = _KeymanProcessKeystroke(pContext, wParam, lParam, FALSE, FALSE); // I3588 @@ -208,7 +209,8 @@ STDAPI CKMTipTextService::OnKeyDown(ITfContext *pContext, WPARAM wParam, LPARAM STDAPI CKMTipTextService::OnTestKeyUp(ITfContext *pContext, WPARAM wParam, LPARAM lParam, BOOL *pfEaten) { LogKey("CKMTipTextService::OnTestKeyUp", 2, wParam, lParam); - if((lParam & 0x00FF0000L) == 0xFF0000L) // I3566 + if((lParam & 0x00FF0000L) == 0xFF0000L && + wParam != VK_CAPITAL) // I3566 *pfEaten = FALSE; else { @@ -230,7 +232,8 @@ STDAPI CKMTipTextService::OnTestKeyUp(ITfContext *pContext, WPARAM wParam, LPARA STDAPI CKMTipTextService::OnKeyUp(ITfContext *pContext, WPARAM wParam, LPARAM lParam, BOOL *pfEaten) { LogKey("CKMTipTextService::OnKeyUp", 3, wParam, lParam); - if((lParam & 0x00FF0000L) == 0xFF0000L) // I3566 // I3605 + if((lParam & 0x00FF0000L) == 0xFF0000L && + wParam != VK_CAPITAL) // I3566 // I3605 *pfEaten = FALSE; else { diff --git a/windows/src/engine/kmtip/kmkey.cpp b/windows/src/engine/kmtip/kmkey.cpp index 275d02faf8..40ace7a5b7 100644 --- a/windows/src/engine/kmtip/kmkey.cpp +++ b/windows/src/engine/kmtip/kmkey.cpp @@ -117,7 +117,8 @@ BOOL CKMTipTextService::_KeymanProcessKeystroke(ITfContext *pContext, WPARAM wPa Log(L"_KeymanProcessKeystroke (%x %x %s %s ex=%x)", wParam, lParam, fUpdate?L"update":L"", fPreserved?L"preserved":L"", GetMessageExtraInfo()); // I4378 // Don't process keystrokes generated by Keyman (scan code = 0xFF) - if ((lParam & 0xFF0000) == 0xFF0000) { + if ((lParam & 0xFF0000) == 0xFF0000 && + wParam != VK_CAPITAL) { return FALSE; // I4378 } @@ -200,8 +201,8 @@ STDAPI CKeymanEditSession::DoEditSession(TfEditCookie ec) else { if (!(*pTIPProcessKey)(_wParam, _lParam, ExtKeymanProcessOutput, ExtKeymanGetContext, _fUpdate, _fPreserved)) { - SendDebugMessage(L"DoEditSession: TIPProcessKey failed"); - _hr = E_FAIL; + SendDebugMessage(L"DoEditSession: TIPProcessKey did not handle the keystroke"); + _hr = E_FAIL; // TODO: use S_FALSE -> this tells _KeymanProcessKeystroke to pass keystroke on } } ExtEditSession = NULL; diff --git a/windows/src/test/manual-tests/caps_lock_headers/HISTORY.md b/windows/src/test/manual-tests/caps_lock_headers/HISTORY.md new file mode 100644 index 0000000000..f2b6acd03b --- /dev/null +++ b/windows/src/test/manual-tests/caps_lock_headers/HISTORY.md @@ -0,0 +1,6 @@ +caps_lock_shift_frees_caps Change History +==================== + +1.0 (2019-01-07) +---------------- +* Created by diff --git a/windows/src/test/manual-tests/caps_lock_headers/LICENSE.md b/windows/src/test/manual-tests/caps_lock_headers/LICENSE.md new file mode 100644 index 0000000000..714cb32594 --- /dev/null +++ b/windows/src/test/manual-tests/caps_lock_headers/LICENSE.md @@ -0,0 +1,21 @@ +The MIT License (MIT) + +© + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/windows/src/test/manual-tests/caps_lock_headers/README.md b/windows/src/test/manual-tests/caps_lock_headers/README.md new file mode 100644 index 0000000000..bc3b3b42ea --- /dev/null +++ b/windows/src/test/manual-tests/caps_lock_headers/README.md @@ -0,0 +1,29 @@ +caps_lock_shift_frees_caps keyboard +============== + +© + +Version 1.0 + +Description +----------- + +caps_lock_shift_frees_caps generated from template + +Links +----- + +Supported Platforms +------------------- + * Windows + * macOS + * Linux + * Web + * iPhone + * iPad + * Android phone + * Android tablet + * Mobile devices + * Desktop devices + * Tablet devices + diff --git a/windows/src/test/manual-tests/caps_lock_headers/build/caps_lock_caps_always_off.kmx b/windows/src/test/manual-tests/caps_lock_headers/build/caps_lock_caps_always_off.kmx new file mode 100644 index 0000000000..793c77615f Binary files /dev/null and b/windows/src/test/manual-tests/caps_lock_headers/build/caps_lock_caps_always_off.kmx differ diff --git a/windows/src/test/manual-tests/caps_lock_headers/build/caps_lock_caps_always_off.kvk b/windows/src/test/manual-tests/caps_lock_headers/build/caps_lock_caps_always_off.kvk new file mode 100644 index 0000000000..06fe5344c1 Binary files /dev/null and b/windows/src/test/manual-tests/caps_lock_headers/build/caps_lock_caps_always_off.kvk differ diff --git a/windows/src/test/manual-tests/caps_lock_headers/build/caps_lock_caps_on_only.kmx b/windows/src/test/manual-tests/caps_lock_headers/build/caps_lock_caps_on_only.kmx new file mode 100644 index 0000000000..3ec75e634b Binary files /dev/null and b/windows/src/test/manual-tests/caps_lock_headers/build/caps_lock_caps_on_only.kmx differ diff --git a/windows/src/test/manual-tests/caps_lock_headers/build/caps_lock_caps_on_only.kvk b/windows/src/test/manual-tests/caps_lock_headers/build/caps_lock_caps_on_only.kvk new file mode 100644 index 0000000000..0e1ea70914 Binary files /dev/null and b/windows/src/test/manual-tests/caps_lock_headers/build/caps_lock_caps_on_only.kvk differ diff --git a/windows/src/test/manual-tests/caps_lock_headers/build/caps_lock_headers.kmp b/windows/src/test/manual-tests/caps_lock_headers/build/caps_lock_headers.kmp new file mode 100644 index 0000000000..a74095c428 Binary files /dev/null and b/windows/src/test/manual-tests/caps_lock_headers/build/caps_lock_headers.kmp differ diff --git a/windows/src/test/manual-tests/caps_lock_headers/build/caps_lock_shift_frees_caps.kmp b/windows/src/test/manual-tests/caps_lock_headers/build/caps_lock_shift_frees_caps.kmp new file mode 100644 index 0000000000..ebb4429abe Binary files /dev/null and b/windows/src/test/manual-tests/caps_lock_headers/build/caps_lock_shift_frees_caps.kmp differ diff --git a/windows/src/test/manual-tests/caps_lock_headers/build/caps_lock_shift_frees_caps.kmx b/windows/src/test/manual-tests/caps_lock_headers/build/caps_lock_shift_frees_caps.kmx new file mode 100644 index 0000000000..4942a3dc27 Binary files /dev/null and b/windows/src/test/manual-tests/caps_lock_headers/build/caps_lock_shift_frees_caps.kmx differ diff --git a/windows/src/test/manual-tests/caps_lock_headers/build/caps_lock_shift_frees_caps.kvk b/windows/src/test/manual-tests/caps_lock_headers/build/caps_lock_shift_frees_caps.kvk new file mode 100644 index 0000000000..2cd73a93a3 Binary files /dev/null and b/windows/src/test/manual-tests/caps_lock_headers/build/caps_lock_shift_frees_caps.kvk differ diff --git a/windows/src/test/manual-tests/caps_lock_headers/caps_lock_headers.keyboard_info b/windows/src/test/manual-tests/caps_lock_headers/caps_lock_headers.keyboard_info new file mode 100644 index 0000000000..75346d748f --- /dev/null +++ b/windows/src/test/manual-tests/caps_lock_headers/caps_lock_headers.keyboard_info @@ -0,0 +1,7 @@ +{ + "license": "mit", + "languages": [ + + ], + "description": "caps_lock_shift_frees_caps generated from template" +} diff --git a/windows/src/test/manual-tests/caps_lock_headers/caps_lock_headers.kpj b/windows/src/test/manual-tests/caps_lock_headers/caps_lock_headers.kpj new file mode 100644 index 0000000000..1bef06328b --- /dev/null +++ b/windows/src/test/manual-tests/caps_lock_headers/caps_lock_headers.kpj @@ -0,0 +1,119 @@ + + + + $PROJECTPATH\build + True + True + + + + id_fb55c4befba94fb9e7468d5126e5ed10 + caps_lock_shift_frees_caps.kmn + source\caps_lock_shift_frees_caps.kmn + 1.0 + .kmn +
+ caps_lock_shift_frees_caps + © 2019 SIL International +
+
+ + id_bae62fccce40fcec206e0258206bd18c + caps_lock_caps_always_off.kmn + source\caps_lock_caps_always_off.kmn + 1.0 + .kmn +
+ caps_lock_caps_on_only + © 2019 SIL International +
+
+ + id_7fff108dc6e58551d8bd46f89477c870 + caps_lock_caps_on_only.kmn + source\caps_lock_caps_on_only.kmn + 1.0 + .kmn +
+ caps_lock_caps_always_off + © 2019 SIL International +
+
+ + id_b84bf1d230e3916202970f55640a5eea + caps_lock_headers.kps + source\caps_lock_headers.kps + 1.0 + .kps +
+ caps_lock_shift_frees_caps + © + 1.0 +
+
+ + id_cd9d739b26ce5dd73af0540ad4365954 + caps_lock_shift_frees_caps.kmx + source\..\build\caps_lock_shift_frees_caps.kmx + + .kmx + id_b84bf1d230e3916202970f55640a5eea + + + id_a5299cc81250ba8131c83b259bb365f8 + caps_lock_shift_frees_caps.kvk + source\..\build\caps_lock_shift_frees_caps.kvk + + .kvk + id_b84bf1d230e3916202970f55640a5eea + + + id_356e5d149c1e539356d72698c1e401a6 + welcome.htm + source\welcome.htm + + .htm + id_b84bf1d230e3916202970f55640a5eea + + + id_8da344c4cea6f467013357fe099006f5 + readme.htm + source\readme.htm + + .htm + id_b84bf1d230e3916202970f55640a5eea + + + id_0e43bd214d366e11a424144a99978808 + caps_lock_caps_on_only.kvk + source\..\build\caps_lock_caps_on_only.kvk + + .kvk + id_b84bf1d230e3916202970f55640a5eea + + + id_55c8833c53e3295cd9424a114280a63b + caps_lock_caps_always_off.kmx + source\..\build\caps_lock_caps_always_off.kmx + + .kmx + id_b84bf1d230e3916202970f55640a5eea + + + id_141ea53b18baa35cf62ededea4321523 + caps_lock_caps_always_off.kvk + source\..\build\caps_lock_caps_always_off.kvk + + .kvk + id_b84bf1d230e3916202970f55640a5eea + + + id_7b23e6d989803a371ca8e77bc862d26f + caps_lock_caps_on_only.kmx + source\..\build\caps_lock_caps_on_only.kmx + + .kmx + id_b84bf1d230e3916202970f55640a5eea + +
+
diff --git a/windows/src/test/manual-tests/caps_lock_headers/source/caps_lock_caps_always_off.kmn b/windows/src/test/manual-tests/caps_lock_headers/source/caps_lock_caps_always_off.kmn new file mode 100644 index 0000000000..278300b8e2 --- /dev/null +++ b/windows/src/test/manual-tests/caps_lock_headers/source/caps_lock_caps_always_off.kmn @@ -0,0 +1,18 @@ +c caps_lock_caps_on_only generated from template at 2019-01-07 14:12:26 + +store(&VERSION) '10.0' +store(&NAME) 'caps_lock_caps_on_only' +store(©RIGHT) '© 2019 SIL International' +store(&KEYBOARDVERSION) '1.0' +store(&TARGETS) 'windows' +store(&VISUALKEYBOARD) 'caps_lock_caps_on_only.kvks' +store(&CAPSONONLY) '1' + +begin Unicode > use(main) + +group(main) using keys + ++ [NCAPS K_A] > 'lower-a' ++ [CAPS K_A] > 'capital-a' ++ [NCAPS SHIFT K_A] > 'shift-a' ++ [CAPS SHIFT K_A] > 'capital-shift-a' diff --git a/windows/src/test/manual-tests/caps_lock_headers/source/caps_lock_caps_always_off.kvks b/windows/src/test/manual-tests/caps_lock_headers/source/caps_lock_caps_always_off.kvks new file mode 100644 index 0000000000..981d5d664a --- /dev/null +++ b/windows/src/test/manual-tests/caps_lock_headers/source/caps_lock_caps_always_off.kvks @@ -0,0 +1,117 @@ + + +
+ 10.0 + caps_lock_caps_always_off + + + +
+ + + ` + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 0 + - + = + q + w + e + r + t + y + u + i + o + p + [ + ] + \ + lower-a + s + d + f + g + h + j + k + l + ; + ' + \ + z + x + c + v + b + n + m + , + . + / + + + + ~ + ! + @ + # + $ + % + ^ + & + * + ( + ) + _ + + + Q + W + E + R + T + Y + U + I + O + P + { + } + | + shift-a + S + D + F + G + H + J + K + L + : + " + | + Z + X + C + V + B + N + M + < + > + ? + + + + + + +
diff --git a/windows/src/test/manual-tests/caps_lock_headers/source/caps_lock_caps_on_only.kmn b/windows/src/test/manual-tests/caps_lock_headers/source/caps_lock_caps_on_only.kmn new file mode 100644 index 0000000000..384300f06a --- /dev/null +++ b/windows/src/test/manual-tests/caps_lock_headers/source/caps_lock_caps_on_only.kmn @@ -0,0 +1,18 @@ +c caps_lock_caps_always_off generated from template at 2019-01-07 14:12:26 + +store(&VERSION) '10.0' +store(&NAME) 'caps_lock_caps_always_off' +store(©RIGHT) '© 2019 SIL International' +store(&KEYBOARDVERSION) '1.0' +store(&TARGETS) 'windows' +store(&VISUALKEYBOARD) 'caps_lock_caps_always_off.kvks' +store(&CAPSALWAYSOFF) '1' + +begin Unicode > use(main) + +group(main) using keys + ++ [NCAPS K_A] > 'lower-a' ++ [CAPS K_A] > 'capital-a' ++ [NCAPS SHIFT K_A] > 'shift-a' ++ [CAPS SHIFT K_A] > 'capital-shift-a' diff --git a/windows/src/test/manual-tests/caps_lock_headers/source/caps_lock_caps_on_only.kvks b/windows/src/test/manual-tests/caps_lock_headers/source/caps_lock_caps_on_only.kvks new file mode 100644 index 0000000000..c5c54455cf --- /dev/null +++ b/windows/src/test/manual-tests/caps_lock_headers/source/caps_lock_caps_on_only.kvks @@ -0,0 +1,117 @@ + + +
+ 10.0 + caps_lock_caps_always_off + + + +
+ + + ` + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 0 + - + = + q + w + e + r + t + y + u + i + o + p + [ + ] + \ + lower-a + s + d + f + g + h + j + k + l + ; + ' + \ + z + x + c + v + b + n + m + , + . + / + + + + ~ + ! + @ + # + $ + % + ^ + & + * + ( + ) + _ + + + Q + W + E + R + T + Y + U + I + O + P + { + } + | + shift-a + S + D + F + G + H + J + K + L + : + " + | + Z + X + C + V + B + N + M + < + > + ? + + + + + + +
diff --git a/windows/src/test/manual-tests/caps_lock_headers/source/caps_lock_headers.kps b/windows/src/test/manual-tests/caps_lock_headers/source/caps_lock_headers.kps new file mode 100644 index 0000000000..4e74dfe003 --- /dev/null +++ b/windows/src/test/manual-tests/caps_lock_headers/source/caps_lock_headers.kps @@ -0,0 +1,95 @@ + + + + 11.0.1300.0 + 7.0 + + + + readme.htm + + + + + + + + + + caps_lock_shift_frees_caps + © + + 1.0 + + + + ..\build\caps_lock_shift_frees_caps.kmx + + 0 + .kmx + + + ..\build\caps_lock_shift_frees_caps.kvk + + 0 + .kvk + + + welcome.htm + + 0 + .htm + + + readme.htm + + 0 + .htm + + + ..\build\caps_lock_caps_on_only.kvk + File caps_lock_caps_on_only.kvk + 0 + .kvk + + + ..\build\caps_lock_caps_always_off.kmx + Keyboard caps_lock_caps_on_only + 0 + .kmx + + + ..\build\caps_lock_caps_always_off.kvk + File caps_lock_caps_always_off.kvk + 0 + .kvk + + + ..\build\caps_lock_caps_on_only.kmx + Keyboard caps_lock_caps_always_off + 0 + .kmx + + + + + caps_lock_shift_frees_caps + caps_lock_shift_frees_caps + 1.0 + + + + caps_lock_caps_on_only + caps_lock_caps_always_off + 1.0 + + + + caps_lock_caps_always_off + caps_lock_caps_on_only + 1.0 + + + + + diff --git a/windows/src/test/manual-tests/caps_lock_headers/source/caps_lock_shift_frees_caps.kmn b/windows/src/test/manual-tests/caps_lock_headers/source/caps_lock_shift_frees_caps.kmn new file mode 100644 index 0000000000..515921b9bd --- /dev/null +++ b/windows/src/test/manual-tests/caps_lock_headers/source/caps_lock_shift_frees_caps.kmn @@ -0,0 +1,17 @@ +c caps_lock_shift_frees_caps generated from template at 2019-01-07 14:12:26 +store(&VERSION) '10.0' +store(&NAME) 'caps_lock_shift_frees_caps' +store(©RIGHT) '© 2019 SIL International' +store(&KEYBOARDVERSION) '1.0' +store(&TARGETS) 'windows' +store(&VISUALKEYBOARD) 'caps_lock_shift_frees_caps.kvks' +store(&SHIFTFREESCAPS) '1' + +begin Unicode > use(main) + +group(main) using keys + ++ [NCAPS K_A] > 'lower-a' ++ [CAPS K_A] > 'capital-a' ++ [NCAPS SHIFT K_A] > 'shift-a' ++ [CAPS SHIFT K_A] > 'capital-shift-a' diff --git a/windows/src/test/manual-tests/caps_lock_headers/source/caps_lock_shift_frees_caps.kvks b/windows/src/test/manual-tests/caps_lock_headers/source/caps_lock_shift_frees_caps.kvks new file mode 100644 index 0000000000..db31de4b42 --- /dev/null +++ b/windows/src/test/manual-tests/caps_lock_headers/source/caps_lock_shift_frees_caps.kvks @@ -0,0 +1,115 @@ + + +
+ 10.0 + caps_lock_shift_frees_caps + +
+ + + ` + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 0 + - + = + q + w + e + r + t + y + u + i + o + p + [ + ] + \ + lower-a + s + d + f + g + h + j + k + l + ; + ' + \ + z + x + c + v + b + n + m + , + . + / + + + + ~ + ! + @ + # + $ + % + ^ + & + * + ( + ) + _ + + + Q + W + E + R + T + Y + U + I + O + P + { + } + | + shift-a + S + D + F + G + H + J + K + L + : + " + | + Z + X + C + V + B + N + M + < + > + ? + + + + + + +
diff --git a/windows/src/test/manual-tests/caps_lock_headers/source/readme.htm b/windows/src/test/manual-tests/caps_lock_headers/source/readme.htm new file mode 100644 index 0000000000..3e2679017c --- /dev/null +++ b/windows/src/test/manual-tests/caps_lock_headers/source/readme.htm @@ -0,0 +1,23 @@ + + + + + caps_lock_shift_frees_caps + + + + +

caps_lock_shift_frees_caps

+ +

+ caps_lock_shift_frees_caps 1.0 generated from template. +

+ +

©

+ + + diff --git a/windows/src/test/manual-tests/caps_lock_headers/source/welcome.htm b/windows/src/test/manual-tests/caps_lock_headers/source/welcome.htm new file mode 100644 index 0000000000..5155c2ff91 --- /dev/null +++ b/windows/src/test/manual-tests/caps_lock_headers/source/welcome.htm @@ -0,0 +1,27 @@ + + + + + Start Using caps_lock_shift_frees_caps + + + + +

Start Using caps_lock_shift_frees_caps

+ +

+ caps_lock_shift_frees_caps 1.0 generated from template. +

+ +

Keyboard Layout

+ + + +

©

+ + + \ No newline at end of file