Hello, Alexander.
Here is a my quick hack code for Windows Factor.
CONSTANT: wm-keydown-codes
H{
{ 48 "0" } ! <- added
{ 49 "1" } ! <- added
{ 50 "2" } ! <- added
{ 65 "a" } ! <- added
{ 66 "b" } ! <- added
{ 67 "c" } ! <- added
{ 8 "BACKSPACE" }
{ 9 "TAB" }
{ 13 "RET" }
{ 27 "ESC" }
{ 33 "PAGE_UP" }
{ 34 "PAGE_DOWN" }
{ 35 "END" }
{ 36 "HOME" }
{ 37 "LEFT" }
{ 38 "UP" }
{ 39 "RIGHT" }
{ 40 "DOWN" }
{ 45 "INSERT" }
{ 46 "DELETE" }
{ 112 "F1" }
{ 113 "F2" }
{ 114 "F3" }
{ 115 "F4" }
{ 116 "F5" }
{ 117 "F6" }
{ 118 "F7" }
{ 119 "F8" }
{ 120 "F9" }
{ 121 "F10" }
{ 122 "F11" }
{ 123 "F12" }
{ 190 "PERIOD" } ! <- added
}
:: key-sym ( wParam -- string/f action? ) ! : -> ::
! {
! {
! [ dup LETTER? ]
! [ shift? caps-lock? xor [ CHAR: a + CHAR: A - ] unless 1string f ]
! }
! { [ dup digit? ] [ 1string f ] }
! [ wm-keydown-codes at t ]
! } cond ;
wParam wm-keydown-codes at [ t ] [
wParam
{
{
[ dup LETTER? ]
[ shift? caps-lock? xor [ CHAR: a + CHAR: A - ] unless 1string f
]
}
{ [ dup digit? ] [ 1string f ] }
[ wm-keydown-codes at t ]
} cond
] if* ;
:: handle-wm-keydown ( hWnd uMsg wParam lParam -- )
wParam exclude-key-wm-keydown? [
wParam key-sym over [
dup ctrl? alt? xor or [ ! neccesary?
hWnd send-key-down
] [ 2drop ] if
] [ 2drop ] if
] unless ;
:: handle-wm-char ( hWnd uMsg wParam lParam -- )
wParam exclude-key-wm-char? [
ctrl? alt? xor [
wParam 1string
! [ f hWnd send-key-down ]
[ drop ]
[ hWnd window user-input ] bi
] unless
] unless ;
On 2019/03/30 23:05, Alexander Ilin wrote:
> Hello!
>
> Nice investigation!
>
> 30.03.2019, 12:26, "KUSUMOTO Norio" <[email protected]>:
>> It seems to me key-down and key-up events are not desirable, not only in
>> Windows Factor.
>> For example, on Mac Factor, when the "Q" key is pressed with a shift key,
>> gesture-logger
>> reports:
>>
>> T{ key-down { sym "Q" } }
>> User input: Q
>> T{ key-up { sym "Q" } }
>>
>> I think it should be:
>>
>> T{ key-down { mods { S+ } } { sym "q" } }
>> User input: Q
>> T{ key-up { mods { S+ } } { sym "q" } }
> I think you are right, and this would solve a long-standing issue
> https://github.com/factor/factor/issues/1565
> I guess nobody had the time to dig into this, so your effort is much
> appreciated!
>
>> I changed key-codes which is in
>> /Applications/factor/basis/ui/backend/cocoa/views/views.factor
>> like this:
>>
>> CONSTANT: key-codes
>> H{
>> { 29 "0" } ! <- added
>> { 18 "1" } ! <- added
>> { 19 "2" } ! <- added
>>
>> { 0 "a" } ! <- added
>> { 11 "b" } ! <- added
>> { 9 "c" } ! <- added
>>
>> { 71 "CLEAR" }
>> { 36 "RET" }
>> { 76 "ENTER" }
>> { 53 "ESC" }
>> { 48 "TAB" }
>> { 51 "BACKSPACE" }
>> { 115 "HOME" }
>> { 117 "DELETE" }
>> { 119 "END" }
>> { 122 "F1" }
>> { 120 "F2" }
>> { 99 "F3" }
>> { 118 "F4" }
>> { 96 "F5" }
>> { 97 "F6" }
>> { 98 "F7" }
>> { 100 "F8" }
>> { 123 "LEFT" }
>> { 124 "RIGHT" }
>> { 125 "DOWN" }
>> { 126 "UP" }
>> { 116 "PAGE_UP" }
>> { 121 "PAGE_DOWN" }
>> }
>>
>> Then events about "0", "1", "2", "a", "b" and "c" key are desirable for me.
>>
>> In conclusion, I think all keys which can exist should be added in key-codes.
> I'll try to see if I can fix the same for the Windows platform.
>
> ---=====---
> Александр
>
>
--
KUSUMOTO Norio
> 2019/03/30 23:05、Alexander Ilin <[email protected]>のメール:
>
> Hello!
>
> Nice investigation!
>
> 30.03.2019, 12:26, "KUSUMOTO Norio" <[email protected]>:
>> It seems to me key-down and key-up events are not desirable, not only in
>> Windows Factor.
>> For example, on Mac Factor, when the "Q" key is pressed with a shift key,
>> gesture-logger
>> reports:
>>
>> T{ key-down { sym "Q" } }
>> User input: Q
>> T{ key-up { sym "Q" } }
>>
>> I think it should be:
>>
>> T{ key-down { mods { S+ } } { sym "q" } }
>> User input: Q
>> T{ key-up { mods { S+ } } { sym "q" } }
>
> I think you are right, and this would solve a long-standing issue
> https://github.com/factor/factor/issues/1565
> I guess nobody had the time to dig into this, so your effort is much
> appreciated!
>
>> I changed key-codes which is in
>> /Applications/factor/basis/ui/backend/cocoa/views/views.factor
>> like this:
>>
>> CONSTANT: key-codes
>> H{
>> { 29 "0" } ! <- added
>> { 18 "1" } ! <- added
>> { 19 "2" } ! <- added
>>
>> { 0 "a" } ! <- added
>> { 11 "b" } ! <- added
>> { 9 "c" } ! <- added
>>
>> { 71 "CLEAR" }
>> { 36 "RET" }
>> { 76 "ENTER" }
>> { 53 "ESC" }
>> { 48 "TAB" }
>> { 51 "BACKSPACE" }
>> { 115 "HOME" }
>> { 117 "DELETE" }
>> { 119 "END" }
>> { 122 "F1" }
>> { 120 "F2" }
>> { 99 "F3" }
>> { 118 "F4" }
>> { 96 "F5" }
>> { 97 "F6" }
>> { 98 "F7" }
>> { 100 "F8" }
>> { 123 "LEFT" }
>> { 124 "RIGHT" }
>> { 125 "DOWN" }
>> { 126 "UP" }
>> { 116 "PAGE_UP" }
>> { 121 "PAGE_DOWN" }
>> }
>>
>> Then events about "0", "1", "2", "a", "b" and "c" key are desirable for me.
>>
>> In conclusion, I think all keys which can exist should be added in key-codes.
>
> I'll try to see if I can fix the same for the Windows platform.
>
> ---=====---
> Александр
>
>
>
> _______________________________________________
> Factor-talk mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/factor-talk
_______________________________________________
Factor-talk mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/factor-talk