표시하려는 키 배열을 편집할 수 있고 레이어를 지원하는 화면에 키를 표시하는 프로그램 OverKeys입니다.
https://github.com/conventoangelo/OverKeys
트레이 아이콘 메뉴에서 Auto Hide를 켜면 키를 입력할 때만 표시되네요.

아래 Shift 키 왼쪽 2개의 키에 보이는 것처럼 Shift 키를 눌렀을 때 문자가 바뀌는 것도 표시되네요.



키를 편집하려면 설정의 Advanced에서 Turn on advanced settings를 켠 다음에 아래에 표시되는 Use user layouts를 켜고 Advanced 맨 아래에 있는 Open 버튼을 누르면 열리는 설정 파일을 편집하고 트레이 아이콘 메뉴에서 Reload Config를 누르면 됩니다.
편집할 때 주의해야 하는 게 백슬래시 기호 \는 \\로 두번 입력해야 하네요.
키 배열의 맨 윗줄이 표시되지 않도록 설정되어 있는데 맨 윗줄을 표시하도록 변경하면 윗줄이 다른 줄과 어긋나게 표시되어서 그냥 보이지 않는 줄을 추가해야 되네요.
설정의 Keyboard에서 Split Matrix를 선택하면 스크린샷에 보이는 것처럼 두 부분으로 나뉘어서 표시되네요.

레이어는 단축키를 지정해서 단축키로 특정 레이어를 표시할 수 있네요.
설정을 편집할 때 type 부분에서 키를 누르면 레이어를 전환하는 toggle과 키를 누르는 동안만 레이어를 잠시 표시하는 held를 선택할 수 있네요.
키보드를 사용하다 키 위치가 헷갈릴 때 잠시 확인하는 정도면 되니 프로그램의 레이어 기능 설명에 나와있는대로 F13~F24 키 중에 단축키를 지정해서 써보니 괜찮은 것 같네요.
https://github.com/conventoangelo/OverKeys/blob/main/docs/advanced/layer-switching.md
이 프로그램과 함께 사용한 Cyber40 Tiny 키보드는 키가 작다보니 왼쪽 세 개, 오른쪽 세 개의 여섯 손가락 정도만 사용 가능하고 단축키를 쓰는 것도 까다롭지만 딸칵 소리가 나면서 눌리는 느낌이 뭔가 계속 누르고 싶어지기도 하고 재미있네요.
https://www.clien.net/service/board/park/18970482CLIEN
{
"userLayouts": [
{
"name": "MyCustomLayout",
"keys": [
[" "],
["Q", "W", "E", "R", "T", "Y", "U", "I", "O", "P"],
["A", "S", "D", "F", "G", "H", "J", "K", "L", "Enter"],
["Z", "X", "C", "V", "B", "N", "M", ",", ".", "RShift"],
["LCTRL", "WIN", "LALT", "MO(1)", "Space", "Space", "RALT", "WIN", "MO(2)", "RCTL"]
],
"trigger": "F13",
"type": "toggle"
},
{
"name": "layer1",
"keys": [
[""],
["1", "2", "3", "4", "5", "6", "7", "8", "9", "0"],
["-", "=", "Insert", "Home", "PageUp", "[", "]", "\\", "BKSP", ""],
["ESC", "Tab", "Del", "End", "PageDown", ";", "'", "/", "~", ""],
["", "", "", "", "", "Up", "Left", "Down", "Right", ""]
],
"trigger": "F14",
"type": "toggle"
},
{
"name": "layer2",
"keys": [
[""],
["F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9", "F10"],
["F11", "F12", "", "", "", "F13", "F14", "F15", "F16", "F17"],
["F18", "F19", "F20", "F21", "F22", "F23", "F24", "", "", ""],
["", "", "", "", "", "PrintScreen", "ScrollLock", "Pause", "", ""]
],
"trigger": "F15",
"type": "held"
}
],
"defaultUserLayout": "MyCustomLayout"
}