github.com/jmigpin/editor@v1.6.0/driver/windriver/window_test.go (about)

     1  //go:build windows
     2  
     3  package windriver
     4  
     5  import (
     6  	"testing"
     7  
     8  	"github.com/jmigpin/editor/util/uiutil/event"
     9  )
    10  
    11  func TestVirtualKeyLookup(t *testing.T) {
    12  	type pair struct {
    13  		vkey   uint32
    14  		kstate *[256]byte
    15  		eks    event.KeySym
    16  		ru     rune
    17  	}
    18  
    19  	kstate0 := [256]byte{}
    20  	kstateShift := [256]byte{_VK_SHIFT: kstateDownBit}
    21  	kstateCtrl := [256]byte{_VK_CONTROL: kstateDownBit}
    22  	kstateCaps := [256]byte{_VK_CAPITAL: kstateToggleBit}
    23  	kstateAlt := [256]byte{_VK_MENU: kstateDownBit}
    24  	//kstateAltGr := [256]byte{_VK_SHIFT: kstateDownBit, _VK_CONTROL: kstateDownBit}
    25  	//kstateAltGr := [256]byte{_VK_RMENU: kstateDownBit}
    26  	//kstateAltGr := [256]byte{_VK_LMENU: kstateDownBit}
    27  	_ = kstate0
    28  	_ = kstateShift
    29  	_ = kstateCtrl
    30  	_ = kstateCaps
    31  	_ = kstateAlt
    32  	//_ = kstateAltGr
    33  
    34  	//kstateTest1 := [256]byte{1: 1, 144: 129}
    35  	//kstateTest1 := [256]byte{1: 1, 144: 1, 252: 129}
    36  
    37  	pairs := []pair{
    38  		{50, &kstate0, event.KSym2, '2'},
    39  		{65, &kstate0, event.KSymA, 'a'},
    40  		{65, &kstateShift, event.KSymA, 'A'},
    41  		{65, &kstateCaps, event.KSymA, 'A'},
    42  		{32, &kstate0, event.KSymSpace, ' '},
    43  		{221, &kstate0, event.KSymAcute, 'ยด'},
    44  		{221, &kstateShift, event.KSymGrave, '`'},
    45  		{220, &kstate0, event.KSymTilde, '~'},
    46  		{220, &kstateShift, event.KSymCircumflex, '^'},
    47  
    48  		// TODO
    49  		//{220, &kstateTest1, 0, '^'},
    50  		//{65, &kstateCtrl, event.KSymA, 'a'},
    51  		//{0x32, &kstateAltGr, event.KSymAt, '@'}, // TODO
    52  		//{35, &kstateShift, event.KSymGrave, '`'},
    53  	}
    54  	_ = pairs
    55  	//for i := 0; i < 256; i++ {
    56  	//p := pair{uint32(i), &kstate0, -1, -1}
    57  	for _, p := range pairs {
    58  		ru, _ := vkeyRune(p.vkey, p.kstate)
    59  		eks := translateVKeyToEventKeySym(p.vkey, ru)
    60  		if eks != p.eks || ru != p.ru {
    61  			t.Logf("%v, %v, %v(%c)\n", p.vkey, eks, ru, ru)
    62  			t.Fail()
    63  		}
    64  	}
    65  }
    66  
    67  //----------