2023년 작업 기록

2023년 계획

119: 올해 직장 관두고 키보드에 전념해 볼려고 마음 먹었는데 마침 반도체 불경기로 짤려 자의반 타의반 백수가 되었다. 3일날 회사 노트북 철수하고 아버지 제사차 고향 다녀오고 FSIV 강좌 일주일 쓰고 드라마 보고 카페질 하고 빈둥빈둥 노느라 거의 3주가 휙 지나갔다. 이제 놀만큼 놀았고 밀린 일들 해 치웠으니 본격적으로 키보드 개발에 전념하기로 한다.

 올해 내도록 키보드만 하고 있을 수는 없고 밥벌이도 해야 하니 백수라고 해서 시간을 다 할당할 수는 없다. 대신 어디 메이지 않은 신분이고 연속성을 확보했으니 진척은 잘 될걸로 예상한다. 상반기에 바짝 작업하여 다음 목표를 완수하되 다는 못할 거 같고 큰틀은 다 완성해 놓고 하반기에 다른일과 겸하며 세세한 조정을 한다.

 

- 21호 제작 : 20호는 너무 매니악해서 일반인에게는 어렵다. 이전까지 고려하여 적응하기 쉬운 버전을 만들고 베타 테스트를 시작한다.

- 소프트웨어 정리 : 매크로 기능 등 아직 안되는 기능이 많고 어쩔 수 없는 한계도 있으며 사용법이 어렵다. 테스트용이 아니라 실사용 가능한 버전으로 제작한다.

- 홈페이지 및 소개 문서 업데이트 : 잘 만들었으면 어떡하든 알려야 한다. 소젯의 구조와 철학을 일반인도 쉽게 알 수 있도록 문서를 잘 정리해 둔다.

- 한손 자판 도입 : 가장 큰 작업이다. 장애인용으로 사용 가치도 있지만 다른 키보드에는 없는 기능이어서 언론에 어필할 수 있는 장점이 있다. 또 한손으로 인해 두손의 레이아웃이 영향을 받을 수 있어 가급적 일찍 초안이라도 완성해 두어야 한다.

- 시제품 제작 및 배포 : 지인 및 홈페이지를 통해 배포하고 피드백을 받아 적용한다. 혼자 만들지 말고 여러 사람의 도움을 받아 현실적인 조언을 적용하여 타협할 필요가 있다.

- 특허 출원 : 구조가 거의 확정되면 특허를 다시 출원하여 권리를 보장받고 무분별한 파편화를 방지해야 한다. 지속적인 개발을 위해 필요한 조치이다.

 

작업을 다시 시작하는 이 시점에 솔직한 내 생각은 대중화가 쉽지 않고 나 혼자만의 뻘짓을 끝날 공산이 크다는 것이다. 동료들은 도대체 그걸 왜 만드느냐 이해하지 못하는데 그건 소젯에 대한 설명을 제대로 듣지 않아서이기도 하지만 익숙한 무언가를 갈어 엎으려는 시도가 성공한 예가 많지 않기 때문이기도 하다. 실제로도 성공한 예가 드물다.

나도 그걸 모르는 바가 아니며 굉장히 험하고 먼 길임을 안다. 완전히 실패할 가능성도 배제할 수 없다. 그러나 실패할 때 하더라도 할 수 있는 한까지는 최선을 다해 최종본을 만들어야 한다. 뭘 만들다 실패했는지 보자 라고 하면 만들다 만 미완성품을 보여줄게 아니라 내 스스로라도 이게 완성이다 라고 할 수 있는 결과물을 제시해야 한다. 비록 남들이 보기에는 불완전하고 무모해 보여도 적어도 내가 보기엔 완벽하고 남들에게 자랑하고 싶은 물건이어야 한다.

그럼 현재 소젯은 어떤가? 작년에 굉장히 많은 발전을 했지만 여전히 내 맘에 들지 않고 아직도 더 해야 할 일이 산더미이다. 머리속에 상상하고 있는 기능까지는 완벽하게 구현해야 알파 버전이라고 주장할 수 있다. 올해 할 일은 대중화 가능한 키보드가 아니라 내 맘에 드는 알파 버전을 만드는 일이며 그 후의 일은 내년에 계속하면 된다.

일도 중요하지만 건강하고 여유로운 삶도 중요하니 너무 서두르지 않되 꾸준히 계속 하기로 한다. 설사 돈이 없어 딴 일을 하더라도 멈추지는 않는다. 꼭 성공이 최종 목표는 아니며 방향을 잃지 않고 하고 싶은 걸 원없이 하고 결과를 남겨 부족한 부분은 다음 개발자가 이어서 하도록 발판을 마련해 두면 그 또한 나름의 성공이다.

20~23호 제작 과정

전체 제작 과정과 치수를 정리한다. 꼼꼼히 정리해 놓아야 변경할 때 정확한 치수대로 변경할 수 있다. 과거 기록까지 참조하여 치수와 제작 방법을 정확히 정리하였으며 중간에 조정한 것까지 다시 적용하여 정리했다. 이 과정대로 처음부터 다시 만들어도 플레이트를 완성하는데 그리 오랜 시간이 걸리지 않는다.

매 시제품마다 크게 달라지지 않고 조금씩 바뀌므로 버전별로 정리한다. 20호가 초안이되 21, 22호는 파란색으로, 23호는 빨간색으로 변경 사항을 정리하여 히스토리를 관리한다. 구조가 바뀌지 않는한 치수 정도만 바뀌며 구조라고 해 봐야 배치가 바뀌는 정도에 불과하다.

 

▶ 키홀을 만든다. 윗 사각은 13.9*13.9*1.1이고  아래는 양쪽 걸쇠 영역 0.5씩 확보하여 폭이 14.9이고 높이는 3.05이다. 날곰은 좀 퍼지는 편이어서 폭을 14.1로 늘리고 아래는 15로 만들었다. 출력 프린터에 따라 치수가 다른데 20호 이후는 폭이 넓어 당분간 날곰 기준이다.

윗 사각을 아래위 0.5미리씩 겹치고 아래 사각도 음수로 -0.05 내려 틴커캐드의 회전 에러를 없앤다. 이 둘은 더 분리할 일이 없으므로 그룹핑해 둔다.

 

18*17*3 플레이트를 덮고 1미리 띄워 중앙 정렬하면 키 하나가 된다. 본 플레이트는 4미리이나 문자 영역은 납땜 편의를 위해 1미리 더 얇은 3미리로 만든다. 2.5 두께도 가능한데 허약해 보이고 3.5는 핀이 가려져 작업이 불편하다.

이 둘을 그룹핑하여 바닥에 내린다. 이러면 높이가 3이 되는데 문자 영역에만 사용한다. 행간의 수직 간격을 좁힐 때는 키홀끼리 침범하게 되는데 이때는 구멍을 미리 그룹핑하지 말거나 필요할 때 그룹핑을 풀어야 한다.

21: 수평 피치는 좁고 수직 피치가 넓어 17*18*3 플레이트를 사용한다.

22: 가이더용 키홀을 사용하고 플레이트는 21호와 같다.

23: 날곰용 키홀을 사용하고 플레이트는 21호와 같다.

 

- 키홀 6개를 17미리 간격으로 나열하고 중지 2미리 위로, 새끼 6미리 아래로 내린다. 좌우 끝은 7도 들고 바닥에 내려 수평 위치를 맞춘다. 개별 키의 수직 위치를 조정해야 하므로 아직 그룹핑하지는 않는다.

21, 22, 23 : 키홀 6개를 16.5미리 간격으로 나열한다. 양쪽 안밖열은 1.23 간격을 더 띄운 후 플레이트폭만 안쪽으로 18만큼 확장한다. 7도 들고 바닥에 내려 수평을 맞춘다. 중지 2미리 위로, 새끼 3미리 아래로 내린다.

2행 복제하여 15.5미리 아래, 위로 4행을 만든다. 스냅을 0.5미리로 맞춰놓고 이동하면 편리하며 홀짝의 색상을 다르게 하는 것이 구분하기 편하다. 15.5는 각도를 주어도 스위치끼리 닿지 않는 최소 간격이며 경사를 주면 키캡간 간격이 13.5 정도 된다.

21, 22, 23 : 2행 복제하여 16.77미리 위로 4행을 만든다. 10도 경사에 의해 키캡 간격이 15미리가 되도록 한다. 0행은 너무 많이 벌어지므로 1미리 아래로 내려 약간 좁힌다.

1, 3행은 10도 기울이고 0행은 20도 기울인다(19호는 1,37, 014도였다). 행 단위로 정확히 선택 후 기울여야 하며 바닥에 내려 수직 위치를 대충 맞춘다.

- 키홀간의 수직 위치는 눈대중으로 맞추어 열내에서 둥그런 모양이 되도록 한다. 2행을 고정해 두고 스냅 0.1미리 단위로 각 열의 수직 위치를 조정하여 연속적이도록 만든다. 새끼나 중지는 아래위 차이가 있어 전체가 다 둥글어질수는 없고 열내에서만 연속적이면 된다. Ctrl 아래 위로 수직 위치를 미세 조정하며 경계 부근에 파랑과 빨강이 절반씩 섞이는 위치에 맞추면 쉽다. 수직 위치가 같은 0, 1열과 2, 4, 5열은 한꺼번에 조정하면 된다.1행을 먼저 2행에 맞춘 후 0행을 조정해야 함을 유의한다.

02, 3, 4열은 0.5미리 내려 더 밀착시킨다. 새끼 손가락 위치인 G0.5미리 내리고 그 위의 11.5미리 내려 접근성을 최대한 높인다. 1키가 그 옆의 $에 비해 1.5미리나 더 아래쪽이다. 수직 위치도 다시 조정한다.

키홀에 파랑, 빨강이 같이 보이는 곳이 있는데 이대로 그룹핑하면 키홀이 침범당한다. 위치를 조정한 후 전체 선택하여 그룹 해제한다. 아래쪽 키홀 -1에 회전에 의한 모서리까지 -1.05 위치에 있는데 -2만큼 더 내린다. 2행 윗면이 플레이트 표면에서 3미리 아래쪽에 위치한다. 본 플레이트 두께가 키캡 플레이트보다 1미리 더 높은 4미리여서 원래 키캡이 1미리 더 낮은데 -2만큼 내리니 3미리 아래쪽이다.

21, 22, 23 : 각도 주기 전에 미리 1미리 당겨 놓아 0행 조정 불필요. 새끼열 키의 미세 조정도하지 않는다. 키홀 침범도 없어 그룹 해제할 필요 없다. 전체 선택시 -0.12 정도에 있는데 -3만큼 더 내려 2행 윗면을 플레이트 표면 4미리 아래에 놓는다.

- 엄지키를 디자인한다. 문자키는 플레이트를 겹치지 않아 아래쪽을 신경쓸거 없지만 엄지는 플레이트 전체를 겹치므로 구멍 보존을 잘 해야 한다. 엄지 중앙은 그냥 구멍이면 된다. 왼쪽은 경사에 의해 플레이트를 뚫어야 하므로 아래 사각형을 3미리 더 두껍게 내린다. 여기에 18*17*4 플레이트를 중앙 정렬한다. 기울이면 위쪽도 플레이트에 의해 가려지므로 같은 크기의 구멍으로 위를 덮는다. 오른쪽도 하나 더 복사하고 좌우를 10도씩 기울인다.

회전에 의해 좌우키의 중앙이 약간 아래로 내려가는데 이건 그대로 두어 높이 차를 유지한다. 중앙은 15, 오른쪽은 30도 회전한다. 회전은 교환법칙이 성립하지 않는데다 틴커캐드가 무조건 중앙 기준 회전만 하므로 수직으로 먼저 기울이고 수평을 나중에 기울인다.

다음은 하단 모서리 위치를 맞추되 이 작업이 까다롭다. 측면에서 보면 두께가 달라 거리를 가늠하기 어렵다. 위에서 내려다 본 상태에서 구멍의 모서리끼리 2미리 정도 간격이 되도록 띄운다. 플레이트의 간격이 아닌 구멍의 간격을 잘 맞춰야 한다. 간격이 잘 안보이면 좌우의 프레임을 잠시 숨겨 놓고 보면 된다.

엄지 아래 키홀을 만든다. 구멍 하나 놓고 상하좌우 1미리씩 확장한 16.9*15.9*4(날곰은 17*16.1*4)의 구멍을 위에 얹어 중앙 정렬하고 그 아래에 20*18.9의 플레이트를 중앙 정렬한 후 전체 -4미리 아래로 내린다. 한벌 더 복사한 후 10, 20도로 기울여 중앙키 아래 등거리에 놓는다.

21, 22, 23 : 엄지 아래 -5미리

엄지키 전체를 43행키(쿼티V자리)에서 6미리 왼쪽에 둔다. 위쪽으로도 바짝 붙여 두 키의 프레임이 반쯤 겹치도록 한다. 이 작업이 좀 어려운데 윗뚜껑 숨기고 키홀끼리 6미리 거리가 되도록 하면 된다. 6미리 사각형 하나 놓고 거리를 재면 편리하다.

- 회전하기 전에 사방을 플레이트로 두른다. 들쭉 날쭉한 부분을 다 채우고 수직 각도에 의해 뚫린 부분까지 다 메꾼다. 시간이 좀 드는 작업이며 걸리적거리지 않고 튼튼하게 메우기 위해 꼼꼼하게 작업해야 한다. 회전시 좌하단이 위로 올라가므로 아래쪽을 넉넉하게 만들어야 한다.

이전 플레이트가 있으면 복사한 후 문자, 엄지 삭제하고 초록색으로 바꾼 후 수정하는게 더 빠르다. 어차피 필요한 부품은 같고 위치만 다르기 때문이다. 일단 회전하면 내부는 편집하기 어려워 회전하기 전의 모델을 백업해 둔다. 다 메꾼 후 그룹핑하고 8도 회전한다.

21: 10도 회전한다.

22: 4도 회전한다.

23: 2도 회전하며 그 전에 안쪽 조합키 두개를 배치한다.

 

- 편집키를 17*16 피치로 배치한다. 위에 상하좌우 1미리씩 넓은 구멍을 놓고 아래에 구멍보다 수평 2미리, 수직 1미리 더 넓은 높이 3의 플레이트를 배치한 후 전체 2미리 내린다. 납땜 편의를 위해 플레이트 두께를 3미리로 했는데 전체 플레이트 높이에도 영향을 주므로 가급적 낮게 만들어야 한다.

최초 손바닥 아래쪽에 걸리적거려 4미리 내렸으나 바닥에 스위치 몸체가 걸려 2미리로 조정했다. 여기까지 만든 부품을 따로 백업해 두었다. 5도 기울여 좌하단 문자 키와 수직 위치 맞도록 정렬하고 문자끝 모서리에서 8미리 정도 아래에 배치한다. 8미리 사각형 하나 만들어 거리 조정하면 된다.

21: 16.5*15.5 피치로 배치하고 높이 3 플레이트로 덮어 전체 3미리 내린다.

22, 23 : 바닥에 자꾸 걸려 2미리만 내린다.

Ctrl, Alt는 수직피치 17로 하여 Ctrl+바로 왼쪽에 있도록 한다. 나머지 두 조합키는 수직피치 16으로 배치하되 Esc는 문자 영역보다 약간 위에 있도록 $ 좌상단에 맞추고, NumQ보다 절반 정도 아래에 배치하여 엄지로도 누를 수 있도록 한다.

21: Ctrl, Alt는 수직피치를 19로 하고 Ctrl2미리 더 안쪽으로, Esc, Caps는 수직피치 16Esc 1미리 안쪽으로, Fn, Num은 수직피치 15.5에 맞춘다.

22: 21호와 피치는 같되 조금씩 더 아래로 내린다.

23: 간격을 조정하여 ECCA를 좁힌다.

- 플레이트 주변을 구멍으로 감싸 직사각형 모양으로 만든다. 구멍은 높이 6-1밀 아래로 내려 회전 에러를 방지한다. 잘라낼 영역을 완전히 감싸야 한다. 좌우 끝 키와의 간격은 2미리 정도 남긴다. 가운데 영역이 플레이트의 크기인데 140*120이다. 그룹핑하면 직사각의 플레이트가 된다.

21: 140*128이다.

22: 148*120이다.

- 플레이트를 수직으로 2도 기울인다. 기본 수직 각도이며 틴지칩과 납땜 배선만 들어가면 되므로 더 이상 기울일 필요 없다. 수평은 2~5도 사이에서 자유롭게 기울일 수 있되 20호는 3(21호는 4, 22호는 6) 기울였다. 이 상태에서 D를 눌러 플레이트를 바닥에 붙인다.

이러면 좌하단 편집키의 프레임과 스위치의 기둥이 바닥에 닿는데 이건 하판을 뚫어 해결할 수 있다. 하판 두께를 고려하면 2미리 정도 더 내려도 된다. 두께 2미리의 구멍을 편집키 모서리에 대고 그룹화하여 깍는다. 플레이트 좌하단도 닿으므로 여기도 같이 깍는다.

D를 눌러 바닥에 앉힌다. 좌하단 편집키의 걸쇠가 아슬아슬하게 살아 남는다. 편집키 위치를 2미리 높여 이제는 이럴 필요가 없다. 체리 스위치를 사용한다면 깍지 말거나 오히려 1미리 정도 더 높여야 한다.

21: 편집키 좌하단만 1미리 구멍으로 잘라내고 바닥에 앉힌다. 플레이트 좌하단이 바닥에 닿아야 한다.

22: 편집키 좌하단과 플레이트 모서리를 0.5미리 잘라내고 바닥에 앉힌다. 플레이트 좌하단이 바닥에 닿아야 한다. 좌우 합치지 않고 기둥으로 넘어간다.

23: 수평 6, 수직 6도 기울이고 바닥에 1미리 든다. 이후의 과정은 23호 제작편에따로 정리하였다.

- 왼쪽 플레이트를 복사하여 대칭시켜 오른쪽 플레이트를 만들고 139.4미리 오른쪽에 배치한다. 회전에 의해 플레이트폭이 140.23으로 약간 더 커졌고 중앙 부분을 정확히 맞추기 위해 폭보다 약간 덜 띄워야 한다.각도에 따라 약간씩 달라지는데 중앙 접점 부분이 일부라도 포개져 있어야 튼튼하게 그룹핑된다.

이런식으로 V짜로 쪼개지는 부분이 있어서는 안되며 경계선 전체가 완전히 밀착해야 한다. 플레이트폭보다는 1미리 정도 더 짧게 거리를 둔다.

- 펑션 영역을 만든다. 41*120*4 플레이트를 만든다. 펑션키는 17*16 피치로 4개를 놓고 그룹간 간격은 20미리로 주었다. 그룹간 실제 간격은 키홀간 대략 6미리 정도 된다. 수직으로 2도만 기울이고 D를 눌러 바닥에 내린 후 왼쪽 플레이트 옆에 붙인다.

21: 41*128*4 플레이트 배치. 가로 16.5, 세로 15.5 피치로 키홀 4개를 놓고 그룹간은 5미리 띄운다. Esc와 펑션키를 구분하기 위해 위쪽에 사각형을 깔고 소젯 엠블렘을 1.5미리 돌출되게 놓는다.

22: 40*120*4 플레이트 배치. 6도 기울이고 가장자리에 기둥 세우고 나사 구멍, 드라이버 구멍, 선 들어올 구멍을 뚫는다.

 

그룹핑을 튼튼하게 하려면 일부라도 겹치는 부분이 있어야 하며 그래서 폭이 41이다. 1미리만큼 왼쪽 플레이트와 포개되 전체 폭이 320이 되도록 포개는 정도를 조정한다. 엠블렘은 중앙에 돌출부가 1미리 정도 되도록 박는다. 키캡에 가려지지 않도록 위에 배치한다. 좌우, 펑션, 엠블렘까지 전체 그룹핑한다.

 

- 하단에 수직 기둥을 박는다. 상단 중앙에 틴지칩 넣을 자리 최소 43미리는 남겨 둬야 하며 키홀에 걸치지 않도록 한다. 바닥에 배치하고 상판을 뚫고 나오지 않도록 높이를 조정한다. 가급적 아래쪽에는 나사 구멍을 내지 않도록 위쪽에 기둥을 배치한다. 모든 기둥에 나사 구멍을 다 낼 필요는 없고 힘만 받치는 부분은 기둥만 있어도 상관 없다. 기둥까지 포함하여 그룹핑한다.

- 기둥에 나사 구멍을 박는다. 2.7미리 15길이의 나사 구멍을 6미리 깊이로 기둥 중앙에 박아 넣는다. 나사 구멍 깊이가 6미리이므로 최소한 그 이상의 두께가 되는 기둥에만 나사를 박아야 한다. 만약 그보다 낮은 곳이면 나사 구멍을 아래로 내려 상판을 뚫지 않도록 해야 한다.

- 모서리에 둥근 외곽선을 친다. 5*5사각형에 10*10원구멍을 그룹핑하고 남은걸 구멍으로 만든 후 키보드 모서리에 하나씩 붙인다. 하판까지 같이 파기 위해 아래로 10미리 내려 둔다. 측면 타원은 10*30크기에 64스텝이며 아래에서 10미리 위로, 플레이트쪽으로 2미리 안으로 배치했다.모서리에 정렬한 후 위로 10, 아래로 두칸 이동하면 된다.

  

전체 그룹화하면 플레이트가 완성된다. 전체 크기는 319.61*120.07이되 시제품에 따라 약간씩 차이가 발생할 수 있다.

- 하판을 만든다. 플레이트 크기대로 4미리 하판을 만든다. 그 위에 플레이트 사본을 얹고 4미리 띄운다. 그룹을 해체한 후 플레이트는 지워 버리고 나사 구멍과 모서리, 측면 타원만 남는다. 위쪽에 23미리 간격으로 4미리 안쪽에 틴지 나사 구멍을 배치한다. 플레이트가 회전에 의해 직사각형이 아니어서 모서리 구멍은 하판에 다시 정렬한다.

전에는 좌우 대칭이어서 뒤집은 상태로 구멍을 배치해도 되지만 이제는 앞뒤 구분이 있다.180도 회전하여 뒤집은 상태에서 아래쪽 4개는 나사 머리 공간을 만든다. 하판에 묻힐 가능성이 있는 나사 구멍은 공간을 만들어야 한다. 전체 그룹화하여 바닥에 내린다.

위쪽에 긴 가로바, 중간에 100미리 가로바 하나를 배치하고 6도 각도의 구멍을 얹어 1미리 위로 띄어 각도를 만든다. 각도와 위로 띄울 거리는 상황에 따라 선택하되 각도가 적으면 나사 구멍이 돌출할 수 있어 위로 더 띄어야 하고 체리 스위치를 쓸려면 각도와 높이를 둘 다 상향 조정해야 한다. 20호는 5도 각도 위쪽1미리이다. 21호도 5도 위쪽 1미리이다.

다시 뒤집어 플레이트를 위에 포갠 후 아래쪽 편집키와 펑션키 4개를 위한 구멍을 뚫는다. 체리 스위치를 쓴다면 가운데 펑션키 구멍도 뚫어 두어야 하며 각도에 따라 스위치가 하판보다 낮은 곳은 무두 뚫는다. 너무 꼭 맞출 필요는 없고 넉넉하게 뚫으면 된다. 그룹핑한 후 다시 뒤집어 바닥에 내리면 완성이다.

- STL로 저장한 후 큐라에서 플레이트를 불러온다. 0.2미리 레이어에 인필 30%, 서포트 밀도 15%Z간극 0.4, 브림, 인터페이스 없애고, 지지대벽 0에 맞춘다. 스커트를 없애야 베드 안에 들어온다. 예비 압출선 나올 때 제거하거나 모델을 약간 위로 이동한다.

 130그램의 필라멘트가 소요되며 13시간 27분 걸린다. 하판은 똑같은 옵션으로 찍되 서포트는 어차피 생기지 않는다. 122그램에 9시간 15분 걸린다. 색상이 같다면 두개를 한판에 찍을 수도 있다.

19, 20호 사용기

19, 20호를 회사에서, 집에서 각각 두달, 한달간 사용해 봤다. 그럭 저럭 쓸만은 하고 익숙해지면 실사용이 가능한 수준이기는 하다. 실제 이 키보드를 쓰면서 크게 불편하거나 안되는 건 없고 오히려 더 편리한 면도 있다.

그러나 입력 속도 개선과 제자리 원칙에 치중하다 보니 매니악한 면이 있다. 익숙해야만 쓸 수 있고 처음 접근하기는 굉장히 어렵다. 이 키보드를 처음 본 사람은 어떻게 사용해야 할지 감도 잡기 어렵다.

원칙대로 만드는 것도 중요하지만 대중성이라는 것도 결코 무시할 수 없는 요소이다. 21호는 접근하기 쉬운 키보드를 목표로 하며 따라서 20호에서 세웠던 원칙 일부를 잠시 역행할 필요도 있다. 20호 사용기를 정리해 보고 21호 설계 방향을 잡았다.

 

- 배치 : 큰 문제는 없으며 이 상태로도 괜찮다. Esc의 위치가 조금 애매했는데 막상 써 보니 큰 문제는 아니며 조금 더 크게 만들고 펑션키를 살짝만 내려 구분하기로 한다. 펑션키가 왼쪽에 있는건 사람들 평가도 호의적이고 막상 써보니 꽤 편하다. 다만 좌우 비대칭이라 분리형으로 설계해 보는게 어떨까 기획중이다.13개를 넘기는게 좀 부담스러운데 방법을 찾아 봐야겠다.

- 피치 : 좁으면 이동거리가 짧아 속도가 빨라지겠지만 기대했던만큼은 아니고 오히려 적응이 더 어렵다. 수평 17은 됐고 수직 14는 좁으니 15 정도로 넓히고 키캡 사이에도 간격을 적당히 두는게 덜 헷갈린다. 다만, 새끼열 위쪽의 10의 접근성을 높인 건 꽤 괜찮은 작전인 듯 해 이 부분만 유지하면 좋을 듯 하다.

- 문자 각도 : 문자에 각도를 주는 작전은 좋았는데 너무 과하게 주었다. 제자리에서 칠 때는 느끼기 어렵지만 개별키 하나만 누를 때는 어색하다. Enter키만 따로 집게 손가락으로 누르면 경사면을 눌러야 하고 숫자키도 위쪽 모서리를 누르게 된다. 20호의 각도는 다음과 같다.

원래는 집안새밖열과 엄지 양쪽의 수평 키캡 각도를 8도로 주었으나 과한거 같아 4도로 줄였는데 그래도 많이 기울었다. 스위치에 부여한 각도는 그대로 유지하거나 조금 조정하더라도 키캡의 각도는 다 없애기로 한다. 스위치에 각도를 주어야 누르는 방향으로 수직이 된다.

- 키캡 : 현재 16*13인데 간격이 너무 없어 답답해 보이고 중간쯤을 누르는 실수가 잦다. 주변키랑 최소한 1미리의 여백은 있어야 하는데 이 기준이면 수평폭은 15가 되어야 하고 수직높이는 피치에서 2를 빼서 정한다. 스위치만으로 각도를 주면 모든 키캡은 평평해야 하니 따로 만들 필요도 없다.

- 양팔 각도 : 문자키 좌우 8도는 지금까지 딱 적절했었는데 이 각도는 팔을 오므리고 정자세로 칠 때만 적당하다. 팔꿈치를 책상위에 올리고 장시간 치면 8도가 작다. 또 좌우 거리도 좁아 조금 더 벌렸으면 좋겠다. 일체형인 현재 구조로는 거리를 띄우기는 어렵고 자판 각도 8도는 10도 정도로 벌리는 것도 괜찮을 듯 하다. 9호가 최고 9도까지 시도해 봤고 10도는 아직 만들어 본 적이 없다. 각도와 거리를 조정하려면 분리형으로 만들어야 하는데 언젠가는 시범삼아 만들어 보기는 해야겠다.

- 제작상의 문제 : 열납땜시 사용한 에나멜선의 납땜 강도가 떨어져 접촉 불량이 자주 발생한다. 20호를 바닥에 떨어뜨린 적이 있는데 10개 정도의 키가 먹통이 되어 납땜을 다시 했다. 불로 달구면 에나멜이 벗겨지는 하는데 이 상태에서 납이 잘 묻지 않아 따로 논다. 납땜 방법에 대해 더 연구할 필요가 있다.

소젯 1.33

하드웨어와 함께 소프트웨어도 진척이 있어야 하는데 그간 하드웨어에만 너무 집중했다. 그러다 보니 하드웨어를 바꿀 때마다 프로그램의 어디를 수정해야 하는지 헷갈리고 신속히 대응하지 못했다.

시간에 쫒기다 보니 나중에 해도 될 일이라 생각다 보니 그렇게 되었는데 21호에서 그동안 미뤄 두었던 작업을 웬만큼 해 두기로 한다. 20호와 배치가 같아 버전을 올릴 필요는 없고 1.33으로 계속 개발한다. 21호 실물을 만들기 전에 소프트웨어 작업부터 하자.

 

▶시간 통계가 현재 시간 기준이라 오히려 보기 불편하다. 같은 시간은 항상 같은 위치에 나오는게 직관적이다. 24시간 단위로 2~3일치를 한꺼번에 보여 주는게 좋겠다. 작년에 급하게 수정한 중간 결과이다.

언제 얼마만큼 키보드를 사용했는지 잘 보여 주며 사흘치 정도면 오늘 포함 어제, 그제가 다 보이니 이 정도면 꽤 실용적이다. 그러나 더 수정할 사항이 많다.

 

- 그날 총 타수를 날짜 밑에 표시한다. 날짜별 작업량을 한눈에 알 수 있다.

- 화면이 너무 크다. 바를 30에서 20으로 줄이고 간격도 좁게 만들고 폰트도 줄인다.

- 모든 치수를 상수로 정의하여 가독성을 높이고 조정하기 쉽도록 한다.

- 일자별로 박스를 치고 배경도 깔아 각 날짜별로 구분되게 한다.

- 대화상자 크기와 컨트롤 위치를 동적으로 계산한다.

- 메인창이 구석에 있는 상태에서 중앙에 열리면 화면을 벗어나는데 이를 방지한다.

 

새벽에 약 3시간 정도 코딩해서 대화상자를 완성했다. 오랜만에 코딩을 하니 역시 재미는 있다. 쉬었다 하다 보니 프로젝트 구조가 얼른 한눈에 들어오지 않았지만 생각한대로 되기는 한다.

소젯으로 영문 코딩을 하기는 아직까지는 좀 불편하지만 아주 못할 정도는 아니고 답답하지 않을 정도로는 속도가 나며 조금만 연습하면 될거 같다. 키워드와 연산자 위치에 점점 익숙해지고 있다.

기획했던것만큼 완성했고 일단 마음에는 든다. 그러나 아직 클렌징 논리가 없어 이대로 놔두면 1년에 365*24개의 항목이 INI 파일에 쌓이게 된다. 적당한 기간을 정해 놓고 종료전에 이전 기록을 삭제하는 클렌징 논리가 필요하다. 한달 정도 보유하면 충분할 듯 하다. 시간별이 아닌 날짜별로 1,2,3,4,.... 식으로 24개를 묶어 저장하면 기간을 좀 더 늘려도 된다. 이건 다음에 하자.

▶매크로 기능을 대충 만들다 보니 정리가 좀 필요하다. ^A:del:^V 세 명령을 정의했더니 동작하지 않아 점검해 볼려고 했는데 지금은 잘 된다. 좌우 글자 교체, 단어 삭제 샘플도 지금은 잘 동작하고 end:home:/:/:space:down:home로 주석 달기도 테스트해 봤는데 잘 된다. 연속 명령 실행 자체는 당장은 문제가 없는 듯 하니 일단 넘어가되 차후 실행 로직을 더 정교하게 손볼 필요하는 있다.

오른쪽의 Find키에 Ctrl 조합키 기능을 부여해 놨는데 이게 잘 동작하지 않으며 키 눌림 표시도 안된다. 점검해 보니 매크로를 조합키로 인식하는 건 잘 동작하는데 조합키로 바꿔 입력한 후 그냥 리턴해 버리기 때문에 큐에 매크로키 입력이 기록되지 않고 따라서 OnPaint에서 최후 누른키로 인식하지 않는다. 또 키 누른 회수에도 반영되지 않는 문제가 있어 원래 누른키에 대한 횟수를 증가시키도록 수정했다.

▶매크로를 단독 조합키로는 등록할 수 있지만 Ctrl+Shift 복합키 조합으로는 등록할 수 없다. 복합키로도 등록할 수 있으면 ^#T, ^#S 등의 조합키를 누를 때 편리하다. 현재 매크로로 조합키를 대체할 때는 ctrl, alt, shift, win 단어만 지정하도록 해 놨는데 이 방식은 조합이 어렵다. ctrlshift, altshift같은 두 조합키 조합이 6개가 있고 순서까지 고려하면 12개나 된다. 3개 조합도 물론 가능해야 한다.

이런 식으로 하면 대체 조합이 너무 많이 생길 뿐만 아니라 사용자가 쓰기에도 불편하다. 그래서 매크로 지정식과 마찬가지로 ^@#! 4개의 기호로 순서에 상관없이 지정하되 이 외 다른 문자가 포함되어 있지 않을 때 조합키 대체로 인식하도록 한다. CtrlShift 조합은 ^# 또는 #^으로 지정하면 된다. ^#S는 조합키 대체가 아니라 그냥 단축키이다. 매크로에 조합키만 있는지 판단할 때는 strspn 함수로 조합키 외의 문자가 있는지 보면 된다.

 

if (strspn(arCom[0], "^@!#") == lstrlen(arCom[0])) {

 

조합키 외의 문자가 없으면 이는 조합키로만 된 매크로이고 조합키 조합을 누르고 리턴해 버리면 된다. 생전 안쓸거 같은 C 함수가 이럴 때는 또 유용하다. 테스트 해 보니 ^# 조합은 잘 되는데 ^! 조합에 문제가 있다. 가상 데스크탑 만들어 두고 좌우로 이동할 때 쓸 수 있는데 ^!right는 되지만 ^!로 해 놓고 좌우 이동키를 누르는 건 안된다.

최초 Win키를 오토 리피트 처리해서 그럴거라고 생각했는데 그건 아니고 다른 매크로 키는 다 되는데 NumLock키만 문제가 있다. 이 키를 누르면 중간에 Pause로 바뀌어 버리는데 원인은 아직 모르겠다. 디버그 로그를 더 상세히 찍어봐야 할 거 같다. 다른 키에 ^!를 할당하면 데스크탑 이동도 문제없이 잘 된다.

▶매크로의 자동 반복 기능은 문제가 있다. 문자키를 누르고 있으면 당연히 자동 반복되어야 하지만 Copy 명령을 여러번 누를 필요가 없으며 대량 복사를 반복하면 화면이 깜박거린다. 실무에서 쿼리 실행 단축키를 매크로로 등록해 놨다 잘못 눌러지는 바람에 같은 명령을 수십번 반복하는 사고가 있었다.

명령에 따라 반복 가능성을 통제해야 한다. 매크로 키의 반복 여부는 어떤 명령을 할당했는지에 따라 달라지므로 키의 속성이 아니라 명령의 속성이다. 매크로 키 자체는 일단 반복 가능한 속성을 가져야 하며 명령별로 반복 가능성을 지정한다.

 

Caps, Copy, Save, Find : 반복해서는 안되며 그럴 필요도 없다.

Paste, Undo, Redo : 반복 안해도 되지만 필요한 경우도 있다.

 

반복 여부는 매크로의 속성으로 저장하면 되나 모든 매크로에 이걸 지정하는 UI를 보여 주는게 복잡하다. 디폴트로 반복 불가능으로 해 놓고 반복이 필요한 매크로는 앞에 *기호를 붙이도록 한다. *^V 이런 식으로 지정하고 실행할 때는 *를 땐다.

윈도우는 키반복을 어떻게 처리하는가를 보면 반복은 발생하되 적용을 한번만 한다. Caps키를 누르고 있는다고 해서 대소문자가 계속 토글되지는 않으며 최초 한번 누를 때만 토글하고 나머지는 무시한다. 키를 놓을 때 토글하는 것도 아니다.

매크로도 이런 식으로 연속 입력을 무시하면 된다. 최초 큐에 마지막 누른 키가 같으먼 무시하도록 해 봤는데 이러면 뗐다가 다시 누를 때도 무시되는 문제가 있다. 계속 누를 때의 자동 반복만 무시하고 연속 입력은 가능해야 한다. 결국 훅킹 함수에서 매크로의 속성을 보고 무시 여부를 직접 판단해야 한다.

작성 결과 일단은 잘 동작하나 사용자가 *를 직접 붙여야 하는 부담이 있다. 디폴트 매크로에도 VZY에는 *를 붙여 두었으며 나머지는 자동 반복을 하지 않도록 했다. 일단 동작을 확인했으니 상세한 버그나 UI는 차후에 고려하자.

▶개별 매크로를 원하는대로 설정해서 작업 목적에 딱 맞게 사용할 수 있다. 문서 편집이나 웹 페이지 작성 등의 작업을 할 때 자주 쓰는 일련의 명령을 매크로로 작성해 두면 효율적이다. 다음은 동영상 검토를 위한 빨리 보기 관련 단축키이다.

이렇게 바꾸는 건 쉽지만 원래대로 돌아가거나 다른 매크로 집합으로 스위칭하기는 쉽지 않다. 작업중에 당장 필요한 매크로로 바꿔 쓰다가 작업 종료후 복귀하거나 다른 집합으로 신속하게 바꿔쓸 수 있어야 한다. 이를 위한 몇 가지 방안을 생각해 봤다.

 

- 매크로 집합 정의 : 기본셋 외에 새로운 집합을 만들고 원하는대로 바꿔 둔다. "문서편집", "웹작업" 등으로 이름을 붙여 두고 집합 자체를 스위칭하며 사용한다. 한방에 바꿀 수 있고 미리 만들어 둘 수 있어 좋다. 각 집합에 FN 조합 단축키를 할당해 두면 더 편리하다. 통째로 정의해 직관적이지만 집합이 많아지면 저장할 정보가 늘어나는게 흠이다.

- 매크로 변경 스크립트 정의 : m1=com1;m2=com2 식으로 각 키에 명령을 설정하는 스크립트를 작성해 두고 필요시 이 스크립트를 실행한다. 여러 개의 스크립트를 미리 준비해 두고 필요시 FN 단축키로 일부 매크로를 빠르게 스위칭할 수 있다. 디폴트로 돌아가는 스크립트나 명령도 필요하다. 스크립트 문법 정의나 파싱이 좀 까다롭지만 기억할 정보가 적고 꼭 바꿀 것만 지정할 수 있는 이점이 있다.

- 기본 매크로를 루트로 두고 변경할 필요가 있으면 상속받아 일부를 바꾼다. 변경하지 않은 것은 부모셋을 따르도록 하고 재상속도 가능해 비슷하지만 조금씩 다른 매크로 집합의 계층을 구성할 수 있다. 그 계층에서 하나의 집합을 활성화하여 스위칭한다. 활용성은 있을 듯 한데 너무 이상적이고 사용자가 보기에는 어렵다.

 

셋다 가능은 한데 복잡도가 증가한다. 있으면 좋은 기능인 건 분명한데 지금 이 시점에 이 정도까지 만들 필요가 있나 싶어 이 기능 자체는 잠시 보류하기로 한다. 좀 더 생각해 보면 더 좋은 안이 나올 수도 있어 성급하게 구현할 필요는 없다. 다만 기능 구현을 위한 정리 작업은 미리 해 둘 필요가 있다.

현재 리셋 명령이 없어 INI 파일을 지워야 원래대로 돌아갈 수 있는데 리셋 버튼부터 만들어 보자. 현재는 INI 읽는 루틴의 기본값이 곧 매크로 초기값이되 이 값을 정의하는 부분을 한군데만 두고 버튼 클릭으로 디폴트로 돌아가는 기능을 만든다. 매크로의 디폴트값은 여기에서만 관리하면 된다. 대화상자에서 호출시 임시 구조체를 리셋하여 컨트롤에 대입함으로써 OK를 누르기 전에는 취소 가능하도록 했다.

Option 구조체에서 매크로를 저장하는 멤버가 TCHAR [128]로 되어 있는데 쓰기는 간편하지만 길이 제약이 있다. 아무리 C 수준의 코드지만 문자열은 string 타입으로 바꾸자. SoEnty 프로젝트에서는 이미 wstring을 잘 써 먹고 있다. APIEdit를 드러낸 후에는 유니코드로의 전환도 고려해야 한다. 매크로 길이의 제약이 없어졌고 배열 차수가 낮아서 다루기도 더 쉽다.

매크로 키 하나당 Ctrl, Shift 조합이 가능해 명령이 세 개씩 있다. CopyPaste에는 조합이 할당되어 있고 나름 유용하게 잘 써 먹고 있다. 다른 매크로도 필요하면 조합도 가능해서 이 기능 자체는 긍정적이다. 그러나 대화상자가 너무 복잡하고 편집도 헷갈리며 읽고 쓸 값도 너무 많다. 세 명령을 다음 형식으로 합친다.

 

단독명령;Shift조합;Ctrl조합

 

;을 구분자로 하여 세 명령을 합쳐 두고 한 명령안에서 세부 명령을 구분할 때는 :을 사용한다. 또 첫 글자가 *이면 자동 반복을 지원한다. 예약어가 많아 좀 헷갈리는데 이 문제는 차후에 조정하더라도 명령 셋은 하나로 합치기로 한다. 코드에서 셋을 잘라 사용하면 되는걸 사용자를 귀찮게 해서는 안된다. 조합에 대해 매크로를 따로 정의하지 않으려면 단독 명령만 기술하면 된다.

▶매크로와 Shift, Ctrl 조합은 아예 다른 명령으로 취급한다. 그래서 ins키는 다음과 같이 지정하여 조합도 가능하도록 했다. Shift+Ins는 아예 다른 명령이므로 비워두면 아무 것도 하지 않으며 명시적으로 #ins로 지정해 놔야 제대로 동작한다. 사용자가 Shift를 누른 것은 Ins 매크로의 두 번째 명령을 선택한다는 뜻이지 InsShift와 함께 누르라는 뜻이 아니다. 이 구조에서는 Shift+Ins^Ins 명령을 넣어둘 수도 있다.

매크로에 알파벳이나 기호를 할당할 때 매번 이러기는 너무 귀찮아 단독명령만 지정하면 나머지는 알아서 #, ^를 지정해 주는 것이 좋다. 즉 조합키를 명시하지 않으면 현재 누른 조합키와 매크로 명령을 조합하면 된다. 단독 명령에 대해 조합키를 누르면 단독 명령을 읽어 주고 조합키는 이미 눌러 놨으니 그냥 두는걸로 구현해 봤다.

이러면 될 거 같았는데 심각한 논리적인 문제를 발견했다. 매크로 명령이 조합키를 가질 수도 있고 매크로 자체를 조합키와도 같이 누를 수 있다는 점이다. ins에 단독명령만 지정하고 Copy에는 복수명령을 지정했을 때 다음 두 경우의 논리가 배치된다.

 

Shift+Ins : 사용자가 누른 Shift를 유지한채로 ins를 누르면 된다. 이때의 Shift는 명령과 조합되는 키이다.

Shift+Copy : Copy 매크로의 Shift 조합을 누른 것이며 이때는 ^X로 잘라 내도록 해 놓았다. 사용자가 누른 Shift는 매크로를 선택하는 것이지 명령과 조합하는게 아니어서 Shift를 먼저 떼고 ^X를 실행해야 한다.

 

똑같이 Shift+매크로를 눌렀지만 Shift가 누구랑 결합하는가가 다르며 Shift 유지 여부가 달라진다. 이걸 유지하면 Shift+Copy^#X가 되어 버리며 이걸 또 무시하면 Shift+Ins는 그냥 Ins가 되어 버린다. Shift의 의미에 따라 매크로를 실행하는 시점의 조합키 상태를 달리해야 한다.

문제는 의미 파악을 GetMacroCommand가 하고 실행은 ExecCommand가 하는 것으로 시점이 분리되어 있다는 것이다. 인수로 의미를 일일이 전달하거나 실행 시점에 의미를 정확히 알도록 해 주어야 한다. 매크로 종류에 따라 처리가 달라진다.

 

- 조합키 대체 : Shift, Ctrl 조합키의 상태와는 무관하며 있어도 무시한다. 지정한 조합키를 눌러 주고 바로 리턴해 버리면 된다.

- 단일 명령 매크로 : 눌러진 조합키를 인정해야 하며 Shift, Ctrl과 함께 누르면 이 키를 누른 채로 명령을 실행한다.

- 복수 명령 매크로 : 매크로 선택시의 조합키는 무시하고 명령 내의 조합키만 인정한다. 모든 조합키를 일단 놓은 후 명령을 실행해야 한다.

 

매크로에 Shift 조합만 있고 Ctrl 조합은 없는 경우도 가정해야 하니 더 복잡하다. 당장 떠 오르는 해결책은 다음과 같다. Exec는 키의 상태는 전혀 고려치 않고 인수로 전달된 명령을 무조건 실행한다. 명령에 조합키가 있는데 안 눌러져 있으면 눌러주고 없는데 눌러져 있으먼 떼 주면 된다. 물론 명령과 현재 조합키 상태가 같으면 아무 것도 할 필요 없다. Alt, Win은 굳이 떼 줄 필요는 없고 명령에 포함되어 있으면 눌러 주기만 하면 된다.

대신 Get이 명령을 읽을 때 현재 조합에 명령이 없으면 단일 명령에 알아서 #, ^를 붙여 주는 것이다. , 이미 명령에 조합키가 지정되어 있으면 그럴 필요 없다. ^SCtrl과 눌렀다고 ^^S일 필요없이 그냥 ^S이면 되고 Shift와 함께 누르면 ^#S이면 된다. 이 경우 Shift에 굳이 ^#S라고 적어 놓을 필요도 없다. Save 매크로는 단독으로 ^S만 가지면 된다. 디폴트를 이렇게 바꿔 놓았다.

복수 명령 매크로는 해당 매크로를 그냥 읽는다. Shift+Copy자리에 ^X가 정의되어 있으니 #과 조합하지 않아도 된다. 사용자가 지정해 놓은 명령은 그대로 실행하면 되고 빈 명령은 현재 누른 조합키를 붙여서 실행한다. 매크로를 읽는 Get과 매크로를 실행하는 Exec가 협조적으로 잘 동작해야 한다.

논리와 흐름이 어지간히 복잡한데 우야든둥 코드를 완성했으며 기본적인 테스트까지 마쳤다. 문자열을 내부에서 조작하다 보니 차후 버퍼 문제로 말썽을 일으킬 소지가 있는데 그때 잡으면 되고 논리를 확실히 정리했으니 큰 문제는 되지 않을 거 같다.

▶매크로 정의에 :;* 세 개의 문자를 키워드로 사용하고 있어 이 문자는 매크로에 직접 포함해서는 안된다. 오동작할 위험도 있고 어차피 문자로 출력되지 않는다. 이 문자들은 이스케이핑을 해야 하는데 \를 쓰거나 하는건 어려우니 ;의 이름을 semi로 변경하기로 한다. :은 어차피 Shift 자리여서 키가 아니며 가상키도 정의되어 있지 않다.

그런데 *는 좀 다른게 쿼티에서는 Shift 자리지만 소젯에서는 보통 자리여서 이 키를 칭할 방법이 없다. *는 쿼티의 ]에 맵핑되어 있는데 그렇다고 ]를 명령으로 내리니 그냥 ]가 나와 버린다. 완전한 디바이스 드라이버가 아니다 보니 문자를 그대로 맵핑하는 것은 당장은 어렵다. 차후 문자열을 출력하는 명령은 따로 만들어야 할 듯 하며 지금은 매크로에 키만 담도록 하자.

▶매크로를 내부 구조가 대판 바뀌었으니 대화상자도 정리하자. 키당 세개씩이나 되던 에디트를 하나로 합쳤더니 좀 단순해졌다. 그래도 여전히 복잡하고 사용자가 보기는 어렵지만 당장은 어쩔 수 없다. 차후 개별 매크로 편집 대화상자를 따로 제공하여 상세한 설명을 달아 친절도를 높이도록 하자.

이상으로 매크로 관련 코딩을 2~3일에 걸쳐 완성했다. 여러 가지 면에서 정리 및 확장되어 깔끔해졌다는 느낌이 든다. 이런 작업은 회사 다니면서 틈틈이 하기는 솔직히 어려우며 집에서 종일 코딩을 할 수 있어 가능하다.

▶초기 개발시 프로그램 내에서 오토마타 구현을 위해 ApiEdit를 사용했다. 이제는 후킹만으로도 얼마든지 타이핑이 가능하므로 드러낼 때가 되었다. 이거 때문에 프로그램 자체의 OnKey 이벤트도 처리해야 하고 후킹 여부를 점검하는 조건도 많아 복잡도가 증가한다. 이번 버전부터 완전히 제거하고 UI도 단순화하기로 한다. 프로젝트가 대대적으로 바뀔 것이므로 일단 백업부터 떠 두고 제거 작업을 시작한다.

 

- 관련 모듈 제거. Ae 객체 제거 : 일단 컴파일은 가능하다.

- buf, off, bComp 변수 제거. 한글을 직접 조립하지 않으므로 조립 및 BS 코드도 일괄 제거한다.

- initBuf, CalcRate 제거 : 입력한 문장을 읽을 수 없으므로 타수 계산도 불가능하다.

- Insert, Delete 제거 : ApiEdit에서 역으로 호출하여 버퍼를 동기화하는데 이제 그럴 필요가 없다.

- 편집기 설정창 제거 : logfont, 설정의 멤버 제거

- AutoCapital, Strict 옵션 제거 : 버퍼를 직접 들여다 볼수 없어 문장 처음인지, 규칙에 맞는지 알 수 없다. 이건 키보드의 역할이 아니다.

- 키맵의 HonCodeBuildHangulCode 함수 제거 - 한글 조립은 클라이언트가 하므로 내부에서 규칙을 적용할 필요없다.

- OnKey와 그 떨거지들을 모두 제거한다. 후킹을 하지 않을 때는 굳이 키입력을 받아 소젯 방식으로 동작할 필요없이 그냥 쿼티 배열로 동작하면 된다.

- 나 자신이 활성화 된 상태에서는 후킹을 하지 않고 먹어 버리는 코드도 필요 없다. 후킹과 OnKey가 소젯을 중복 처리해 꼬이는 걸 방지하는 코드였는데 이제 꼬이지 않는다.

- bHooking 조건을 판단하는 부분을 제거한다. 어차피 후킹하지 않으면 문자 처리 루틴까지 제어가 오지 않으니 무조건 후킹 상태라고 보면 된다.

- 마우스로 키를 클릭해서 입력하는 코드가 있었는데 이제 필요 없다. 터치스크린에서 연습을 위해 도입한건데 클릭을 받는다는건 내가 활성 상태이므로 키를 눌러 봐야 어차피 나만 받으며 타겟으로 보낼 방법이 없다.

- bStartHangul 옵션 제거 : 어차피 나의 모드가 중요한게 아니고 실행 직후 입력을 받는 창의 모드에 따라 동작하므로 이 옵션은 더 필요 없다.

 

여기까지 ApiEdit 제거는 대충 완료되었다. 그러나 화면 구성, 툴바, 메뉴 등에 아직 잔재가 남아 있는데 UI도 대폭 수정해야 한다. 추가적인 문제가 더 발견될 수도 있는데 그때 그때 더 수정하기로 한다.

이 프로젝트는 최초 ANSI로 작성했는데 ApiEdit가 유니코드를 지원하지 못하기 때문이다. 이제 드러냈으니 프로젝트를 유니코드로 만들어도 상관 없다. 이 작업은 차후에 프로젝트를 새로 만들 때 적용하도록 하자.

▶화면이 키보드와 로그, 각종 메시지 등으로 혼란스럽고 깔끔하지 못해 일체 정비하였다. ApiEdit가 사라졌으니 이 창을 직접 쓸 일은 더 이상 없을거고 주로 정보를 보여 주는 용도로만 사용한다.

 

- 키보드 그림 표시를 메인에 하지 않고 별도의 차일드 윈도우로 독립시켰다. 로그나 메시지 등과 겹칠 경우 클립이 되지 않는 문제가 있어 깔끔하게 분리하는게 구조적이다.

- 키보드 위에서 휠을 굴리면 확대/축소한다. 10% 비율로 50~300까지 범위내에서 신속하게 확대할 수 있다.

- 레이아웃 옵션은 더 필요없다. 대화상자와 관련 옵션을 모두 제거하였다. 아주 초기에 터치 스크린을 위해 만들었던 옵션인데 어차피 터치로는 입력하는게 거의 불가능하다.

- 펑션키를 20호에 맞추어 왼쪽으로 이동했다. 필요하면 다시 위로 올릴 수도 있지만 최신 버전에 맞추도록 하자.

- 로그창을 키와 메시지 둘로 분할하려다가 하나로 합치기로 했다. 기존 로그창에 키입력과 메서드 호출 등을 기록하기로 한다.

- 로그는 디버그일 때 보이고 릴리즈일 때 숨기며 실행중에 토글하되 상태를 저장은 하지 않는다. 어차피 개발자용이라 사용자 입장에서는 안 보이는게 좋고 필요할 때만 꺼내 확인하면 된다. 굳이 또 못 보게 할 필요는 없다. 개발자가 얼마나 개고생을 했는지 보는 것도 나쁘지 않다.

- bHideKey 옵션은 제거한다. 전에는 연습 모드일 때 입력창을 크게 보기 위해 필요했지만 이제는 키보드가 없으면 보여줄게 없다. 항상 표시하되 정 보기 싫으면 창을 최소화해 두면 된다.

 

여기까지 작업 완료한 모습이다. 조만간 메뉴도 없애고 툴바도 일체 정비할 예정이라 키보드와 상태 정도만 표시한다.

▶릴리즈에서도 훅킹 정보는 볼 수 있는데 키 누른것만 보여 주어 큰 도움이 안된다. 메서드 호출 관계까지 보려면 디버그 모드에서 돌려야 하는데 이 프로그램은 디버깅이 거의 불가능하다. 디버그창으로 뿌리던 정보를 차라리 릴리즈의 로그창에 뿌리도록 하여 실행중에 프로그램의 상태를 바로 볼 수 있도록 한다.

이를 위해 로그 메시지의 가독성과 형식성을 높이고 꼭 필요한 정보만 포함하도록 수정한다. Trace는 다른 용도가 있으니 그대로 두고 log함수를 새로 만들었다. 일정 개수 이상이 되면 윗부분을 알아서 정리하도록 했고 3초 이상 입력이 없다가 새로 들어오는 입력은 한줄을 띄워 로그간의 구분을 쉽도록 했다.

로그창을 복사하기 쉽도록 에드트로 만들까 하다가 형식성이 떨어지고 관리가 어려워 그냥 리스트를 쓰기로 했다. 저장이나 비교가 필요하면 그냥 캡쳐를 떠 버리면 된다. 로그 순번과 시간을 ms단위까지 표시하여 분석이 용이하도록 했다. 몇가지 사항을 개선하니 실용성이 많이 증가한 거 같다.

로그도 가급적 짧고 요약적으로 꼭 필요한 곳에만 넣어 실질적인 문제 해결에 도움이 되도록 했다. 이 과정에서 코드를 대판 정리하고 흐름도 단순화하는 추가 작업을 했다. KeyEvent 함수가 많은데 역할에 따라 이름을 정비하고 정확한 함수를 부드도록 했다. Process* 함수도 너무 많은데 Bs, Del, Vk는 짧으니 모두 제거했다. 한글 조립을 직접 하지 않으니 이 함수들이 굳이 필요가 없다.

덕분에 코드가 좀 더 깔끔해졌고 흐름도 명확해졌다. 차후 코드 정리하며 흐름도를 다시 작성하고 불필요한 코드는 최대한 제거해야겠다. 이번 버전에서 코드 리뷰와 리팩토링까지 싹 하기로 한다.

▶ 옵션창이 원래는 4개의 탭으로 되어 있었는데 편집기와 레이아웃이 사라졌다. 두 개 남은 페이지도 하나로 합치고 안쓰는 옵션도 정리하자. 프로퍼티 시트는 페이지를 변경할 때 임시 상태가 존재해 사용하기 그다지 편하지 않고 흐름이 복잡하다. 그냥 모달 대화상자 하나로 만드는게 더 직관적이고 코드 관리도 쉽다.

코드 이동량이 좀 많기는 해도 막상 정리해 보니 금방 완료되었다. 리소스 불필요한 거 없애고 두 대화상자를 통합했다. 예전에 4, 5호 때 와이어링 때문에 펑션키의 맵핑을 임시로 조정하는 옵션도 아직 남아 있던데 제거했으며 툴바에 있던 명령 몇 개는 대화상자 안으로 집어 넣었다.

모달 대화상자니 확인 버튼을 누르기 전까지는 어떤 것도 적용할 필요 없고 NewOpt라는 임시 객체도 필요 없어 직선적이다. 일반 옵션과 차맷 옵션이 좀 이질적인데 일단 하나로 두되 차후 옵션이 많아지만 차맷만 별도의 대화상자로 분리하면 되겠다.

▶명령과 옵션이 싹 정리되었으니 이제 UI를 정리하자. 초기에 임의의 명령을 쉽게 넣기 위해 메뉴를 붙였는데 이런 류의 프로그램에는 심히 어울리지 않는 UI이다. 이제 제거하고 자주 쓰는 명령을 툴바에만 배치하기로 한다. 용도에 따라 다음과 같이 그룹을 나눈다. 현재 15개이나 필요시 얼마든지 늘릴 수 있다.

그림을 예쁘게 그릴 실력은 도저히 안되고 해서 WingDing 폰트에서 그림 비슷하게 생긴 문자로 대충 그려 넣었다. 비주얼 스튜디오의 비트맵 편집기가 워낙 개판이어서 이런류의 작업은 시간이 오래 걸린다.

메뉴는 제거하고 모든 명령은 툴바에서만 받는다. 메뉴 ID 다 제거하고 툴바로 대체하였으며 도움말도 다 새겨 넣었다. 시간이 좀 걸렸지만 딱히 어려운 작업은 아니다. 툴바까지 정리하고 나니 좀 예뻐진 거 같다.

▶구조적으로나 기능적으로 많이 정비했는데 예전 코드를 함부러 지우지 못해 주석으로 막아 둔 부분이 많다. 또 아직 살아는 있지만 실제로 안 쓰는 변수나 함수도 꽤 많아 대대적인 리팩토링이 필요하다. 소스 백업이 있으니 필요할 때 다시 살려내는 한이 있더라도 당장 안 쓰는건 싹 지워 버리고 정리하였다.

이런 류의 작업은 가장 정신이 맑고 상태가 좋을 때 해야 한다. 21일 새벽에 메뉴, 툴바 다 정리하고 8시간 이상 푹 자고 난 후라 리팩토링에 적절한 때이다. 코드를 확 뒤집어 엎어 버리겠다. 소스를 편집하는거니 금방 할거라고 생각했는데 웬걸 막상 해 보니 정리할게 많아 하룻밤을 꼴딱 새고도 다 못했다.

아주 예전에 SpaceEdit모드에서는 BS였던 적이 있었고 언어가 하나뿐일 때 Lang키를 BS로 쓰기도 했었는데 그때의 코드가 아직까지 남아 있었다. OnKey도 입력을 받던 시절에 공통 메시지 구조에 맞추던 코드나 ApiEdit를 조작하는 코드도 이제는 쓸모 없다. 안쓰는 코드를 앞 단계에서 이미 대폭 저리하고 왔음에도 잘못된 코드, 불필요한 코드가 엄청나게 많다.

화면 출력 코드에도 불합리한게 많이 발견되어 모두 정리했으며 속도상 비효율적인 부분도 보이는대로 개선했다. 그럼에도 불구하고 아직도 할 일이 많은데 정리는 대충 끝났으니 다음에 천천히 하자. 마우스 동작 옵션와, 타수 계산, 유니코드 전환 등을 더 해야 하며 찾아 보면 이 외에도 할일이 아주 많을 것이다. 소프트웨어만 너무 오래 붙잡고 있는 거 같아 이제 21호를 슬슬 만들어 보기로 한다.

21호 제작

소프트웨어에 대략 일주일 이상, 작업일수로 7일 정도를 소모했다. 충분히 안정화되었고 확장 가능한 수준까지 정리된 거 같으니 이제 시제품을 만들어 보자. 19, 20호와 배치는 거의 같지만 온건하게 만들어 접근성을 높이는게 목표이다. 각도나 거리에 새로운 시도도 계속해 보고 결정의 근거를 남긴다.

 

▶ 가로 피치 : 20호는 17간격에 키캡은 16인데 1미리 간격은 너무 밀착해 보이며 키간 구분이 잘 안된다. 쿼티는 간격이 5미리나 되고 LP 키보드도 4미리이다. 키간 거리를 2미리나 최소 1.5로 늘려야 구분감이 있는데 일단 1.5로 해 보자. 피치 17.5, 키캡 16을 유지하든가 아니면 피치 16.5, 키캡 15로 줄이는 것 중 하나를 선택하기로 한다.

피치를 더 줄이는 건 좀 부담스러운 면이 있지만 지금도 20호를 쳐 보면 좁지는 않아 0.5는 줄여도 될 거 같다. 17이 좀 기분 나쁘고 165가 군대때 쓰던 무전기 이름이라 괜히 정이 간다. 플레이트 세로줄이 현재 3미리인데 2.5로 줄이면 허약할까 걱정이나 가로줄 2.5가 잘 버티고 있는거 보면 괜찮을 거 같다. 수평피치 0.5를 줄이면 새끼와 집게가 2미리 가까워지고 플레이트 전체로는 6미리나 짧아지는 것도 좋다. -> 실제로는 안밖열이 멀어져 폭은 거의 그대로임.

▶ 세로 피치 : 20호는 밑판의 홀 피치가 15.5미리이고 각도의 의해 키캡 피치는 14였다. 이 간격이 좁아 답답해 보이고 적응이 어렵다. 운지거리 최소화로 인한 고속 입력은 별 효과없고 익숙해지면 힘이 좀 덜 들기는 한다. 홀 간격을 늘려 키간 간격을 15에 맞추고 키캡은 13으로 하여 키간에 2미리씩 띄운다. 행간 각도로 인해 키캡 피치를 정확히 맞추려면 키캡 높이까지 고려한 수학 공식을 구해야 한다.

스위치(플레이트위로 드러나나 부분)와 키캡의 높이를 더하면 10미리이다. 깍인 사면을 기준으로 하면 8미리이나 윗면을 기준으로 하는게 맞다. 두 스위치를 아래위로 나란히 놓고 위쪽 스위치를 10도 기울였을 때 윗면의 간격이 15여야 한다. 이때 아랫면은 얼마를 더 띄워야 하는지 계산하면 된다. 두 스위치 사이에 삼각형을 놓고 계산해 보면 높이는 아랫면 길이 10tan10을 곱하면 되므로 1.763이다. 윗면 간격 15에 이만큼을 더해 16.76만큼 아랫면을 띄우면 된다는 계산이 나온다.

수학적으로는 정확한 계산이지만 틴커캐드가 항상 중앙을 기준으로 회전하기 때문에 약간의 오차는 있다. 1행은 그나마 회전후 바닥에 정렬을 하니 오차가 덜한데 0행은 오차가 꽤 발생한다. 회전후 위로 이동시커 1행과 둥글게 정렬할 때 1행 끝의 사면을 따라 올라오는게 아니고 수직으로 올라오므로 원하는 거리보다 멀게 배치된다. 이건 공식을 더 계산하는 것보다 경험적으로 대략 0.5만큼 안쪽으로 강제 이동하는게 더 나을 거 같다.

이번에는 안밖열 7도의 수평 간격을 계산해 보자. 방식은 같되 측면에서 바라 보는게 아니라 정면에서 바라본다. 키캡폭은 15이고 원하는 간격은 16.5이다. 7도 기울이면 아랫면 꼭지점이 1.228만큼 이동한다. 홀 수평피치 16.51.228을 더해 17.73만큼 홀을 띄우면 윗면의 간격이 16.5가 된다.

전에는 눈대중으로 대충 계산해서 간격을 띄우고 그래도 안되니 약간씩 조정을 했다. 또 안밖열은 키캡폭을 조정했는데 사용자가 보기에 일관되지 않아 바람직하지 않다. 이번에는 계산대로 만들어 보자.

▶문자 각도 : 제자리 타이핑만 고려하여 너무 과하게 준 면이 있어 키 하나씩 수직으로 누를 때는 어색하다. 각도를 내리기는 하되 키캡 각도를 없애고 홀 각도는 현재값을 유지하여 수직 방향으로 누르도록 한다. 20호 기준 110, 020도이고 안밖열은 수평 7도이다. 엄지키도 좌우 10도에 맞추고 키캡은 평평하게 만든다. 20호의 플레이트 구조를 그대로 쓰되 차후 실사용해 보고 더 조정하기로 한다.

▶키캡 : 윗면 면적 15*13으로 폭을 1미리 줄인다. 조금 좁은 감이 있지만 손가락 닿는 면적으로는 충분하다. 키간 간격은 수평 1.5, 수직 2에 맞춘다. 각도는 필요없고 모두 평평하게 같은 모양으로 만들면 된다. 각인은 현 상태 유지한다. 두께가 얇아 신발 들어가는 입구가 파여 보이며 좀 쓰다 보면 파손되기도 한다.

1미리 더 두껍게 만들거나 모서리 경사를 조정하여 위에서 봤을 때 네모지게 보이도록 한다. 두께가 얇지는 않으니 입구쪽 경사를 조정하기로 한다. 평평한 키캡을 뽑아 봐야 알 수 있겠지만 기존 키캡으로도 대충 효과를 볼 수는 있다. 각도 없는 키캡만 꽂아 봤다.

간격은 역시 좀 빡빡해 보이고 삐뚤삐뚤해서 일정하지도 않다. 행간 각도는 이게 10, 20도가 과연 맞나 싶을 정도로 평평해 보인다. 숫자키를 단독으로 눌러도 그리 어색하지는 않다. 위에서 봐서 각도가 잘 안느껴지는 거 같은데 옆에서 보면 확실히 휘어져 있다. 암만 그래도 각도가 덜한거 같아 정면에서 사진찍어 파워포인트로 확인해 보니 19호는 7도였던 모양이다. 20호는 10도로 조정했었다.

쿼티의 스텝스컬쳐보다는 각도가 더 들어갔다. 결국 정확한 측정을 위해서는 플레이트와 테스트 키캡을 뽑아 봐야만 알 수 있다. 일단 키캡부터 만들어 보자. 높이를 15로 줄이고 모두 1미리씩 짧게 만든다. 후면 홈은 0.5미리 내려 1.5미리 띄우면 신발과 중앙이 맞게 된다.

 

두께는 더 키우지 않고 아래위 삼각형은 2*2크기로 경사를 만들고 좌우 삼각형은 2*1크기로 경사를 만들어 신발홈을 침범하지 않도록 했다. 캡션은 여전히 6*4이며 표면에서 1미리 안으로 들어간다. 두 프린터에 각 12개씩 찍어 보자. 우수로 뽑을 필요 없이 표준 3겹으로 뽑았다. 인필은 50%로 주되 빈 부분이 없어 의미 없다.

12개에 한시간 약간 더 걸리는데 두 대를 돌리니 1시간 반만에 24개가 뚝딱 나온다. 20호 키캡에 비해 푹 1미리 더 짧아졌고 신발홀도 0.5미리 더 짧다. 우수로 뽑으나 표준으로 뽑으나 품질차는 거의 없으니 앞으로 그냥 표준으로 뽑자. 날곰으로 뽑은 것도 품질이 결코 떨어지지 않는다. 다만, 홀이 조금 좁게 나오는 특성이 있다.

프린터에 따라 품질차는 심하지 않으니 그냥 아무거나 뽑자. 필라멘트에 따른 차이는 있는 듯 하니 상태 좋은걸로 뽑아야겠다. 24개 뽑은걸 문자 영역에 꽂아 보았다. 신발은 전에 쓰던거 아까워 뽑아서 썼는데 인건비가 좀 낭비되기는 한다.

수평 간격은 0.5미리 더 줄고 수직은 약간 늘어날 예정이다. 안밖열이 붙어 있는데 이것도 똑같은 간격으로 띄운다. 엄지3키와 조합키만 빼고 다 이걸로 뽑으면 된다. 19, 20호 키캡을 색깔별로 뽑아 놨는데 크기가 바뀌었으니 죄다 버려야할 판이다. 다음부터는 필요할 때 만들고 미리 만들어 두지 말자.

폭이 바뀌고 각도를 없애는 바람에 모든 키캡을 새로 만들어야 한다. 20호 키캡중에 Shift, Space 딱 두개만 그대로 쓴다. 다행히 신발은 뽑아 놓은 것을 사용할 수 있다.

▶새끼 손가락 내림 : 지금까지 줄곧 4미리 내리다가 20호에서 택도 아닌 오판으로 6미리를 시도했다가 4미리로 살짝 올린 키캡을 만들어 사용해 왔다. 최대 내림이 4미리인 셈인데 이번에는 조금 줄여볼까 한다. 팔을 몸에 붙이고 손을 키보드에 얹으면 새끼 손가락이 약지보다 과히 아래로 내려가지 않는다.

오랫동안 쿼티의 일자 배열에 익숙해서 그럴 수도 있지만 손목이 안쪽으로 약간 회전하면 새끼가 위로 올라온다. 좁은 피치에 4미리를 내렸더니 왼쪽의 GR 자리에서 새끼가 중간쯤에 걸쳐 오타가 많이 발생한다. 3미리로 소폭 줄여볼까 하다가 이번에는 2미리까지 줄여 보기로 했다. 결국 2, 3, 4 셋중 하나를 선택해야 한다. -> 2미리는 G가 멀고 1은 너무 멀어 3미리로 다시 조정했다.

▶자판 각도 : 오래 테스트해 본 결과 8도가 딱 맞긴 하다. 그러나 한판으로 찍은 20호는좌우 거리가 좁아 손목이 약간 불편해졌다. 9도까지 시도해 본 적은 있는데 이번에는 10도까지 늘려 보기로 한다. 그 이상은 좀 무리고 좌우 거리가 늘어나면 8도가 적당하다.

수평 각도는 20호가 3도인데 조금 작은 듯 하다. 5도까지 가면 키보드가 불룩해져 부피감이 있지만 손목은 확실히 더 편안하다. 10호가 5, 15호가 6도였는데 감은 좋았다. 이번에는 4도를 시도해 보기로 한다. 수평 각도는 편안함과 슬림함의 절충이며 2~6도 사이가 적당하다.

수직 각도는 2도로 하고 하판 각도 5도를 더해 7, 쿠션까지 붙이면 대략 8도가 된다. 이건 20호랑 똑같이 가기로 한다. 수평 각도 없애 버리고 하판으로 조절할까(15호가 이 방삭이다)도 생각해 봤는데 펑션키 위쪽이 다 하판을 뚫고 나와야 하는 불편이 있어 2도 각도는 계속 유지한다.

ESC 위치가 제일 바깥이 아니라 초기에 헷갈리는 면이 있다. 최대한 높게, 넓게 만들어 확실히 구분되게 하자. 키캡은 18*15로 하고 수직 피치는 16이다. 펑션키는 간격을 좀 줄이더라도 Esc보다는 더 아래에 배치한다. Ctrl, Alt는 크기는 키우되 자리를 많이 차지하니 이번에는 수직으로 길게 하여 아래로 살짝 내린다. 키캡이 18*15였는데 회전시켜 15*18로 하자. 수직 피치는 19이다. -> Esc, Ctrl 폭을 2미리씩 더 늘림

▶스위치는 아무거나 사용해도 되지만 21호는 주로 집에서 쓸 것이므로 청축 스위치를 사용하기로 한다. 높이가 약간 높은 19호 테스트 버전에 끼워져 있는 스위치를 빼서 사용하고 19호 테스트는 파기하기로 한다. 플레이트는 흰색이고 키캡은 알록달록이다.

 

이상의 제작 과정은 20호와 함께 정리해 두었다. 날곰으로 찍되 인필 20%, 서포트 밀도 15%에 브림, 인터페이스, 지지대 벽은 제거한다. 임시 기둥 세우고 7.19시간 걸린다. 인쇄 걸어 놓고 한잠 자고 일어났더니 다 뽑아 놨다.

 

윗면 계단이 눈에 거슬릴만큼 과해 보이지는 않아 괜찮다. 서포터도 뜯어낼만해서 10분 정도면 말끔하게 제거된다. 20호 위에 21호 플레이트를 얹어 봤다.

문자 영역 높이가 꽤 많이 늘어났다. 사진상으로는 키하나만큼 늘어난 걸로 보이지만 상단 키캡과 하단 키홀을 비교해서 그런거고 키캡 기준으로 실측해 보면 5미리 더 높아졌다. 자판 각도 2도 더 늘어난거 맞고 나머지는 위치상의 변화만 조금 있을 뿐 비슷하다. 조합키 키캡까지 뽑아 끼워 봤다.

문자간의 간격이 거의 일정해 딱 보기 좋다. 가로피치 16.5는 큰 무리없이 편안해서 시도해 볼만하다. 이론상 문자행폭이 2.5미리 줄어야 하지만 실제로는 거의 변화가 없는데 왜냐하면 안밖열을 경사만큼 밖으로 이동했기 때문이다. 그 길이가 딱 2.5미리 정도 된다. 결국 피치는 줄였지만 폭은 같고 끝키캡을 1미리 줄이지 않고 일관되게 만드는 효과가 생겼다.

첫 테스트 플레이트치고는 꽤 잘 나와 만족스럽다. 그러나 역시 세세한 조종이 많이 필요하다. 이거 조정할려고 10시간이나 걸려 테스트 플레이트를 뽑아 보는거니 섬세하게 조정하자.

 

- Alt 2미리 안쪽으로, Ctrl 3미리 안쪽으로 옮기고 키캡 17*18로 폭 2미리 늘림. Alt와 왼쪽변 맞추고 2미리 더 안쪽까지 키캡을 확장하는 것이다.

- Esc1미리 안쪽으로 키홀 옮기고 키캡 20*152미리 늘려 Caps와 왼쪽변을 맞춘다. 남는 안쪽 공간 최대한 활용하자는 의도다. 위쪽 넓은쪽에서 아래로 키캡이 점점 좁아지는데 이건 오른쪽의 PgUp과 일당들도 마찬가지이다.

- Fn, Num도 키홀 1미리 더 안쪽으로 이동하여 폭을 조금 더 줄인다. 빈도가 높지 않으니 키캡은 문자용을 같이 쓴다.

- 숫자 왼쪽 위의 지지대가 잘려 보기 좋지 않다. 플레이트 안쪽으로 집어 넣는다. 위 양쪽의 둘출부도 안으로 집어 넣는다.

- 엄지의 Shift가 왼쪽으로 약간 쏠려 보이는데 이건 Han의 신발이 완전히 안들어가서 그렇다. 실측해 보면 0.2미리 정도 왼쪽인데 오차가 심하지 않으니 그냥 두기로 한다. 19호 이후 엄지, 편집키 영역은 수정하지 않았다.

- 문자간의 수직 간격은 2미리인데 숫자행은 2.5미리로 더 넓다. 10도 회전에 피치 15로 계산한 값을 20에 적용했고 틴커캐드가 중앙 기준으로 회전해서 그렇다. 0.5미리 내리면 대충 맞는데 숫자행이니 그냥 1미리를 내려 좀 더 가깝게 두기로 한다. 그래도 간격이 1.5미리나 되어 답답해 보이지는 않을 듯 하다.

- 새끼열 2미리 내림은 부족하다. R은 그럭저럭 딱 맞고 그 아래의 B도 누르기 쉽지만 위쪽 G는 쭉 뻗어야 겨우 닿고 더 위의 1은 자세가 틀어질 정도다. 아무래도 4가 맞는 듯 하지만 이번에는 3을 시도해 보기로 한다. 바꿔가며 만들어 봐야 최적값을 알 수 있어 안써본 값을 골고루 써 보는 중이다.

 

이 수정 사항으로 왼쪽만 한번 더 뽑을까 하다가 그냥 전체를 다 뽑기로 한다. 양쪽과 펑션까지 다 뽑아봐야 추가적인 문제점까지 파악할 수 있다. 거의 처음부터 다시 작업하는 식이라 새벽시간에 바짝 4시간 정도 걸렸다. 일부 기존 모델을 디자인하다 보니 수치가 139.87 등으로 딱 맞아 떨어지지 않는 경우가 있는데 중요하지 않으므로 무시했다.

플레이트 15.40시간인데 아래층 소음 때문에 속도를 50으로 줄여서 그런거고 디폴트대로 뽑으면 13.30이다. 조용해지는 대가로 16%의 시간을 더 쓰는 셈이다. 하판 11.45시간이니 두 개 합쳐 꼬박 하루가 더 걸린다. 상판 먼저 걸어 놓고 키캡이나 하나씩 만들어 두기로 한다.

21호 첫 상판이 나왔다. 딱 보기에는 큰 문제 없어 보이고 출력도 양호하다. 의도한 바대로 다 나온 것이고 프린터도 별 말썽을 부리지 않아 무난했다. 그러나 스위치 끼워 보고 눌러 보면 여러 가지 문제점과 새로운 아이디어가 떠 오른다. 하나씩 점검해 보고 수정 및 개선한다.

 

- 2번키가 잘 안들어간다. 왼쪽팔이 옆 키캡의 홀에 살짝 걸쳐 삐뚤하게 꽂히며 그 아래키도 정도는 덜하지만 마찬가지이다. 칼로 플레이트나 키캡팔을 약간 잘라내면 되겠지만 지금 필요한건 그게 아니라 한방에 잘 나와 후처리를 최소화하는 것이다. 2키위에 틈도 약간 벌어졌는데 지지대를 너무 짧게 만들어서 그러니 큰 문제는 아니다.

 

이 문제가 생기는 원인은 수학적으로 복잡하다. 20호와 21호의 피치, 키플레이트 크기를 비교해 보자.

 

20: 피치 17*15.5. 플레이트 18*17

21: 피치 16.5*16.77 플레이트 18*18

 

수직 피치가 늘어 회전시 V자형 계곡이 생기는 걸 방지하기 위해 높이를 1미리 더 키웠으며 이 작전은 별 말썽이 없다. 같은 열은 둥그렇게 배치되므로 겹쳐도 팔을 걸칠 영역은 충분히 나온다. 키홀을 침범하지도 않아 스위치 끼우는데도 문제가 없다.

그러나 수평은 다르다. 피치가 줄었는데 플레이트 폭은 그대로이다. 18크기를 17 간격으로 배열하면 1미리씩 겹치는데 비해 16.5 간격이면 1.5미리씩 겹친다. 게다가 수직 위치에 차이가 있어 높은쪽이 낮은쪽 플레이트 1.5를 먹으며 이러면 낮은쪽은 팔을 걸칠 공간이 0.45밖에 안 남는다. 게다가 필라 퍼짐까지 고려하면 공간은 더 부족하다. 2키가 딱 이 케이스로 옆의 1키의 플레이트가 1.5 침범하니 0.4 정도의 공간밖에 없고 스위치 팔이 옆 플레이트에 올라타는 것이다.

수평은 피치가 줄었으니 플레이트 폭을 줄여야 한다. 17로 줄이면 0.5만큼만 겹치며 1미리가 남아 팔을 걸치기 충분하다. 그러나 안밖열은 7도 기울이기 위해 피치가 1.23만큼 더 먼데 이러면 V자 계곡이 발생할 수 있다. 이 부분까지 고려하면 플레이트 크기를 17.5 * 18로 해야 한다. 이러면 1미리씩 겹쳐도 0.7이 남아 팔을 걸치기 충분하다. 안밖열은 피치가 17.73으로 약간 더 먼데 이 열은 플레이트를 18*18로 따로 만들어야 할듯하다. 각도가 들어가니 정말 복잡해진다.

-> 막상 해 보니 이렇게 복잡할 필요없고 17*18로 만들어 배열한 후 양끝의 플레이트를 안쪽으로 18로 확장하면 간단하다. 많이 겹치지 않고 V자 계곡도 생기지 않는다.

- 키캡도 수정 사항이 많다. 우선 E, T 키에 촉각 돌기를 빼 먹었다. 이거 초보자에게는 꼭 필요한거고 안보고 치기 위해 필수적인 장치라 반드시 넣어야 한다. 이미 출력 걸었는데 두 키만 수정해서 따로 뽑기로 한다. 다음은 주요 키캡을 끼운 모습이다. 테스트 키캡 만들어 놨더니 아주 잘 써 먹는다.

Esc는 넓이가 충분하지만 $키의 높은 고도에 가려 접근성이 떨어진다. 중요한 키이니 높이를 2미리 더 키워 두껍게 만들자. 스위치를 2미리 높여도 되지만 당장 실천하기는 어렵다. $키에 살짝 가려져 있어 면적을 키울 필요까지는 없어 보인다. Esc가 좌상단이 아니라는 약점을 만회할 수 있는 작전이다. 그럼 반대쪽의 PgUp도 대칭을 위해 높이를 키워야 하는가가 애매한데 %키에 가려진건 똑같으니 그렇게 하자.

Ctrl키도 면적이 넓직해서 좋은데 +키와 거리가 멀다. 새끼 손가락을 뻗어 눌러야 하므로 최대한 인접하고 넓어야 한다. 홀은 1미리 안쪽으로 밀어 넣고 폭은 2미리 더 늘리자. 위치가 좋고 +키보다 낮지는 않으니 두께는 그대로 유지한다. 바로 수정해서 장착했다.

2미리 더 높아 존재감이 부각된다. Ctrl도 많이 넓어졌는데 키홀을 1미리 더 밀거라 새끼 손가락에 더 가까워진다. 애초의 설계보다 폭을 4미리나 더 키웠다. Ctrl 오른쪽을 경사지게 깍아 손가락 빠질 틈이 없도록 해 볼까 싶기도 한데 너무 요란스러울 거 같아 여기까지만 하기로 한다.

- 엠블렘이 같은 색이라 잘 안보이는데 펑션열 위쪽 면적을 다 쓰도록 더 크게 만들고 돌출부도 1미리에서 1.5미리로 늘린다. 바닥에 층이 지지 않도록 사각형을 먼저 깔고 글자를 올리는게 좋겠다.

- 0행 피치가 1.5라 문자의 2보다 작아 눈으로 봐도 좁아 보인다. 어색하지만 숫자행은 멀리 뻗어야 하니 0.5미리 가까운 이유가 있어 이대로 유지한다. 일반인을 위해 넓게 간격을 띄웠지만 나중에는 01미리, 나머지 1.5 정도로 줄여도 될 거 같다. 그러면 문자영역 높이가 1.5미리 더 줄어든다.

- 펑션의 수평 피치는 16.5로 맞지만 수직 피치가 16이라 문자보다 1미리 더 띄워져 있다. 일관성이 없고 키간 수직 간격이 3미리나 되어 벙벙해 보인다. 문자는 각도에 의해 15까지 좁혔지만 평평한 키는 15로 줄이면 가로 보가 1미리밖에 안되어 너무 약하다. 15미리로 줄이는 건 안되고 15.5로 줄여 2.5 간격으로 맞춘다. 편집과 가운데 Fn, Num 조합키 수직 피치도 마찬가지로 15.5로 조정한다.

- 문자의 수평 피치가 16.5인데 편집키는 여전히 17이라 일관성이 없다. 0.5 감소하여 16.5에 맞추기로 한다. 펑션과 마찬가지로 가로 16.5 세로 15.5이다.

- 엄지키쪽도 결국 손보기로 한다. 테스트 키캡에 신발이 다 안들어가 벌어져 보이는 것 같아 새로 뽑아 끼워 봤는데 역시 벌어져 있으며 중앙이 맞지 않다. Han키를 왼쪽으로 0.2미리, 위로 0.1미리 정도 공백에 붙이면 된다. 문자키와도 꽤 떨어져 있는데 1미리 더 위로 올린다. 키 플레이트끼리 겹쳐 버리면 된다.

엄지키캡만 6미리로 두꺼워 높이를 조금 낮춰볼까 생각해 봤다. 현재 ShiftT5미리, Copy와는 6미리 차이이다. 엄지 키캡을 2미리 낮추고 문자 영역과 엄지 아래는 1미리씩 내리면 키보드가 전체적으로 낮아지는 이점이 있다. 다만 2행 끝의 R+는 스위치가 바닥에 닿아 이 부분의 하판도 구멍을 뚫어 주어야 한다. 그 아래의 B*10도 각도 때문에 오히려 괜찮다.

편집키는 이미 거의 바닥에 닿아 있어 더 내릴 여유가 없지만 어차피 손바닥 안쪽에 닿지는 않으니 현상태를 유지해도 상관 없다. ShiftCopy 사이가 1미리 더 가까워지지만 수직 각도가 있고 팜레스트를 쓰면 엄지에 걸리지는 않을 듯 하다. 문자에 비해 CtrlFn이 상대적으로 1미리 더 솟아 올라 접근성도 개선될 듯 하나 손가락 이동시 걸리적거릴 수도 있다. 만약 그렇다면 차후 양쪽의 Ctrl, AltFn, Num1미리씩 같이 내리기로 한다. 이 작전이 과연 어떤 효과가 있을지 2미리 낮춘 4미리 두께의 엄지키캡을 뽑아 봤다.

엄지키가 날렵해 보여 디자인은 괜찮은데 낮기는 확실히 낮다. 아래키가 그냥은 엄지에 걸리지만 수직각도 주고 팜레스트 걸치면 안걸린다. 여기서 엄지 아래를 1미리 더 낮추면 괜찮을 거 같다. 키플레이트는 4미리에서 3미리로 줄인다. 문자와 엄지의 차가 3미리로 줄었는데 사실 굴곡을 주기 전 15호에서도 2미리차였다. 여기서 1미리 더 낮추어 4미리차면 해 볼만 하다.

문자는 고작 1미리 내리는 거지만 엄지키가 2미리 낮아져 전제적인 볼륨감이 가벼워지는 효과가 있다. 서포트가 1미리나 더 얇아지니 출력 시간도 개선된다. 하판에 구멍까지 새로 뚫어야 해서 대공사이며 좀 망설여지기는 하는데 일단 시도는 해 보기로 한다.

-여기까지 점검하는 사이에 하판 출력이 완료되었다. 미끈하게 잘 나왔다. 나사 다 체결해 봤는데 정확하게 구멍 맞고 잘 끼워진다. 나사 구멍이 상단에만 몰려 있어 아래쪽이 들뜰 위험이 있는데 양쪽 편집키 옆에 나사 하나씩 더 두기로 하자. 체결후 수평이 약간 안 맞는데 이건 하판만 가지고는 안되고 결국 패드를 붙여야 한다.

가장 우려했던 부분이 좌하단 F11키가 바닥에 닿지 않을까하는 것이었는데 실측해 보니 아슬아슬하게 닿지 않는다. 수치로는 대략 0.2미리 정도 남는 듯하다. 하판을 1미리 들어 올렸는데 그 이하로 얇게 해서는 안될 듯 하다. 편집키는 3미리 정도 여유가 있어 필요하면 1미리 더 내려도 될 거 같다. 그 옆의 Copy와 보조를 맞추기 위해 1미리만 더 내리자.

펑션키가 닿지는 않지만 너무 아래쪽에 있는 듯 하다. 비록 조금이지만 피치를 줄이는 방향을 위로 하여 1.5미리라도 위쪽으로 이동시키도록 하자. 엠블렘 위쪽으로도 약간 여유가 있어 2미리 더 위로 올러도 될 거 같다.

하판이 무난하게 잘 나왔지만 문자를 1미리 더 내리기로 했기 때문에 아래 모서리의 4키에 대해서는 하판에도 구멍을 뚫어 두어야 한다. 결국 이번에 뽑은 하판도 테스트일 뿐 그냥은 못 쓰게 된 셈이다.

 

2차 출력분에 대한 모든 점검이 완료되었다. 수정하기로 한 사항을 모두 적용하여 3차분을 처음부터 새로 만든다. 대략 2시간은 더 걸릴 듯 한데 이거 완성해서 걸어 놓고 자야겠다. 라고 했는데 잠시만 누웠다 6시간을 자 버렸다. 이런건 흐리멍텅할 때 작업하면 안되니 일어난 직후에 하는게 좋다.

대략 3시간 정도 작업해서 왼쪽과 펑션만 만들었다. 제작만 하는게 아니라 작업 과정을 문서로 정리하다 보니 시간이 오래 걸린다. 또 처음 생각했던 것과는 다른 부분이 있어 추가로 더 작업할 일도 있고 오판한 부분을 디자인하면서 알게 되는 경우도 있다.

 

오른쪽은 반사시켜 배치만 하면 되지만 출력 시간이 오래 걸리니 반쪽만 뽑았다. 서포트 10%로 줄였더니 딱 8시간 걸린다. 이번 테스트가 마지막이 아닐 수도 있어 본품 뽑을 때까지는 시간이 더 걸릴거 같다. 본품은 마블로 뽑을 예정이다.

긴 기다림끝에 3차 테스트를 뽑았다. 밤새 키캡 뽑고 일지 정리하고 티슈 서포트 모델링하면서 기다렸는 시간은 또 그럭 저럭 잘 간다. 펑션까지 깔끔하게 잘 나왔다.

대부분의 문제는 모두 해결되었다. 2번키가 걸리지 않고 뒷면도 깔끔하게 잘 막았고 문자키와 엄지 아래키, 펑션키 1미리씩 내렸다. 펑션과 편집의 키피치 조정했고 가로보가 얇아 보이긴 해도 허약하지는 않다. 펑션열이 중앙으로 모였고 엠블렘도 훨씬 더 선명하고 보기 좋다. Ctrl 1미리 들여 넓직하게 배치했다.

엄지 아래키는 엄지와 1미리 가까워졌지만 그냥 쳐도 닿지는 않으니 각도 주면 문제 없을 거 같다. 문자키가 1미리 내려가는 바람에 Ctrl 쪽으로 이동할 때 새끼가 살짝 걸리는 감이 드는게 조금 아쉽다. 그래도 20호보다는 Ctrl1미리 더 낮아진 것이다. 엄지와 문자의 높이차는 아직은 모르겠고 더 써 봐야 알겠는데 이전과 큰 차이는 없는 듯하다.

엄지를 문자와 1미리 더 가깝게 밀착시켰지만 그래도 약간 벙벙해 보이기는 한다. 더 줄일 필요는 없을 거 같고 이 상태 유지하면 되겠다. 파란색 실크가 8호를 만들 때는 좋아 보였는데 각인 시인성이 많이 떨어진다. 빨간 실크로 조합키 뽑을려고 했는데 취소하고 Esc나 빨갛게 뽑아야겠다.

전반적으로 성공적인 테스트였다. 서포트 밀도를 10%로 조정한건 어떤가 싶어 뜯어 봤더니 주루룩 잘 뜯긴다. 뒷면 표면도 큰 차이는 없어 앞으로는 그냥 10%로 뽑아야겠다. 서포트를 뜯어 내는 과정에서 엄청난 에러를 발견했다. 엄지쪽을 주루룩 뜯는데 엄지 아래키가 같이 뜯겨 버렸다.

1미리 내리면서 본 플레이트와 떨어져 버린 거 같다. 뭔가 변화가 생겼으면 합당한 후속 조치를 해야 하는데 그렇지 못했던 것이다. 이 부분은 가려져 있어 잘 보이지도 않는다. 모델 확인해 보니 과연 그렇다. 높이 3인데 -3.95까지 내려가 있으니 본 플레이트와는 떨어져 있는 것이다.

위쪽의 구멍이 있어 스위치 들어갈 공간은 확보되어 있어 아래쪽 플레이트의 높이를 4로 늘리기만 하면 된다. 원인을 명백히 알고 있지만 확실히 수정하기 위해 모델 풀어 헤쳐서 맞는지 검증했다. 원본과 중간본은 회전이 들어가 있지 않아 수정이 쉬운데 최종본은 오만 그룹핑에 회전, 각도까지 적용되어 있어 수정이 만만치 않다. 그룹 풀어 헤치고 플레이트 위에 작업 평면 얹고 높이를 조정해야 회전 상태에서도 정확하게 조정된다. 재그룹핑을 위해 후순위 그룹핑할건 일일이 숨겨야 하는게 골치 아프다.

다행히 방금전 작업한거라 그룹핑 순서를 다 꿰고 있어 어렵지 않게 수정했다. 이거 발견하지 못하고 찍었으면 하루를 또 날릴 뻔 했는데 지금이라도 찾은건 다행이다. 서포트 안 뜯어 봤으면 비싼 마블 필라와 반나절을 고스란히 날릴 뻔 했다. 지금 하판 찍고 있는데 다 찍기 전에 엄지 아래키 버르장머리를 고쳐서 다시 슬라이싱해 놔야겠다.

출력 걸어 놓고 장장 15시간을 기다렸다. 좀 자다 가 보니 우하단이 약간 떴는데 필라 교체하느라 챔버를 살짝 열어서 그런듯 하다. 고민하다 키홀까지는 뜨지 않을거 같아 그냥 진행하기로 했다. 19, 20호 키캡 정리했다.

키캡은 완성되었다고 보고 색깔별로 뽑아 놓은건데 21호부터는 각도가 사라졌고 폭이 1미리 짧아져 이대로는 쓸 수 없다. 다음에 혹시 쓸 일이 있을까 보관은 하겠지만 결국은 버릴 것이다. 신발은 잘 빠지는 것만 최대한 회수했는데 이 또한 노동력 낭비이다. 언제 완성일지 알 수 없으니 다음부터는 너무 많이 뽑아 놓지 말자.

리소페인 모델 수정해서 다시 뽑아 보고 집안일 좀 하고 밥먹고 또자고 기다린 끝에 무사히 출력 완료되었다.

대리석 느낌이 나기는 하는데 딱히 엄청 특별해 보이지는 않는다. 엄지 아래키도 튼튼하게 잘 붙었고 딱히 큰 사고는 없는 듯 하다.

우하단이 살짝 떴지만 키홀은 제대로 나왔다. 서포트는 10%인데 이 정도만 해도 지지는 충분히 잘 된다. 뜯어 내는데 딱 9분 걸렸으니 떼기도 쉽다.

뒷면이 아주 깔끔하지는 않지만 납땜에 문제없고 어차피 보이는 부분이 아니라서 무너지지만 않았으면 별 상관없다.

스위치는 청축으로 결합했다. 레드드래곤은 키압이 가볍고 클릭 소리가 약간 둔탁해 소음이 덜하다. 게이트론은 키압이 살짝 높고 클릭 소리가 명쾌하지만 조금 시끄럽다. 문자 영역에는 소음이 덜한 레드드레곤을 쓰고 나머지는 게이트론을 박았다.

뒷면에 낮은키를 위해 뚫어 놓은 구멍의 위치가 딱 맞다. 편집 우하단은 간신히 하판안에 들어가 있어 더 낮출 수는 없다. 아래 양쪽 나사가 좀 튀어 나오는데 머리 구멍을 뚫어야 할거 같다. 모델 수정해 놔야겠다.

키캡까지 다 끼웠다. 파란 실크는 시인성이 떨어져 다른 걸로 바꾸는게 좋을 거 같은데 매트노랑이 딱 어울린다. 조합키와 펑션도 색상이 중복이라 다른 색으로 바꿀 예정이다. sc만 실크 빨강으로 뽑았는데 하나만 뽑을거라 우수 품질로 뽑으니 더 선명한거 같다. 시간이 오래 걸리니 그냥 표준으로 뽑자.

28: 다 뽑아 놓고 보니 Esc가 너무 위에 있다는 느낌이 든다. F1과의 확실한 구분을 위해 위에 둔건데 그렇게 쳐도 너무 위쪽이고 키보드가 높아지는 부작용이 있다. 6미리 정도는 내려야 시각적 균형이 맞을 듯한데 그 아래쪽의 키까지도 연쇄적으로 조정해야 하니 단순한 일은 아니다. 실사용 테스트를 해야 하니 이번에는 이대로 가고 22호에서 수정하기로 한다.

다음은 와이어링을 수정한다. 펑션키가 왼쪽으로 이동함에 따라 20호 납땜시 모든 선이 왼쪽으로 길게 가야하는 불편함이 있었다. 또 차후 펑션키 영역을 착탈식으로 바꿀 계획도 있는데 선 13개가 가는것보다는 8개만 가는게 더 간단하다. 키 개수에는 변화가 없으니 배치만 잘 조정하면 된다.

틴지칩은 핀 21개를 쓸 수 있고 현재 714열이다. 핀 수를 늘리려면 칩을 바꾸거나 틴지칩을 더 연구해야 하는데 전에 찾아본 기억으로는 아마 어려울 듯 하다. 펑션을 2열로 만들어 왼쪽에 붙이고 조합키는 아래쪽에 나열하여 똑같이 147행으로 재배치한다. 펑션 1행을 2열로 만드는 대신 조합키 2열을 해체하여 아래쪽에 1행을 만드는 것이다.

 

수정된 배치는 다음과 같다. 레이아웃 에디터가 눈으로 보며 배열을 편집할 수 있어 이럴 때 꽤 편리하다.

 

["F1","F2","`","1","2","3","4","5","6","7","8","9","0","\\"],

["F3","F4","Tab","Q","W","E","R","T","Y","U","I","O","P","-"],

["F5","F6","[","A","S","D","F","G","H","J","K","L",";","'"],

["F7","F8","]","Z","X","C","V","B","N","M",",",".","=","/"],

["F9","F10","Pause","Prtsc","SLCK","F17","Shift","RAlt","BS","Space","Enter","Home","up","End"],

["F11","F12","App","Ins","NLCK","F18","F19","F13","F14","F20","F21","left","down","right"],

[{x:2},"Esc","Caps Lock","Ctrl","Alt",{x:1},"F16","Win",{x:1},"Del","F15","PgDn","PgUp"]

 

EscCaps는 위쪽에 있어 F1, F2 위에 두어도 된다. 그러나 이렇게 되면 펑션이 7행이 되어 건너가야할 선이 8개가 아닌 9개가 되어 불리하다. 또 좌우가 달라 일관성도 없으며 납땜할 때 헷갈린다. 조합키 4개는 바닥에 깔고 중앙키 2개는 엄지 아래에 놓는게 균형이 딱 맞다. 아래쪽 와이어링은 아무래도 좀 복잡해진다.

왼쪽에 2열이 생김으로써 틴지칩이 있는 중앙 위치가 바뀌었다. C7, C8이 원래 오른쪽에 있었는데 이제 왼쪽이 됨으로써 이전 핀 구조로는 두 가닥의 선이 틴지 위를 지나가야 한다. 이 두선을 왼쪽으로 옮기고 R2, R3를 오른쪽으로 옮긴다. 라고 생각해서 핀 구조 다 바꾸고 펌웨어까지 넣었는데 막상 연결할려고 보니 조합키열이 없어져 C7열만 왼쪽으로 옮기면 된다. 그래서 다시 작업했는데 틴지 작업이 간단해 금방했다.

 

키맵은 디폴트대로 받아들이면 된다. 핀 구조가 바뀌니 펌웨어는 당연히 바꿔야 하지만 다행히 키맵이 같애 소젯은 20호와 호환된다.

레이아웃 이름은 sj21로 주고 펌웨어를 다운로드받는다. 새 틴지칩 하나 뜯어 다운로드했다. R0C8 붙이니 6이 입력되고 R0C7 붙이니 5가 입력된다. 틴지 재고는 아직 14개 남아 있다. 칩 준비되었고 이제 즐거운 납땜 시간이다.

(여기서부터 21호로 타이핑)새벽 4시에 일어나 납땜을 시작했다. 다이오드는 말아 놓은게 있어 수평으로 바로 배치하고 땜했다. 배치가 바뀌니 연결 관계가 은근히 헷갈리고 군데 군데 점프선이 필요하다. 좌우를 연결해야 하고 펑션키와 문자키 사이의 조합키는 건너뛰어야 한다.

놀며 놀며 했지만 이거 다 하고 나니 8시다. 이번에는 납땜을 좀 연구해 보자 싶어 인두기와 납 등을 골고루 바꿔 가며 써 보고 인두팁도 교체해 가며 써서 그렇다. 틴지칩도 사용하는 핀은 같지만 행렬이 바뀌어 점프선 색상이 달라졌다. 별 어려움은 없었다.

다음은 수직열을 연결할 차례인데 이건 진짜 고난의 연속이었다. 에나멜 구리선을 써 볼려고 유튜브 검색해 보니 에나멜 벗길 때 화공 약품을 쓰거나 아니먼 인두로 지지는데 이건 끝부분만 수월하다. 중간 부분은 라이터로 태우는게 유일한 방법인데 그을음 때문에 접촉이 좋지 않다고 한다. 또한 그을음이 생기면 납이 죽어라 안 먹고 인두에 붙어 버린다.

지져도 보고 태워도 보며 도통 테스트를 해 봤는데 결론적으로 에나멜선은 점프선으로 부적합하다는 결론에 도달했다. 인두 온도 정도로는 에나멜이 잘 녹지 않아 단선이 자주 생기며 미끄러워 납이 스며들지 않는다. 태우고 사포로 문질러야 겨우 납을 좀 먹어 주는 정도다. 어찌나 지졌던지 스위치가 망가져 버렸다.

완성 후 테스트해 보니 제일 왼쪽 펑션열이 통째로 안되는데 스위치가 고장나 버렸다. F8은 납이 안으로 들어가 합선이 생겼다. 땜 후 스위치를 교체해 보기는 이번이 처음이다. 도대체 어찌됐나 스위치를 뜯어 보니 오른쪽처럼 되어 있다. 구리판이 원래 붙어 있어야 하는데 변형에 의해 떨어져 버렸으며 이건 눌러도 반응하지 않는다.

스위치의 플라스틱이 그리 강한 편이 아니라 인두기로 오래 지지면 안되는데 에나멜선이 납을 안 먹으니 어쩔 수 없었다. 중간에 작전 바꿔 빨간색 점프선의 허리를 칼로 벗겨내 고리를 말아 연결했다. 선 탈피가 좀 어려워서 그렇지 이게 납을 잘 먹어 더 쉽고 결과물이 깔끔하게 나온다.

오후 4시쯤 되니 잠이 슬슬 오는데 하다가 중지할 수는 없어 6시까지 결국 해치웠다. 에러난 스위치도 교체하고 입력 테스트를 마쳤다. 주변 정리할 여유도 없이 대충 씻고 잠들었다. 문돌이가 이렇게까지 해야 하나 자괴감 들고 소프트웨어 개발이 더 깔끔하다는 생각이 들었다. 14시간이나 걸렸는데 이것 저것 테스트를 많이 해서 그렇다.

가장 시간이 많이 들고 어려운 작업이 세로열인데 전부터 제일 어려웠다. 이것만 좀 쉽게 하면 생산성이 더 올라갈 거 같아 탈피기로 허리 부분을 벗겨 내는 테스트를 해 봤다. 0.6미리는 잘 벗겨지는데 조금 두껍고 0.3미리는 두께는 적당하나 탈피하다 종종 끊어진다. 연선도 그럭 저럭 쓸만할 듯 하다. 양방향으로 세번씩 밀어올리면 최대 7점까지 한방에 연결할 수 있다. 다음번 제작에는 이 방법을 써 봐야겠다.

다음 작업할 때를 대비해서 선 연결도를 그림으로 정리해 두었다. 핀 수가 부족하다 보니 조합키가 한 행을 구성하는 바람에 은근 복잡하다. 어제 이걸 암산으로 상상해서 했는데 다행히 틀린 부분은 없다.

하판에 충격 흡수패드 붙였다. 이거 안 붙이면 밀때 플라스틱 긁히는 소리가 난다. 그러고 보면 어차피 패드로 조정할 수 있으니 플레이트 자체의 수평은 그다지 중요치 않다. 케이스 나사 구멍에서 문제가 발견되었는데 2.7 구멍에 3미리 나사를 밀어 넣으니 결합력은 좋지만 입구가 뜬다.

나사가 산을 만들면서 안쪽 플라스틱을 입구로 밀어 올려서 그렇다. 덕분에 플레이트와 하판이 0.5미리 정도 살짝 뜨며 나사 박은 후 입구를 칼로 다시 정리해 줘야 한다. 결합력이 그리 중요한게 아니니 다음에는 2.7로 만들지 말고 2.93으로 만들자.

제작 완료 했으니 20호 제작을 위해 찍었던 테스트 플레이트는 즉시 파기했다. 소기의 목적을 달성했으니 더 가지고 있을 필요도 없고 책상위에 굴러 다녀 봐야 걸리적거리기만 한다. 당분간 보관은 하겠지만 다음 호까지 완성되면 다시 볼 일도 드물 것이다.

20호 키캡도 원래대로 원복해 두었다. 새끼열을 6미리 내린 시도는 완전 실패로 증명되었으며 키캡을 2미리 위로 올린걸 임시로 끼워 사용했다. 이제 21호만 주로 쓸거니 20호의 원래 키캡을 끼워 실패를 박제할 필요도 있다. 나중에 다 참고가 된다.

이제 키캡만 색상별로 찍어 꽂으면 된다. 6종류에 ESC만 빨간색이라 일곱색이며 상판, 하판까지 하면 총 9가지 색상이 들어가는 셈이다. 대부분 표준 옵션으로 빨리 뽑되 문자는 우수로도 뽑아 봤다. 아래에 박힌게 표준이고 위에 얹어 놓은게 우수이다.

자세히 보면 품질 차이는 분명히 있다. 표준은 3.55, 우수는 6.11이니 2시간 20분이나 더 걸리는 셈인데 그만큼의 큰 차이는 또 없다. 그냥 표준으로만 뽑자. 각 색깔별로 필라 바꿀 때마다 더 뽑아 한셋트는 더 만들어 놨는데 이것도 다음에 어떻게 바뀔지 모르니 굳이 그럴 필요없다.

엠블렘을 높게 만들어도 잘 보이지 않아 파란색 네임펜으로 색칠을 했더니 잘 보인다. 도색도 좀 배워야겠다. 키캡은 색깔별로 대충 맞췄는데 밝은색 계통이 역시 화사하고 보기 좋다. 최종 완성판의 사진이다.

키캡을 방금 완성했으니 210일 빌드로 기록한다. 홈페이지에 20호와의 차이점 등을 스펙 정리해서 올렸다. 이거 잘 기록해 놓지 않으면 다음에 잘 구분되지 않아 상세하게 적을 필요가 있다. 21호 스펙뿐만 아니라 소젯 프로그램도 1.32, 1.33의 변경사항을 정리했다.

이로써 23년 첫 시제품인 21호 제작을 마친다. 20호에 비해 외부적으로 달라진 부분은 많지 않아도 내부적으로 많이 정비된 버전이다. 과하지 않게 피치와 각도를 조정하여 일반인 접근성을 높였고 소프트웨어를 정돈한게 큰 성과이다. 더 수정할 부분이 많겠지만 다음 작업은 22호로 넘기고 21호는 여기서 마무리한다.

소젯 1.34

년초에 1.33 버전을 대폭 개선하고 정리했지만 아직도 할 일이 더 많다. 22호를 만들기 전에 소프트웨어의 기능과 문제점을 개선하고 배포할 준비를 슬슬 해 둬야 한다. 특히 한글 자판 종류와 웹에서 한영 전환 문제는 시급히 해결해야 일반에 배포 가능하다. 며칠전 이승우에게 PT를 한 적이 있는데 종류3이 아니니 소젯이 아예 동작하지 않았다.

해야지 하면서도 계속 미뤄 왔었는데 이제는 더 미룰 수 없다. UI도 더 다듬어야 한다. 지금까지의 작업을 1.33으로 백업하고 1.34로 판올림했다. ApiEdit를 들어 냈더니 소스와 실행파일 크기가 대폭 줄어들었다. 배치가 같아 꼭 버전을 바꾸지 않아도 되지만 굵직한 변화가 많았으니 일단락 짓고 가기로 한다.

 

▶키보드를 자유롭게 확대축소할 수 있지만 창 크기를 조정할 때 가려지거나 너무 작아 불편하다. 그냥 화면 비율대로 꽉 채우는걸 디폴트로 하고 휠로 조정하거나 클릭하여 100%로 맞추도록 하는게 더 편리하다. OnSize에서 단축에 맞춰 확대 배율을 조정하도록 했는데 여백이나 펑션열에 의한 중앙 이동 등으로 인해 계산대로 하면 화면을 약간 벗어난다. 더 정밀하게 계산할 수도 있겠지만 95%로 조정해서 대충 맞춰 두었다.

Fn 조합으로 마우스를 움직이는 기능은 꽤 쓸만한데 감도가 너무 고정적이라 활용성이 떨어진다. 타이머 주기만 옵션화되어 있는데 다른 파라미터도 옵션으로 만든다. 계속 누르고 있으면 1씩 증가하며 이동하는데 이 증가가 선형적이라 부드럽지 못하다. 한단계 더 증가분을 만들어 증가분도 점점 증가하도록 만들었다.

증가분 초기값, 증가분에 대한 증감분, 최대 이동거리 등을 옵션에 정의하고 이 옵션을 읽어 동작한다. 디폴트는 타이머 30, 증값분은 0.5부터 0.05씩 계속 증가하여 최대 24까지 가는걸로 정의했다. 옵션에 대한 UI는 따로 만들지 않고 INI를 편집하는걸로 했다. 옵션창에 너무 많은 선택 사항이 있는 것도 바람직하지 않아 무난한 디폴트를 제시하고 꼭 필요할 때만 조정하라는 뜻이다.

좌우 클릭은 VQ에 할당해 놨는데 최초 Q가 더 접근성이 좋아 보여 클릭으로 했는데 막상 사용해 보니 V가 더 좋다. 집게를 Fn에 올리면 중지가 자연스럽게 V위에 오므로 이걸 클릭으로 하고 Q를 오른쪽 클릭으로 했다. 차후 더 사용해 보고 무난한 디폴트만 조정하면 될 거 같다.

▶타수를 계산하는 코드가 있었는데 ApiEdit를 제거하면서 사라졌다. 한글 음소를 분해해야 정확한 타수를 계산할 수 있기 때문이다. 그런데 굳이 음소까지 계산해 가며 타수를 측정할 필요는 없고 키 누른 횟수만 점검해도 상대적 평가는 충분히 가능하다. 기존 논리와 유사하게 타수를 시간으로 나누기만 하면 간단히 계산할 수 있다.

타수 측정 시작 지점이 있어야 하므로 Fn+Space에 토글 기능을 할당하고 타수가 0에서 1로 증가하는 시점부터 측정을 시작했다. 문자, 숫자, 공백, 개행까지만 타수를 증가하고 BS는 타수를 1 감소한다. 커서 이동이나 Del키 입력 등은 타수로 계산하지 않아 정확하지 않지만 일반적으로 타수를 셀 때 BS 이외에는 수정을 잘 하지 않으니 이 정도면 충분다.

새로 만든 타수 측정 기능으로 오랜만에 타자 연습을 해 봤다. 한타는 100타 정도 늘었지만 그래도 아직 400타가 안된다. 조금 연습하면 500타까지는 무난히 나올 거 같다. 영타는 100타에 근접하지만 아직도 한참 멀었다. 의도적으로 연습을 하지 않아서 자리가 아직도 헷갈리는데 OA가 특히 헷갈린다. 타수 측정 기능이 꽤 도움이 되며 특히 리셋 기능과 첫타를 칠 때 측정을 시작하는 점이 괜찮다.

▶ 키보드 통계의 각 키마다 INI 파일에 따로 기록하니 지저분하다. 콤마로 구분하여 94개를 한꺼번에 저장하는게 훨씬 간편하고 보기도 좋다. 차후 전체 기록은 유지하고 일부 시간에 대해서만 통계를 따로 내 볼 때도 정보를 다루기 쉽다.

각 키의 누름 빈도 뿐만 아니라 좌우,,손가락 비율도 계산해서 출력하면 실제 통계를 바로 바로 볼 수 있어 편리하다. , 이 통계는 집계 대상이 통계 프로그램과는 약간 달라 숫자도 행 비율에 포함하고 좌우 비율에 엄지도 계산했다.

아주 정확한 통계는 아니며 필요에 따라 집계 방식은 조금씩 조정할 수 있다. 대화상자가 열린 상태에서도 수정된 통계를 적용할 수 있도록 새로고침 버튼을 달았다. 전에는 닫았다 다시 열어야 했다.

▶키 통계와 마찬가지로 시간 통계도 합치기로 한다. 시간마다 하나씩이고 계속 늘어만 가니 INI 파일의 용량을 감당하기 어렵다. 하루 24시간을 콤마로 구분하여 하나로 합치고 yymmdd키로 압축하여 저장한다.

현재 시간만 카운팅하다 시간이 바뀌면 이전 시간 기록하고 새 시간 카운트를 계속하는 것으로 되어 있는데 이 흐름을 유지하면서 특정 시간의 카운트를 읽고 쓰는 함수만 만들면 된다. gsetTimePress 함수 둘을 만들고 tp-yymmdd키에서 콤마로 구분된 24개의 값을 읽어 해당 시간의 값을 읽고 쓰도록 했다.

값을 지속적으로 읽을 때 주변값을 한꺼번에 조사할 수 있지만 매번 get 함수에서 INI 파일을 읽어 문자열을 다시 조작하는 비효율적인 방법을 쓴다. INI는 운영체제가 캐싱하고 대화상자를 열 때만 이 코드를 쓰므로 메인은 영향을 받지 않아 논리의 단순함을 취했다. 대화상자에 새로고침 버튼도 만들어 넣었다. 시간이 바뀔 때 스위칭만 잘 되면 된다. 4시에서 5시로 넘어갈 때 4시 정보 기록하고 5시 카운팅을 시작하는 것까지 확인했으니 별 문제는 없는 듯 하다. INI 파일에는 다음 한줄로 하루의 키누름 회수를 기록한다.

 

tp-230213=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2656,709,0,0,0,0,0,0

 

INI 파일을 직접 열어 봐도 보기 싫지 않고 깔끔하다. 그런데 이런 식으로 통계를 쌓으면 1년에 365개가 되어 적당한 시점에 클렌징할 필요가 있다. 그러고 보니 클렌징보다도 통계 작성 여부를 선택하는 옵션이 없고 무조건이다. 또 기록을 지우는 기능도 없다. 시간별 통계는 일종의 프라이버시이기 때문에 선택과 삭제 기능이 필요하다.

statTimePress 옵션을 추가하고 이 값이 false일 때는 증가 및 종료 직전에 저장하는 코드를 실행하지 않도록 했다. 기록을 중지했더라도 이전의 기록은 남아 있으므로 보여주는 코드는 굳이 막을 필요 없다. 옵션 대화상자에도 UI를 추가하여 사용자가 실행중에 기록 여부를 변경하도록 했다.

리셋 버튼을 추가하고 클릭시 TimeStat 섹션 전체를 날렸다. 날짜별로 열거하기 귀찮아 시통계만 별도의 섹션으로 만들었다. 이 작업을 하며 INI 파일의 섹션도 일체 정리했는데 Board, Editor 등 지금 안쓰는 섹션 통폐합하고 초기 위치도 무난한 값으로 조정했다. 후킹이 디폴트로 off인데 이건 당연히 on으로 바꿔야 한다.

이제 리셋도 할 수 있고 통계가 필요 없으면 정지시킬 수도 있다. 그러나 특정 기간의 정보를 클렌징하는 기능은 굳이 작성하지 않았다. 한달 이전만, 1년 이전만 삭제할 일도 별로 없을 뿐더러 1년치를 모아 봐야 30K 정도이니 그냥 둬도 될 거 같다. 싹 지우든가 아니면 계속 유지하든가 둘 중 하나이다.

21호 사용기

만든지 이틀밖에 안되었지만 벌써 사용기를 쓸 수 있다. 20호랑 배열은 같아 익숙해지는데는 전혀 무리가 없고 편안하다. 22호 제작을 위해 사용기를 지속적으로 정리하고 개선점을 찾기로 한다.

 

▶만들자 마자 든 느낌은 Esc가 너무 위로 솟아 올라 전체적으로 직사각형이 아닌 뿔달린 괴물 모양이라는 점이다. 좌상단이어야 한다는 제약과 F1이랑 헷갈리면 안된다는 조건때문에 펑션키 내리고 Esc는 가급적 올리다 보니 저런 모양이 나왔는데 너무 과해 보이니 다음 버전에서는 6미리 정도 내려야겠다.

그럴려면 Ctrl도 조금 내려야 하는데 저 위치가 사실상 맞다. 새끼 손가락을 밖으로 뻗었을 때 딱 걸리는 위치여야 한다. 그보다 더 아래쪽이면 Caps랑 헷갈릴거 같은데 익숙해지면 괜찮을지도 모르겠다. 퀴티의 Ctrl이 현재의 Alt자리라 약간 내려도 될 듯 하다. 좌우의 Caps Find를 없애 버리고 좌우에 세개씩만 남기는 방안도 있다.

오른쪽은 PgUp, PgDn이 위에 있고 Del이 아래쪽에 있는 식이다. Caps는 없애 버릴 수는 없고 잘 안 쓰는 NL 자리나 현재의 Save 자리로 보내 버려도 된다. 좌우에 필수키만 남는건 좋은데 좌우 대칭이 깨져 한손 자판에 부정적이다. 장기적으로 고민해 봐야할 문제다.

▶청축 스위치 키감 : 두 스위치의 키감이 뚜렷이 구분된다. GTMX는 가볍고 조용하지만 구분감이 덜하다. gateron은 구분감이 분명하지만 시끄럽고 키압이 살짝 높다. 이건 어떤게 더 좋다고 단정할 수 없고 개인적 취향의 문제일 뿐이다. 문자는 가볍고 조용한게 좋고 나머지는 조금 시끄러워도 되니 지금 배치가 합리적이긴 하다.

그러나 두 종류의 스위치를 섞어 쓰는건 한 키보드가 두가지 느낌이어서 바람직하지 않을 수도 있다. 테스트니까 이렇게 만들어 보는거지 제품이면 일관되게 만드는게 무난하다. 청축이 필요하다면 둘 중 아무 스위치나 사용해도 상관 없을 듯 하다. 다만 내구성은 아직 검증이 안되었는데 GTMX가 싸니 약하지 않을까 추측되며 배치가 몰려 있어 납땜할 때 조금 불편한 면이 있다.

20호 적축과 비교해 보면 정갈하기는 20호가 더 낫지만 심심하다. 적축이 오히려 키압이 더 높아 장시간 타이핑에는 더 피로하다. 집에서 혼자 쓰는거라면 당분간 청축이다.

▶납땜 품질의 문제 : 땜하면서 하도 고생을 해서 스위치가 변형된게 있다. +는 깊게 눌러야 인식되며 T=은 중간에 살짝 걸렸다가 깊이 한번 더 눌린다. 그 외의 키는 아직 별 문제가 없는데 GTMX 스위치의 내구성 문제일 수도 있다. 다음 제작시는 납땜을 고온으로 최대한 짧은 시간에 마무리해야겠다.

사용하면서 중간에 알았는데 중간에 걸리는 건 스위치의 변형이 아니라 신발의 품질 문제였다. 원통이 울퉁불퉁해 스위치 아래쪽에서 걸리는 것인데 순차 출력한 키캡으로 바꾸면 해결된다. 아주 부드럽게 잘 눌러진다. 지금 쓰는 신발 조만간 더 폐기하고 순차 출력으로 다시 만들어야 하는 이유이다.

▶케이스 : 상판은 단단해서 느낌이 좋다. 위쪽을 누르면 끄덕하고 넘어가는데 하판 위쪽 지지대를 더 위로 바짝 올려야겠다. 하판 제일 아래 나사 구멍에만 머리를 파 놨는데 좌우 두 개도 바닥에 닿아 파 두어야 한다. 21호는 범퍼로 해결했지만 각도를 낮췄을 때 닿을만한 부분에는 다 나사 구멍을 내 놓도록 하자. 나사 구멍을 2.7로 하면 나사가 들어가며 솟아 오르는 부분이 있으니 2.9로 소폭 늘리자.

상판 중앙의 역V자 꺽임이 일체성이 떨어져 보이는데 이 부분을 평탄하게 깍아 버리는게 어떨지 생각해 보자. 문자키 위쪽의 튀어나온 부분을 다듬은건 딱 보기 좋은데 너무 사각이라 예쁘지 않다. 이 부분 따라 위쪽 상판을 잘라 버려 직사각형을 탈피하는 것도 시도해 봐야겠다.

틴지 케이스도 상판 아래쪽에 기둥과 일체형으로 붙여 버리기로 한다. 하판에 붙이니 조립할 때마다 나사 채우기 힘들다.

▶자판 10도의 느낌 : 팔을 잔뜩 오무려도 그리 불편하지는 않고 벌렸을 때는 8도보다 편안하다. 현재 거리면 계속 10도로 만들어도 되겠는데 좌우 거리가 벌어지면 그때는 8도로 낮게 만들어야겠다.

▶문자 피치와 각도 : 덜 매니악하고 최소한 헷갈리지는 않는다. 미관상으로도 거부감이 덜 든다. 다만 숫자행이 약간 멀기는 하다. 이보다 더 좁게 만들기는 어려울 듯 하다.

▶키 높이에 따른 느낌 : 엄지보다 문자는 3미리 아래, 엄지 아래는 5미리 아래에 있다. 장시간 사용해 봐야겠지만 첫 느낌은 무난하다. 20호를 쳐 보면 엄지가 더 위에 있는 편이 더 감이 좋기는 하다.

22호 기획

22호에서도 21호의 문제점을 개선함과 동시에 새로운 시도를 계속해 볼 것이다. 아직까지도 안해 본 것들이 많고 구현해볼만한 아이디어가 있다. 섣불리 만들지 말고 21호를 충분히 사용해 보고 테스트도 꼼꼼히 뽑아본 후 적용하자.

 

▶배선을 분리해 놨으니 펑션키 영역을 분리하는게 쉬워졌다. 탈착 가능한 케이스를 디자인하고 선 8개만 이으면 된다. 8가닥 선을 연결할 수 있는 커넥터를 구해 수동으로 붙였다 뗐다 할 수 있도록 할 예정이다. 펑션을 분리형으로 하면 메인을 320폭까지 만들 수 있고 좌우를 더 벌릴 수 있다. 또한 펑션을 빼면 좌우 대칭이라 보기도 좋다.

이걸 해 보려면 펑션키없이 Fn+숫자 조합으로 펑션키를 자유롭게 사용할 수 있는지도 점검해 봐야 한다. 가능이야 하겠지만 과연 그게 효율적인지, 얼마나 불편한지도 충분히 숙고해야 한다. 불편을 감수할만큼 견딜만한지 점검해 보되 그렇거나 말거나 일단 분리가 된다면 나쁠 건 없다. 다만, 만들기 까다롭고 일체성도 떨어질 거 같다.

▶펑션을 분리하는 것보다는 아예 좌우 분리형을 먼저 만들어 보는게 어떨까 싶다. 아직 안해본 시도이고 좌우 거리나 각도에 대한 면밀한 점검을 할 수 있어 이번에 꼭 해 보는게 좋겠다. 굳이 탈착 가능한 케이블일 필요도 없고 선 13가닥이 오른쪽으로 연결되어 있기만 하면 되니 펑션키 분리보다 오히려 쉬운 편이다.

원하면 둘을 붙여서 쓸 수 있게 탈착식으로 만들 수도 있지만 그럴 경우는 각도가 맞지 않아 오히려 불편할 듯 하다. 붙여서 쓴다면 가위 모양으로 벌려 각도는 변경 가능해야 실용성이 있는데 삼각형 브리지를 여러 개 만들어 볼까 계획해 봤다. 각도, 거리별로 두 세벌 제공하고 좌우 본체를 여기다 붙여 쓰거나 따로 떼서 써도 되게 만든다.

좌우를 분리하면 각도는 자유이니 자판 각도는 10도씩이나 될 필요 없이 그냥 직교형이면 된다. 그러나 팔을 11자로 벌리면 너무 넓고 어색하며 자리도 지나치게 많이 차지한다. 좌우를 벌린다고 해도 쫙 벌리지는 않을 것이므로 2~4도 정도는 기본 기울기로 제공하고 나머지는 알아서 기울여 쓰는 걸로 한다.

초안 디자인을 만들어 보았다. 자판은 4, 수평 6, 수직 2도이며 편집은 0도로 각도를 주지 않는다. 좌우가 분리되니 수평쪽으로 좀 솟아 올라도 어색하지 않을 거 같고 수직도 더 늘러도 될거 같다. 펑션은 착탈식으로 설계는 해 두되 시제품은 펑션을 아예 빼고 만들거나 왼쪽에 붙이기로 한다. 지금은 좌우 분리만 해도 골치가 아프다.

하판은 케이블 구멍 외에는 안이 보이지 않도록 밀폐형으로 디자인한다. 하판 위쪽으로 벽을 세우면 된다. 브리지를 만들면 체결부도 필요하고 케이블이 지나갈 홈도 만들어 넣어야 한다. 이제 슬슬 완성도 높은 시제품을 만들어야 하니 가급적 디자인도 신경써야 한다.

분리형을 만드려면 좌우를 연결할 수 있는 13가닥의 선이 필요하다. 7행이 다 가야 하고 오른쪽 6열도 건너가야 한다. 당장 떠오르는게 네트워크 UTP 케이블인데 8가닥이니 2개를 쓰면 된다. 7가닥에 하나, 6가닥에 하나를 쓰고 나머지는 미사용으로 둬도 될 듯 하다. 굳이 꼬아 놓을 필요없는데 꼬여 있어 부피가 큰게 단점이다.

 

디바이스마트를 뒤져 봤다. 페러렐 프린터 케이블은 뭉쳐 있어 좋지만 25핀이라 너무 많다. 플랫 케이블 16핀이 딱 적당한데 저건 납땜을 할 수가 없다. IDE 하드 케이블이 40핀이라 적당히 잘라 쓸 수 있지만 길이가 짧고 단선이 아닐 듯 하다. HDMI19, DP20핀인데 그만큼 케이블이 들어 있는지는 모르겠다. 검색해 보니 진짜 그만큼 들어 있는 거 같은데 집에 있는 케이블 하나를 잘라 보자.

  

단선 4, 꼬인 은박선 5개인데 은박을 풀면 노출된 선 빼고도 각 2가닥이라 14가닥까지 쓸 수 있다. 그런데 이거 쉴드가 이중으로 너무 꽉 차 있어 탈피가 쉽지 않다. 게다가 결정적으로 단선이 아닌 연선이라 다루기 어렵다. 이건 쓸 수는 있지만 안되겠다.

네트워크 케이블 2개를 쓰면 번거롭지만 되긴 된다. 잘라서 풀어 보니 단선이긴 한데 0.3미리라 좀 뻑뻑하다. 알리 뒤지다가 플랫 리본 케이블이란 게 있는지 찾고 디바이스 마트에서 비슷한 걸 찾았다. Flat Cable로 검색하니 이것 저것 많이 나와 닥치는대로 주문했다. 다이오드도 500개가 장바구니에 있길레 그냥 같이 주문했다.

이 정도면 어느 정도 연결 가능할 거 같다. 아니면 집에 있는 8색 점프선을 써도 되고 10핀 리본 케이블도 있다. 배송 오면 뭘로 연결할지 잘 골라 봐야겠다.

하판도 케이스를 감싸고 탈착부를 만드려면 바뀌어야 한다. 벽을 두껍게 세우고 찰탁 고리를 달아야 하니 이제 뒤집어 출력할 수 없고 정방향으로 출력해야 한다. 케이블이 하판 아래로 지나가야 하나 아래 각도가 없을 수는 없고 3~4도 정도만 주도록 하자. 그러면 상판의 수직 각도를 더 줘야 한다.

좌우가 분리되면 팜레스트는 더 이상 쓸 수 없다. 이제 하판에 팜레스트를 포함해야 한다. 이것도 분리형으로 만들어 필요할 때만 붙여 쓸 수 있다면 좋을 듯 한데 복잡도가 너무 증가하니 차후 천천히 생각해 보자.

3.5 파이 3극 오디오 케이블로 스위치 두 개를 뺄 수 있다. F23, F24키를 연결해 두고 매크로키를 분리해 두면 여러 모로 활용할 수 있고 발키보드로도 만들 수 있다. 꼭 당장 구현하기보다는 배선만이라도 미리 할당해 놓기로 한다.

▶펑션 세로 피치 0. 칼질 필요하지만 뭉쳐 있으면 누르기 더 쉽다. 문자영역처럼 피치를 굳이 넉넉히 띄울 필요없다. 기획은 해 놓았는데 막상 칼질하려니 귀찮고 일관성이 훼손될 거 같아 이번에는 보류하기로 했다. 펑션을 분리하면 시각적으로 분리되니 굳이 구두쇠짓을 안해도 Esc와는 그럭 저럭 구분될 것으로 예상한다.

▶체리 스위치도 과연 들어가는지 테스트해 봤다. 당장은 LP만 쓸거지만 체리도 만들 가능성이 있으므로 끼워 보기는 해야 한다. 사실 결과는 어느 정도 예측 가능하지만 다른 문제가 더 없는지 끼워볼 필요는 있다.

예상했던 대로 안밖열과 엄지 좌우의 간격이 줄어드는데 높아지면 각도에 의해 위쪽이 좁아지기 때문이다. 안밖열은 그리 심하지 않고 엄지는 딱 붙어 버려 좌우를 약간은 벌리거나 키캡으로 조작을 좀 해야 할 거 같다. 편집의 바닥이 더 많이 내려와 상판을 조금 더 들어야 하며 Num키의 팔이 Han키에 살짝 닿는 사소한 문제도 있다.

이상적으로는 체리 스위치용 상판을 새로 만들어야 하지만 이대로도 사용은 가능할 듯 하다. 그러나 역시 좁은 피치에 비해 스트록이 너무 깊어 바람직하지는 않다. 소젯은 거의 LP 전용이며 체리와는 어울리지 않는다. 스위치 엄청 많이 사 뒀는데 괜히 사 둔거 같다. 앞으로 LP 스위치만 사 재야겠다.

22호 제작

몇가지 기획안이 나왔으니 22호를 슬슬 만들어 보자. 꼭 칩을 연결할 필요는 없고 모양만 만들어 봐도 된다. 통짜로 찍지 않으니 꼭 날곰으로 인쇄할 필요 없이 가이더로 만들면 된다. 만듬새는 오히려 이쪽이 더 좋고 작업하기도 더 편하다. 하판은 날곰으로 만들어도 상관없다.

가이더용 3.9미리 키홀로 왼쪽 플레이트를 만들었다. 키홀 크기가 바뀌고 각도를 조정한 것 외에는 21호를 만드는 방법과 거의 비슷하다. 엄지와 편집은 간격 유지를 위해 21호걸 가져와 키홀의 크기만 수정했다. 경험이 충분히 쌓여 시간이 오래 걸리지는 않았다. 왼쪽만 만들면 오른쪽은 대칭시켜 만들면 된다.

아래쪽에 틴지 넣을 자리 확보하고 반대쪽으로 건너갈 케이블을 고정하기 위한 나사 구멍 둘을 하판 아래쪽에 뚫어 두었는데 위치는 대충 잡았다. 315%로 슬라이싱했다. 반쪽만 만들었더니 플래시프린트가 세워서 가져오는 바람에 둘 다 저장한 후 반씩 잘라 출력했다. 각각 7시간, 3시간 걸리니 대략 11시간이다.

상판 걸어 놓고 잔 후 일어나 수확했다. 서포트가 잘 뜯기는데 노랑 필라멘트가 탄력이 있어 여기 저기 튕겨 좀 불편했다. 다행히 키홀은 정확히 일치해서 칼질이 필요한 부분은 없고 꽉 조여져 스위치가 잘 빠지지도 않는다. 초안인만큼 몇가지 조정할 건 있다. 하판까지 나온 후 같이 조립해 봤다.

첫 테스트치고는 그럭 저럭 무난히 잘 나왔다. 틴지 케이스 자리도 맞고 케이블 고정 구멍도 잘 맞으며 위로 선을 올리는 구멍도 일단은 사용할만하다. 4,2,6도 하판 5도는 아직 검증하긴 이르지만 괜찮다. 물론 수정 사항도 많은데 대충 만들다 보니 간격이 안 맞는 부분이 있다.

 

- 편집 좌하단키 바닥에 닿음. 상판을 0.5미리만 깍고 하판을 2미리 높인다. -> 편집이 아슬아슬하게 바닥에 닿음. 편집 영역을 1미리 올릴 것

- Alt키 바닥에 닿음. Ctrl도 위험하니 같이 구멍 팔 것.  -> 2미리 홈으로 해결됨

- Esc 옆키와 부딫힘. 2미리 정도 밖으로 이동. 아래로도 2미리 이동 -> 해결

- Ctrl키도 옆에 아슬하게 닿음. 1미리 바깥으로 이동 -> 해결

- 지지대 벽까지 고려하여 플레이트 폭 8미리 추가해 145로 늘릴 것. -> 적당함

- 나사 구멍을 2.9로 했더니 그 안에 서포트 생김. 수동으로 지울 것 -> 해결

- 엄지 전체 1미리 더 위로 -> 약간 올렸는데도 떨어져 보임. 더는 어려움

 

이번에는 하판을 정방향으로 찍고 벽을 두른다. 틴지 케이스도 내장해 버리기로 한다. 연결선 위로 빼고 케이블 고정 장치도 위쪽에 단다.

 

- 상판 넓이와 같은 4미리 하판 배치

- 상판 사본을 얹고 편집에 구멍, 문자 영역과 Ctrl, Alt2미리 두께의 홈만

- 상판에서 나사 구멍 빼내고 후면 홈에는 나사길 만듬

- 우상단 틴지 케이스, 케이블 지지 나사 구멍 26미리 간격 배치. 그룹핑

- 안쪽면에 6미리 벽 받고 3미리 걸쳐 키보드 얹는 부분 깍음

- 6미리 케이블 홈, 삼각형 브리지 홈 배치

- 5도 기울이고 바닥에서 -2내림

- 뒤쪽에 지지대 박고 앞쪽 음수 영역 깍음

 

안쪽 지지대가 생김으로써 기둥 하나는 제거하고 틴지 공간 확보를 위해 상단 기둥도 가장자리로 밀었다. 케이블 지지대와 브리지는 당장 쌈박한 아이디어가 떠오르지 않아 아직 초안이다. 만들어 본 후 전반적인 정리가 필요하다. 대충 2차분을 완성했다.

상판이 하판 위로 올라가고 이빨이 딱 맞으면 된다. 이제 하판도 서포트가 필요하다. 서포트는 60도 직경2미리로 하되 나사 구멍안의 서포트는 수동 삭제했다. 215%로 상판 7시간, 하판 5.4시간이다. 프린터 3대 풀가동중인데 그래도 새벽 2시는 되어야 결과를 볼 수 있다. 한잠 푹 자고 일어나 2차 테스트를 수확했다.

 

대부분의 문제는 다 해결되었으나 더 조치해야 할 것도 있고 추가로 발생한 문제도 있다. 하판을 흰색 테스트 필라로 뽑았더니 품질이 엉망이고 상판은 새로산 스팅3D 필라를 썼는데 수축이 약간 있다. 어드벤처가 압출 불량 상태라 노즐 청소를 해야한다. 출력의 문제는 차차 해결하기로 하고 디자인 문제만 수정해 놓자. 이번에는 양쪽을 다 뽑아 시제품을 만드는 걸 목표로 한다.

 

- Caps 아래 기둥에 스위치가 걸림. 1미리 아래로 기둥, 구멍 이동. -> 해결

- 편집 영역 좌하단이 바닥에 닿아 1미리 위로 올려 -2로 한다. -> 해결

- 손잡이는 생략하고 모서리 라운드 처리. 반지름 8로 늘리고 바깥 1미리 여유 둔다. 정렬후 1미리씩 밖으로 이동한다. 상하판 각각 잘라내는게 더 편하다. -> 해결

- 케이블홀 6미리로는 좁다. 8미리로 늘리고 나사 구멍 간격도 늘린다. -> 해결

- 안쪽벽 계단이 보기 싫은데 사선으로 처리한다. 상팡 홈 위에 사각 얹어 잘라낸다. -> 해결

- 하판은 서포트 치느니 아예 채워 버린다. 인필이나 서포트나 시간,비용은 같고 미관상 차이만 있을 뿐이다. 각도는 4도로 살짝 낮추고 나사구멍에 나사길 추가한다. -> 해결

 

이정도만 수정해도 시제품은 만들만 하다. 브리지 거는 부분은 아직 설계해 보지 않았는데 테스트를 먼저 뽑아 보고 측면에 적용해 보자. 너무 정밀할 필요는 없고 대충 끼어서 흔들리지 않을 정도면 된다.

암놈은 10*10*10 높이의 삼각형을 3미리 깊이로 박고 그 위에 또 삼각형을 얹어 서포트없이 뽑도록 했다. 숫놈은 폭과 길이를 9.6으로 줄이고 2.8만큼 돌출시켰다. 공차 0.2로 맞추되 높이는 위쪽에 서포트 방지 삼각형에 여유 공간이 있어 그냥 10으로 주었다.

뽑아 보니 공차 0.2는 택도 없어서 들어가지도 않는다. 암놈위에 삼각형 얹어 서포트 없앤건 아주 깔끔하게 잘 나왔다. 숫놈 삼각형의 폭과 깊이를 9.2로 줄이고 2.6만큼만 돌출시켜 공차 0.4로 만들었다. 이번에는 숫놈만 뽑으면 되니 16분 걸린다.

0.4도 실패일 뿐만 아니라 똑같다. 생각해 보니 폭이 준만큼 길이를 같이 줄이면 홈 바깥에 걸리기 때문에 공차가 없어지는 것과 같다. 게다가 2차에서 돌출부를 2.6으로 한다는게 2.4로 해서 더 안들어간다. 좌우 공차는 0.4로 유지하고 돌출부를 2.8로 하여 공차를 0.2만큼만 주었다. 이번엔 인필도15%로 줄여 11분만에 나왔다.

이게 딱 맞다. 수평 공차는 0.4로 하고 길이 공차는 0.2로 하면 된다. 약간 유격이 있긴 하지만 두 개를 물리면 괜찮을 듯 하다. 아랫부분으로 넣으면 꼬끼발로 인해 잘 안 들어가지만 위에서 넣으면 잘 들어간다.

, 그럼 심기일전해서 시제품 제작에 쓸 상판, 하판을 디자인한다. 1시간 내로 완료할 예정이다. 중간에 택배가 오는 바람에 1시간 20분 걸렸다. 하판위에 상판 올려 보면 딱 맞게 나오는데 안쪽 모서리 라운드가 이중이라 조금 더 조정했다. 처음부터 다시 만든게 아니라 수정하다 보니 어긋난 부분이 약간씩은 있다. 틴커캐드가 회전하면 뭔가 틀어지는 문제가 있는데 아직 테스트중이라 그냥 대충 맞췄다.

슬라이서가 자꾸 세워 가져 오는 바람에 회전시켜야 한다. 상판은 330%7.3 걸린다. 나사 구멍에 서포터 빼는 거 잊지 말아야 한다. 하판은 수평이 안 맞아 바닥을 0.3미리 잘라냈다. 서포터 필요없고 6.05 걸린다. 가이더와 어드벤처에 걸었는데 날곰이라 화분을 찍고 있는 중이라 어쩔 수 없다. 7시간동안 밥 먹고 케이블이나 좀 알아봐야겠다. 7시간 후 하판과 상판이 모두 나왔다.

2차분의 모든 문제가 깔끔히 해결되었고 틀어짐이나 불일치 없이 거의 완벽하게 나왔다. 나사 구멍도 딱 맞고 수평도 잘 맞으며 모서리 처리도 잘 되었다. 다만 하판은 테스트 필라로 뽑았더니 품질이 영 안 좋고 상판에 일부 드러나니 색상을 잘 골라서 다시 찍어야겠다. 브라운으로 해 볼까 하다가 흰색이 많이 남으니 그냥 흰색으로 해야겠다. 브리지는 어차피 새로 만들거니 결합부만 잘 나와 줬으면 충분하다.

왼쪽이 그럭 저럭 완성되었으니 오른쪽은 뒤집어서 뽑기만 하면 된다. 완전 대칭이지만 오른쪽 하판에 틴지는 필요 없으니 삭제한다. 왼쪽에 비해 정말 간단하게 만들 수 있는데 슬라이서가 문제다. 전에 안 그랬는데 상판을 불러오면 꼭 세워서 가져 오며 회전해도 기둥 4개가 다 바닥에 닿지 않는다. -> 바닥으로 앉힐 부분을 더블클릭하면 된다는 걸 아주 뒤에 알게 되었다.

 

큐라에서는 똑바로 읽혀지는데 날곰으로 찍을게 아니라 소용없다. 임의 각도로 회전해 억지로 바닥에 앉혀 봐야 틀어질 거 같고 일부 다리를 잘라내자니 그것도 좀 그렇다. 어쩔 수 없이 1미리 판을 아래에 깔고 저장한 후 1.01미리 잘라 수평을 맞췄다. 이것도 하나의 팁이니 잘 기억해 두자. 상판은 그렇다 치고 하판은 더 문제다.

바닥이 더 평평하지 않아 약간 회전한 후 밑바닥 약간 잘라 안착시켰다. 왼쪽은 0.3미리지만 오른쪽은 0.7미리나 잘라야해 문제다. 큐라에서도 마찬가지로 수평이 안 맞다. 이렇게 된 이유는 하판 사각을 먼저 깔아 회전시키고 그 아래에 삼각형을 집어 넣어 각도를 만든건데 자꾸 수정하다 보니 두 판의 각도가 평행하지 않은 것이다. 이왕 이렇게 된거 아예 다시 만들어야겠다.

 

- 삼각형으로 하판 만들고 잘라내기 : 이러면 상판을 수직으로 올려 나사 구멍을 정확히 빼낼 수 없다. 앞머리를 두께 2미리로 잘라내기도 어렵다. 회전하기전 판이 필요하다.

- 웨지 도입 : 하판을 평평하게 만들고 예전처럼 각도용 웨지를 따로 만든다. 이건 가능하지만 그래도 기본 각도는 있어야 앞부분을 2미리 잘라낼 수 있다.

 

모델을 풀어 헤쳐 보니 하판 앞부분을 잘라내는 구멍이 살짝 회전되어 있고 뒷부분의 삼각형도 마찬가지이다. 둘 다 새로 만들어 바닥에 평평하게 만들었더니 문제가 해결되었다. 자주 수정을 거치다 보니 틀어지는데 이번에는 그냥 이렇게 가고 다음에는 새로 만들자.

상판은 350%8시간 걸려 가이더에서 출력 완료했다. 이거 걸어 놓고 날곰 화분 찍기를 기다리다 잠이 들어 버렸었다. 긴거 하나 걸어 놨더니 두 대 병렬로 돌릴 수 없어 어드벤처를 썼는데 압출불량이라 테스트밖에 안된다. 하판은 인필 50%로 옵션 바꾸고 역시 8시간이다. 날곰에 흰색 필라로 출력 걸었으니 8시간 후 좌우가 완성된다.

그런데 이 시점에 다시 생각해 보니 실사용하려면 펑션영역이 필요하다. 개념적 테스트로 펑션을 빼고 만든 것도 나름 의미 있고 펑션 없는 시제품도 필요하지만 쌔빠지게 납땜하기는 좀 그렇다. 왼쪽에 펑션을 붙이는건 어렵지 않은데 그럼 좌우 비대칭이고 착탈식으로 만들면 되겠다. 이걸 해 보려면 먼저 브리지부터 완성해야 한다. 브리지, 펑션, 팜레스트 순으로 점진적으로 개선하자.

8*100*12의 바를 만들고 10, 80 지점에 두 개의 돌출부를 2.8 튀어 나오게 배치한다. 하판의 암놈이 간격 70, 깊이 3으로 배치되어 있으니 여기에 맞춘다. 그런데 하판에 홈을 먼저 배치하고 기울인거여서 홈이 수직이 아니다. 여기에 끼우면 브리지가 하판 각도만큼 기울어지는데 아래쪽에 케이블 지나갈 공간을 둔다는 의미는 있지만 바닥에 닿게 만들려면 에러가 많이 날 거 같다.

그룹핑, 복제 후 반전하고 20도 기울여 윗면을 맞춘다. 가운데를 높이 12의 삼각형 적당히 만들어 브리지의 절반각도인 10도 기울여 채운다. 아래쪽에는 삼각형으로 T자형 구멍을 파 케이블 지나가고 남는 케이블을 수납할 수 있는 여유 공간을 만든다. 하판의 케이블 홀은 아래홀보다 40미리 정도 위에 있어 이 위치에 맞추면 된다.

 

상단 꼭지점은 사각 구멍 10도 기울여 깍아내고 전체 그룹화하여 쐐기 모양의 브리지를 만든다. 테스트를 뽑아 보니 일단은 쓸만하게 나왔다. 공차를 충분히 줬는데도 너무 빡빡하고 하판 꼬끼리발 때문에 조금 칼질이 필요했다. 끼우는데 성공했고 나름 잘 버틴다.

너무 꽉 끼어서 체결이 어렵다는 문제가 있고 또 각도가 기울어 위쪽이 뜨는건 예상했지만 아래쪽이 바닥 아래로 내려가는건 미처 예상하지 못했다. 케이블 통과 홈이 너무 위에 붙어 있다. 하판의 홈 높이를 12미리로 높이고 꼬끼리발 방지 경사를 판다. 케이블 홀은 5미리 아래로 내리되 조립 편의를 위해 위쪽에 케이블 끼우는 홈을 5미리 정도 파 놓기로 한다. 안 그럼 케이블를 하판에 끼운채 납땜해야 하는데 이건 말이 안된다. 브리지가 케이블을 잡아 주니 별 문제는 없고 정 보기 싫으면 케이블 넣은 후 끼울 뚜껑을 만들자.

공차는 테스트를 거쳤지만 너무 빡빡해서 브리지 교체가 어렵다. 측면 0.4->0.6으로, 깊이 0.2->0.4로 조정해 보자. 하고 실제 조정해서 뽑았는데 앞에서 한번 당했듯이 박히는 깊이가 줄면 폭은 줄이나 마나여서 헛수고였다. 다시 0.6/0.2로 수정해서 뽑았더니 잘 들어가고 왠만큼 고정도 된다. 와중에 오른쪽 하판이 튼튼하게 나와 체결해 봤다.

코키리발 현상으로 인해 입구가 뻑뻑하지만 들어는 간다. 이러면 넣기는 쉬운데 아래로 빠져 버릴 위험이 있어 끝단에 고정 장치가 있어야 한다. 1미리 부분에 암컷은 돌기를,  수컷은 홈을 파 두기로 한다. 돌기는 지름2미리 반원이며 정면 중앙에 1미리 돌출시켰다.

의도한 바대로 딸깍 걸려 쳐지지 않게 고정은 된다. 테스트는 길이가 짧아 고정이 튼튼한지까지는 아직 모르겠다. 그런데 1미리 홈에 1미리 돌기가 딱 맞게 밀착될리는 없을 거 같다. 홈은 1미리로 하되 돌기는 0.7로 높이를 약간 줄이자. 그리고 꼬끼리발 제거용 삼각형도 아래에 배치했다. 테스트 뽑아 보니 딱 맞게 잘 걸린다.

이것만으로는 안심할 수 없어 결국은 나사 구멍도 하나 박아 넣어야겠다. 3미리 나사 구멍으로 일단 뚫되 닳아서 못 쓰면 볼트, 너트를 끼우면 된다. 안쓰더라도 일단 뚫어는 놓자. 위쪽은 드라이버를 돌릴 공간이 협소하니 아래쪽 홀 옆에 2미리 두께의 판을 만들고 나사 구멍을 뚫어 둔다. 물론 하판에도 대응되는 구멍이 있어야 한다. 이제 테스트한 부품을 모아 브리지를 만든다.

각도와 거리를 제대로 고려하지 않고 대충 20도 각도로 만든 것이다. 자판은 기본 4도에 10도가 더해져 14도인데 너무 과하다. 팔을 벌려서 치니 그렇게나 각도를 줄 필요가 없다. 브리지가 10도면 자판은 9도가 되는데 이조차도 많다. 4도면 추가 각도가 없어도 될 거 같은데 그럼 섭섭하니 6도 기울여 자판 7도에 맞추자.

거리는 TE간 거리로 정의하자. 현재 135인데 21호가 85이니 50미리 더 벌어졌다. 좌우를 충분히 벌렸다고 할만한 거리는 아니니 키 두개분만큼 더해 170으로 한다. 이러려면 브리지 중앙 부분의 폭이 대략 70 정도 되어야 한다. 각도보다는 거리를 띄워 고정하는게 주목적이다. 이것도 어디까지나 테스트이니 일단 만들어서 끼워 보고 조정하자. 너무 거대해 아래, , 중앙 다 파내고 뼈대만 출력했는데 그래도 2시간이다.

일단 예상보다 너무 뻑뻑하다. 0.6갭이라고 하나 돌기가 0.2만큼 밖으로 나와 있어 실제로는 0.4정도 갭일텐데 이렇게 빡빡할 수가 있나. 다행히 힘좀 쓰면 들어가기도 하고 빼기도 가능한 수준인데 따로 고정을 안해도 될 정도로 튼튼하다. 좌우가 흔들리지 않고 딱 고정된다.

중간을 70이나 띄웠더니 팔이 벌어져 확실히 편하기는 하다. 그러나 보기에 너무 부담스럽고 자리도 많이 차지해 시제품으로는 영 별로다. 70 간격도 나쁘진 않은데 거의 최대폭으로 띄운 거 같아 앙증맞은 맛이 없다. 시제품 브리지는 키 두개 폭인 35를 줄여 딱 절반폭으로 만들기로 한다.

중앙 브리지는 대충 된 거 같으니 다음은 펑션영역을 만든다. 어차피 이거 붙여야 실사용 가능해 시제품으로 의미가 있다. 자주 땠다 붙였다 할건 아니고 뗄 수도 있다, 이거 때면 좌우 대칭이다 정도이므로 이번에는 그냥 나사로 박아 버리자. 높이도 꼭 왼쪽변과 일치할 필요없이 살짝 위로 솟아도 되지만 막상 만들어 보니 일치시켜도 되겠다.

펑션 플레이트 6도 기울이고 2미리 띄워 하단 받치고 나사 구멍과 선들어올 구멍을 뚫어 둔다. 하판은 공간이 협소해 따로 만들지 않았다. 하판 길이 3미리 늘리고 플레이트 얹을 틈을 만든 후 펑션의 나사 구멍 가져오고 선 빠져 나갈 홈을 팠다. 구멍은 안되고 홈을 파야 미리 선을 끼우지 않고도 납땜을 할 수 있다. 정말 미리 고려할게 너무 많다.

하판 모서리의 라운드는 플레이트에 이미 적용해 버려 지금은 이중이다. 임시적으라 어쩔 수 없고 기획이 완료되면 처음부터 새로 만들기로 한다. 펑션과 하판 왼쪽 부분만 테스트 출력하는데 또 2시간 반이 걸린다.

스위치를 낀 상태로 나사를 체결하는데 큰 문제는 없다. 드라이버 넣을 공간을 위해 위쪽은 비워 뒀는데 드라이버 구멍만 뚫어 두는게 미관상 더 좋다. 결합 후 아랫면이 공중에 살짝 뜨는데 이건 맞추기 어렵고 스티커 붙이기로 한다. 좌하단 스위치는 바닥에 겨우 닿는걸 면했다. 여유가 좀 있어 보여 3미리 더 내렸다.

폭은 42로 했더니 좀 남아 2미리 줄였다. 어차피 하판이 3미리 더 넓어져 구분은 충분히 된다. 펑션 영역은 역방향으로 뒤집어 찍을 수 있는데 그러다 보니 키홀이 줄어들어 칼질을 해야 한다. 홀을 날곰용으로 바꿔 사용한다. 바깥쪽은 모서리 라운드 처리했다. 더 수정할 일 없을 듯 해 350%2시간동안 찍었고 스위치, 키캡까지 다 체결했다. 칼질은 안해도 되지만 여전히 조금 뻑뻑하며 3미리 아래로 내렸는데 다행히 바닥에 안 걸린다.

다음은 팜레스트를 만든다. 분리형이라 팜레스트 쓰기가 어려워 아예 내장을 하되 원치 않는 사람도 있을 것이므로 반드시 탈착식이어야 한다. 당장 이걸 완성하겠다는 뜻이 아니라 하판에 붙일 장치를 마련해 두는게 중요하다. 최초 엄지 아래와 편집의 남는 15미리에 깊이 3, 두께 5 정도로 판데기를 얹고 나사 구멍 두 개 정도 배치하기로 했다. 팜레스트는 위에서 결합하면 상판을 뜯어야 하고 아래에서 결합하면 하판에 서포트가 필요하다.

그보다는 하판 아래 벽면에 나사 구멍을 2개 배치하고 팜레스트를 여기에 결합하는게 더 깔끔할 거 같다. 벽면을 안쪽에 넣을 수 있어 돌출부가 없고 팜레스트를 붙일 때만 밖으로 튀어 나오는 식이다. 40*5*12 크기의 사각형을 배치하고 3미리 높이에 35미리 간격으로 두 개의 나사 구멍을 뚫는다. 팜레스트의 영역을 계산해 봤는데 오른손 기준 대략 다음과 같다.

 

O이후 키 네개분 정도의 넓이에 걸치면 되고 하판 아래 30 띄우고 30 높이에 폭은 70 정도이다. 마우스용 팜레스트를 놓아 보면 바깥 가까운쪽이 10, 안쪽 먼쪽이 40 정도 거리가 적당하며 높이는 6~8 정도이니 두께 5로 만든 후 마우스패드를 얹으면 딱 좋을 거 같다. 초안 배치는 다음과 같다.

하판에 벽 만들고 나사 구멍 뚫은 후 여기에 대응되는 벽을 팜레스트에 만든다. 70*30*5의 판을 바깥 10, 40 거리에 배치하고 판이랑 대충 연결했다. 바깥 나사 구멍은 머리 들어갈 자리를 위해 5미리 구멍을 배치했다. 도저히 감이 안 잡히니 일단 찍어 실문 만져 보며 조정하자.

 

나사 두 개만 박아도 튼튼하게 잘 고정된다. 패드는 왼쪽으로 더 확장해야 하는데 지금은 이게 중요한게 아니고 하판에 접점을 만들어 두는 것이다. 두께 5미리씩이니 나사를 16미리로 박아야 하는데 좀 두껍다. 하판쪽은 5미리를 유지하되 밖으로 들어나는 팜레스트는 3미리 정도만 해도 될 거 같다.

상하판 다 얹은 상태에서 대 보면 상판에 걸려 하판과 1미리 정도 벌어지는데 기울임에 의한 간격인 듯 하다. 접점부는 하판을 다 기울인 상태에서 수직으로 박아야 하며 팜레스트쪽 점접부를 상판에 걸리지 않게 잘라내면 된다. 외측 나사길은 6미리 정도 팠는데 10미리로 늘려야겠다. 팜레스트는 다음에 정밀하게 따로 만들기로 하자.

좌우 분리, 펑션 분리, 팜레스트까지 준비했고 남은건 매크로 키를 위한 준비를 해 놓는 것인데 이건 배선만 해 두고 케이스에는 적용하지 않기로 한다. 케이블을 아직 결정하지 않아 케이스에 홀을 만들어 두기는 성급해 보인다. 선만 살짝 위쪽으로 던져 놓고 고정은 다음에 하자.

그럼 모든 수정 사항을 적용하여 하판을 새로 만든다. 상판은 영향을 받는 부분이 없어 뽑아 놓은거 쓰면 된다. 하판과 브리지를 다 수정하는 김에 위쪽 홀이 너무 위로 쏠린 거 같으니 10미리만 아래로 내리기로 한다. 그 외 나머지는 테스트하면서 만들었던 사항을 그대로 적용하면 된다.

 

- 홀 코끼리발 해결, 돌기 만든걸로 교체하고 12미리 위에 배치

- 홀간격 60으로 줄이기 : 위홀 10미리 아래로

- 아래홀과 20위쪽, 높이 15에 나사홀 하나 뚫음

- 케이블홀 3미리 내림. 홀까지 5미리 구멍 팜

- 왼쪽만 3미리 확장후 펑션 영역 나사 구멍과 배선홀 뚫음

- 상판 얹고 하단 팜레스트벽 깍음. 평선쪽 0.4미리 여유분 확장

- 오른쪽 : 왼쪽 복사후 대칭. 틴지와 펑션 구멍 3개만 지운다.

 

인필 50%로 하니 에러가 나서 30%로 했다. 왼쪽 8.08, 오른쪽 7.21 걸린다. 그 동안에 변경된 구멍에 맞게 브리지를 만든다. 수정사항 적용하여 635로 제작했다. 양변의 각도와 중앙 부분의 폭으로 명명하기로 한다.

 

-12*100*12 바를 만들고 15, 75 지점(60 간격) 돌출부를 2.8 튀어 나오고 배치한다.

-33.62(35-홀다리0.78-수평공차0.6), 13좌표에 나사 구멍 배치하고 9*9*4사각형으로 감싼다.

-그룹화. 복제후 수평 대칭하고 각 3도씩 기울이고 중앙 부분 폭 35로 조정.

-가운데 사각형 배치하고 케이블 자리에  삼각홀 넣음.

-표면에 엠블렘 1.5 높이로 새기고 전체 그룹핑

 

나사 구멍의 좌표에 대해서는 설명이 좀 필요하다. 하판의 나사 구멍은 아래홀에서 20, 15만큼 떨어진 위치에 놓았다. 홀에는 꼬끼리발 방지홈이 있는데 1미리지만 회전하여 0.775폭이다. 또 수평공차 0.6이 있어 이 둘을 빼면 18.62의 거리가 되며 돌기가 15에 있으니 33.62가 된다. 수직 위치는 15지만 홀이 2미리 더 길어 돌기가 2미리 안까지 쑥 들어가니 나사 구멍의 수직 위치는 13이 된다.

대충 요정도인데 부피감이 그리 크지 않아 다행이다. 하판과 브리지 뽑아 맞춰 보고 잘 맞으면 각도와 거리를 바꿔 몇개 더 찍어 봐야겠다. 35%3시간 걸린다. 색상이 좀 고민인데 노란색, 흰색은 이미 썼고 키캡에 있는 색도 좀 꺼려져 브라운으로 뽑았다. 필라 건 김에 키캡도 몇 종류 뽑아 놓기로 한다.

인쇄하는 중에 어제 주문한 부품들이 도착했다. 주로 좌우와 펑션을 연결할 케이블 종류인데 쓸만한 것도 있고 아닌 것도 있다. 양끝을 연결하는게 암수가 아니라 암암이라 수컷쪽을 따로 구해야 한다. 리본 케이블이 그나마 원하는 핀수대로 잘라 쓸 수 있어 당장은 쓸만하다.

날곰이 하판을 뽑는동안 가이더로 브리지와 하판 접촉면만 먼저 뽑아 봤는데 벌써 문제점이 드러난다. 케이블을 통과한 상태로는 공간이 협소해 브리지를 끼울 수가 없다. 끼운 후에는 가능하지만 케이블이 있는 상태로는 안되는데 이건 참 미리 예측하기 어렵다. 하판 아래쪽에 케이블을 잠시 대피시킬 공간이 필요하다.

나사 구멍은 정확하게 잘 맞는데 하나만 있으니 흔들거린다. 둘 다 가이더로 뽑아서 걸쇠만으로는 고정이 단단히 되지 않는다. 반면 날곰은 조금 좁게 나와 걸쇠가 단단히 걸리는 차이가 있다. 설사 안 쓰더라도 단단한 고정을 위해 아래 위로 두개는 달아야 안정감 있어 보인다.  55미리 위쪽에 나사 구멍을 하나 더 배치하며 케이스도 마찬가지이다.

브리지 공간이 좁아 바깥쪽에서 나사를 돌리는건 어렵고 케이스 안에서 돌려야 한다. 지그재그로 놔도 마찬가지다. 이 경우 나사가 밖으로 튀어 나오는데 브리지쪽 걸쇠를 좀 더 두껍께 만들어야겠다. 12미리 나사 주문해 놨으니 6미리로 늘리자. 나사 구멍 위치는 계산 착오로 2미리 아래인데 이왕 다시 만들거면 2미리 더 위로 올리자. 완성된 케이스에 이것 저것 붙여 봤다.

플레이트 들어갈 자리에 0.4미리 여유분 만든건 적절해 딱 맞게 들어간다. 평션, 팜레스트도 이상없이 체결되었다. 브리지는 안쪽 걸쇠에 거는데 힘이 좀 들어가고 일단 걸면 단단하게 고정되어 나사가 딱히 필요없을 정도다. 외부에서 교체 가능해 이게 더 낫다. 근데 날곰 케이스, 가이더 브리지 조합일 때만 그렇고 프린터가 바뀌면 공차가 달라진다.

브리지의 추가 나사 구멍을 같이 파 넣었다. 케이블 들어오는 구멍을 아래까지 확장하여 아예 구멍을 뚫어 놨고 원도 10미리로 2미리 늘리고 안쪽으로도 3미리 더 넣어 케이블이 여유있게 들어오도록 했다. 위쪽 나사 구멍이 너무 위에 있어 케이스 밖으로 삐져 나오는데 상판을 수정할 수 없고 더 내릴 곳도 없어 나사 구멍을 옮기긴 어렵고 나사길의 수직 반지름만 1 줄여 임시 대처했다.

두 부품의 접합 부분만 요렇게 잘라 다시 테스트를 걸었다. 큐라는 자르기 기능이 없어 틴커캐드에서 잘라가야 한다. 최소한만 잘랐는데도 1시간 10분이 걸려 2시는 되어야 잠들 수 있을 거 같다. 이래서 백수가 과로사한다는 말이 있다.

테스트를 뽑아 보니 나사 구멍이 맞지 않다. 브리지는 2미리 올렸는데 하판은 그대로 둬서 2미리나 차이가 난다. 하판 아래쪽에는 더 올릴 공간이 없고 올리면 상판과 나사 머리가 부딪치니 브리지의 나사 구멍을 원복하자. 안타깝지만 나사는 안에서 밖으로 박거나 아니면 브리지 높이를 낮춰야 한다. 왼쪽 하판과 브리지 두 종류 걸어 놓고 잤다.

218: 수정한 하판을 뽑아 보니 흡족하게 잘 나왔다. 위쪽 나사길 1미리 줄여 케이스안으로 들어왔고 브리지 나사 구멍도 잘 맞다. 아래쪽 케이블 임시 보관소는 적절한데 조금 좁다. 4미리 더 넓게 해서 9미리로 확장하여 오른쪽을 뽑되 왼쪽을 굳이 다시 뽑을 필요는 없을 듯 하다. 어차피 계속 수정할거니 모델에만 적용해 놓자.

하판과 65미리 브리지 출력 걸어 놓고 공주 유구장에 놀러갔다 왔더니 아직도 뽑고 있다. 9시나 되어 오른쪽 하판 완성해서 조립해 봤다.

원하던대로 만들어졌는데 일단 너무 길다는 느낌이 든다. 이 상태로 길이가 총 410이니 전혀 컴팩트하지 않다. 풀배열 키보드가 460인데 거의 그 수준이다. 가장 짧은 25미리 브리지를 걸어 봤다. 브리지 교체는 그리 어렵지 않고 힘도 많이 들지는 않는다.

보기는 예쁘고 괜찮아 보이는데 그래도 365미리나 된다. 21호의 318에 비해서는 5센치 정도 더 기니 부담스럽기는 하다. 19호는 280이었다. 물론 분리형이니 폭이 길어지는건 당연하고 원래 의도는 이거였다.

중간에 케이블 늘어뜨려 놓고 원하는대로 배치해서 쓰자는 개념인데 이 목적은 무난히 잘 달성한 듯 하다. 대략 5일 정도 걸려 뽑아 봤는데 중간에 테스트 만든 것만 모아봐도 양이 꽤 많다.

이만큼이나 뽑아 보고 난 후에야 22호를 겨우 완성했으며 분리형이 가능하다는 것과 프린터로도 원하는 모양을 얼마든지 만들어낼 수 있다는 것을 확인했으니 나름 성과는 있었다. 그러나 이걸로는 납땜을 하지 않기로 했다. 조립해서 실제 만져 보고 테스트해 보니 어떤게 문제인지 더 상세히 알게 되었고 더 나은 개선책이 많이 떠올랐다.

22호는 중간 성과물로 남겨 두고 바로 다음 버전을 만들기로 한다. 다음 버전 번호를 어떻게 매겨야 할지 애매한데 22호가 완성품은 아니지만 중간 과정으로서 보존 가치는 있으므로 23호로 가기로 한다. 일주일간 고생해서 만든 22호는 여기서 마무리한다. 차후 스위치와 키캡은 빼서 23호로 옮겨 심고 틀만 보전하기로 한다.

23호 기획

219일 일요일 21, 22호를 개선한 23호를 기획 및 만들기 시작한다. 일단 길이를 좀 줄이고 부품 교체 편의성을 개선하고 대량 생산을 위한 작업 과정까지 개선해서 배포의 용의성까지 확보하기로 한다. 22호를 만들다 보니 굳이 이럴 필요 있나 싶은게 많은데 더 간단하게 만들 여지가 많이 있다.

 

▶브리지를 아래에서 위로 결합하도록 했는데 굳이 이럴 필요가 있나 싶다. 뒤집어야 끼울 수 있고 케이블을 위에서 내리는 홈과 브리지 결합시 아래에 잠시 보관할 홈까지 필요하고 브리지가 흘러 내리지 않도록 돌출부와 홈을 양쪽에 만들어야 했다. 그것도 불안해 나사 구멍도 두개나 있어 브리지 영역을 활용하기 어렵다. 위에서 아래로 내려 꽂도록 하면 상판에 홈 두 개만 보일 뿐 끼우기 쉽고 흘러 내릴 위험이 없고 나사도 불필요하다.

22호를 만들 때는 홈이 위쪽에서 안 보여야 한다고 생각했던 모양인데 보여도 별 상관은 없고 정 보기 싫으면 끼운 후 덮는 덮게를 만들면 된다. 너무 빡빡하게 만들 필요 없이 공차를 적당히 주도록 하자. 가이더가 요즘 부쩍 소음이 심한데 키캡, 신발만 만들고상판, 브리지 모두 날곰으로 제작하여 일관된 공차를 확보한다.

오후 내도록 브리지 결합부를 만들었다. 폭이 굳이 10이나 될 필요 없고 깊이도 3은 너무 커 케이스가 두꺼워진다. 폭을 8로 줄이고 깊이는 2로 줄였다. 공차는 깊이 0.2면 되고 너비쪽은 0.4는 빡빡하고 0.5는 널널하다. 깊이가 약간 얕아 보여 2.5로 늘리고 공차 0.5가 딱 적당한 듯 하다.

아래쪽에는 꼬끼리발 방지를 위한 삼각형을 붙였다. 일단 이걸로 하여 상판과 브리지를 만들되 차후 더 조정하기로 한다. 테스트한대로 브리지를 제작한다.

 

- 8*80*10 사각바 배치하고 아래쪽에 1*2크기의 삼각형 구멍 받쳐 코끼리발 방지

- 10.6, 60.6 2.3미리 돌출되게 돌기 2개 배치. 간격은 50이다.

- 그룹핑, 복제 후 수평 대칭하고 각 6도씩 기울이고 원하는 거리만큼 띄운다.

- 가운데 사각형 배치하고 케이블 자리에 삼각형 구멍을 10*5크기로 배치한다.

 

이후 브리지는 한쪽 각도와 중앙 부분의 거리로 명명하기로 한다. 위와 같이 만들면 6 18이 된다. 테스트라 가장 좁게 뽑았다. 장착해 보니 너무 빡빡해서 안 들어가며 넣으면 빠지지 않는다. 내추럴 필라멘트가 너무 까끌해서 그럴 수도 있다. 끼울 때 사면을 따라 두개를 동시에 끼워서는 안되며 바닥에 수평하게 끼워야 함을 유의하자. 꼬끼리발 방지홀을 돌기 측면만 달아서 그런듯 한데 돌기와 바의 정면에도 달아 주었다.

이렇게 해도 여전히 뻑뻑하고 잘 안들어간다. 실측해 보면 돌기폭이 7.0이어야 하는데 6.5밖에 안되어 줄어들었다. 암컷쪽은 더 심하게 줄어 그런 듯 하다. 할수없이 수평을 0.6으로 늘려 보았다. 공차를 줄이니 이제서야 좀 들어가며 걸쇠가 두개라 심하게 흔들리지 않는다. 이번에는 오른쪽 상판의 일부를 만들어 붙여 봤다.

똑같은 프린터 똑같은 필라멘트로 뽑았는데 왼쪽은 딱 맞고 오른쪽은 헐렁해서 들기만 해도 빠져 버린다. 경우에 따라 폭이 다르게 나오는 모양인데 참 맞추기 어렵다. 혹시 수학적인 문제가 있나 싶어 점검해 봤다. 가로 세로가 8*8이면 세 변의 길이가 다른 이등변 삼각형이 된다. 꼭지점이 60도가 아니며 빗변이 밑변보다 길다. 그러나 막상 그림을 그려 보면 문제가 안된다.

정삼각형이 아니더라도 똑같은 비율의 이등변 삼각형이면 빗변의 각도는 같고 평행하게뒤로 이동하면 변 사이의 간격은 일정하다. 7*7 삼각형을 내접한 후 앞쪽을 0.2만큼 띄우면 뒤쪽은 0.8이 남는데 이 값이 얼마든 빗변 간격은 일정하니 수학적 문제는 아니다.

이건 결국 필라멘트의 특성과 출력 옵션의 문제인 듯 하다. 장비는 날곰만 쓸거고 옵션도 맞출거니 결국 재질 따라 수평 공차가 달라져야 한다는 얘기인데 그렇다면 공차별로 테스트를 뽑아 놓고 선택해야 할 문제인 듯 하다. 테스트를 뽑아 봤다.

결과가 참 웃기게 나오는데 공차 0.47.2폭이어야 하지만 6.7이다. 0.57.0->6.4로 줄어들고 0.66.8->6.3이다. 평균 0.5만큼 폭 손실이 있는데 어디서 발생하는 손실인지 모르겠다. 0.4는 아예 들어가지 않고 0.5는 그럭 저럭 들어가며 0.6은 별반 차이가 없다. 날곰의 해상도 문제인가 싶어 큐브를 뽑아 봤는데 한치의 오차도 없이 정확하게 2.0으로 나온다.

혹시나 깊이 공차 0.2가 작은가 해서 0.3에 가로 공차 0.6으로 만들어 봤는데 거의 안들어간다. 뒤로 물로난만큼 공간이 더 좁아져서 그런데 깊이는 0.2가 딱 맞다. 이렇게 부정확해서는 도저히 공차를 맞출 수 없고 설사 대충 맞춘다 해도 범용성이 떨어진다. 삼각형 작전은 실패임을 인정하고 아예 다른 방법을 더 모색해 봤다.

중간쯤에서 걸쇠를 걸고 뒷면에서 나사를 박는 방법이 먼저 떠올랐다. 측면에 비해 나사질이 쉽다. 앞면에 나사를 박는건 너무 길기도 하고 앞면이 튀어 나올 수 있어 별로다. 그러다가 뒷면에는 걸쇠를 탄력으로 거는 방법도 괜찮을 거 같다. 정 불안하면 나사 구멍도 하나 내서 고정도 할 수 있도록 한다. 여러번의 수정을 거친 최종 테스트 모델이다.

아래쪽은 암컷폭을 넉넉히 잡아 숫컷을 끼우기만 하면 되고 위쪽은 탄력으로 밀어 넣어 끼운다. 걸쇠는 너비 3, 깊이 2이되 안쪽에 0.5 삼각형으로 경사지게 만들었다. 암컷 홈은 0.4미리 여유를 두었고 위쪽 무너지지 않게 삼각형 일일이 걸었다. 길이 계산 미스, 공차 미스 등이 여러번 있었는데 하나씩 해결했다. 말단에는 0.5미리 경사 주어 탄력으로 걸리고 버틸 수 있도록 했다.

테스트 결과는 일단 상당히 만족스럽게 나왔는데 이제 실제 플레이트에 적용하면서 나사 구멍도 추가하기로 한다. 실제는 다른 변수가 나올 수도 있다. 먼저 나사 구멍의 찌꺼기 홈을 테스트한다. 이게 없으면 구명 경계 부근에 출력 찌꺼기가 붙고 나사를 박으면 접합부가 불룩해진다.

 

아래쪽은 나사 구멍만, 위쪽은 찌꺼기 홈을 파 두었다. 지름5, 깊이 1.1로 하여 벽면에 붙여 0.1밖으로 빼고 나사 구멍에 중앙 정렬한다. 펑션, 브리지, 팜레스트의 나사 접합부에 모두 적용해야 한다. 막상 찍어서 테스트해 보니 큰 차이는 못 느끼겠지만 적용하기로 한다. 초안 플레이트에 6도 브리지 만들어 적용해 봤다. 최소한의 필요한 부분만 남기고 찍어도 거의 4시간이 걸린다.

원래 계획은 사선 따라 같이 기울이려고 했는데 그러면 뒷면 벽에 수직이 될 수 없어 각도를 또 계산해야 하는 번거로움이 있다. 브리지를 한번 만들어 놓고 계속 사용하려면 어쩔 수 없이 수평으로 놓아야 한다. 브리지를 사선으로 놓으려면 뒤쪽의 거는 장치도 수직을 맟춰야 하는 번거로움이 있어 이번에는 그냥 가기로 한다.

대신 앞쪽 걸쇠 높이를 8로 낮추어 바닥에서 12미리 위로 브리지를 최대한 들었다. 케이블 지나갈 공간이나 후면의 틴지 케이스 접합에 별 문제가 없는 높이이되 조금 더 높았으면 하는 아쉬움이 있다. 이후 수평, 수직 각도가 낮아지만 이 높이도 따라 낮아진다.

원하는대로 잘 걸리고 제법 힘있게 잘 걸린다. 혹시 잘 안될 때를 대비해 나사 구멍도 만들어 뒀으며 잘 맞다. 분리하기 위한 홈도 파 두었는데 재끼면 분리된다. 이 정도면 초안치고는 나름 성공적으로 잘 나왔으니 적용해 보고 추가로 발생하는 문제는 차차 해결하기로 한다.

▶신발 및 키캡 테스트 : 지금까지 사용한 신발은 오른쪽이 살짝 내려가 그만큼 기울여 찍은 것이었다. 십자홀도 헐렁해 자꾸 빠지기도 하고 원통이 분리되는 경우도 많다. 그래서 순차 출력으로 아예 다시 만들되 키캡이 작아졌으니 신발도 12미리에서 10미리로 줄여 보기로 했다. 두 개 뽑아 봤는데 나름 개선된거 같은데 여전히 헐렁하고 쓰다 보면 한 귀통이가 깨진다.

그런데 신발 길이를 줄이면 뽑아 놓은 키캡을 못 쓰는 문제가 있다. 이럴 바에야 아예 키캡에다 신발을 붙이는 시도를 해 보기로 했다. 대량 생산하면 신발 끼우는 것도 일이고 사용자에게 부품 배포시 신발을 종류별로 보내기도 애매하다. 애초에 시도해 본 적은 있는데 안될거 같아 포기하고 신발을 따로 뽑는걸로 지금까지 버텨 왔지만 다시 한번 더 시도해 보기로 한다. 일단 키캡과 원통을 합친다.

 

합치는건 쉬운데 이걸 어떻게 출력할건가 문제이다. 수평으로 뻗은 십자홀이 무너지지 않게 뽑아야 하는데 여러 가지 방법을 시도해 보았다.

 

1. 서포트 받치고 뽑기 : 802미리 서포트. 분리는 아주 잘됨. 예상외로 십자홀 안 무너지고 헐렁한 감이 있지만 끼워진다. 그러나 오른쪽이 살짝 기울어 수평이 안 맞다.

2. 45도로 돌려 찍고 브림 받치기 : 서포트없어도 키홀이 무너지지 않으며 잘 들어도 가나 브림 자국이 흉하게 남는다. 각인이 약간 손상되고 오른쪽으로 살짝 기울었다.

3. 30도 회전하고 아랫면을 깍아 측면을 바닥으로 한다. 브림만큼은 아니지만 측면에 바닥이 보여 보기 흉하다. 십자홀은 정상이다. 각인도 약간 무너지며 오른쪽 약간 기움

4. 공통적으로 오른쪽으로 기우는 문제가 있고 헐렁해 십자홀의 두께를 1.5에서 1.3으로 줄이고 길이를 4.2에서 4.0으로 줄인다. 조금 빡빡해도 잘 들어가고 오른쪽 기우는 문제 약간 호전됨.

5.십자홀 원래 스펙에 맞게 폭 1.2 길이 3.9로까지 줄였다. 수직은 폭 1.1 길이 3.8이다. 들어가지만 조금 빡빡하다. 4번보다 덜 빠질거 같다.

6.윗부분이 어차피 무너지니 아예 삼각형 구멍으로 윗부분을 미리 잘라내 모양을 다듬었다. 출력상의 문제인지 오히려 아랫변이 무너져 잘 안 들어간다.

7.5번에서 키캡 1미리, 원통 1미리 줄이고 우수 품질로 뽑는다. 우수 품질이라 각인 선명하고 품질도 좋다. 그러나 키캡만 1미리 낮아졌고 원통은 1미리 줄여도 들어가는 길이는 차이가 없다.

8.원통 1미리 더 줄여 3미리로 만들고 아래쪽에 0.1미리 정도 깍아 서포터 지지 영역 만들어 덜 무너지게 했다. 결합 잘되고 이전 키캡에 비해 2미리나 낮아졌다.

 

여기까지 뽑은 테스트 키캡을 일단 정리한다. 앞면을 보면 다 비슷하되 45, 30도 세워 찍은건 확실히 무너진다. 이건 해법이 아니라는 얘기다. 7, 8번이 우수 품질로 뽑은건데 역시 시간이 오래 걸리는만큼 각인이 선명하다.

후면도 다 그럭저럭 잘 나왔다. 어떻게 뽑든 안끼워지는 건 없고 다 끼워진다. 이걸 지레 겁먹고 안 뽑아 보고 신발을 만들어 끼웠다니 참 후회스럽다. 뭐든 해 보고 되는지 안되는지 확실히 한 후 대안을 찾아야 한다.

아직 다 완성된 것은 아니고 대량 생산을 위해 몇가지 더 점검해 봐야 할게 있다. 너무 서두르지 말고 천천히 개선해 나가자.

서포트를 매번 받치는게 귀찮고 슬라이스에 따라 결과가 일관되지 않는 문제가 있다. 또 어떤 경우는 십자홀에도 서포트를 만들어 귀찮게 한다. 어떤 옵션을 선택하든 항상 원하는 모양대로 뽑기 위해 자체 서포트를 만들어 보았다.

십자홀 아래를 평평하게 했으니 여기다 사각 서포트를 받친다. 간격은 0.2, 0.3, 0.4 셋을 시도해 봤다. 셋다 분리는 잘 되고 과하게 무너지지 않았다. 2는 붙은채로 떨어지고 3, 4는 서포트를 바닥에 남기고 떨어져 나중에 청소가 좀 귀찮을 듯 하다. 2로 하되 원통을 0.1미리 더 깍고 서포트도 같이 높이자.

키캡 두께 1미리, 원통 1미리 줄였으니 2미리 줄어야 하지만 실제로는 원통이 완전히 바닥까지 내려가지 않고 살짝 떠 있는 상태라 1.5미리 줄었다. 이 정도가 거의 한계치인 거 같은데 그렇다면 원통 길이를 3이 아닌 3.5로 해서 1.5미리 내리는게 나을 거 같다. 체리 스위치에도 완전히 다 체결되는 것은 아니지만 비교적 쓸만하다.

그리고 아랫면이 평평하니 너무 심심해 보이는데 구멍을 파서 각지게 만들자. 키캡을 1미리 줄였지만 신발 들어갈 2미리가 없어졌으니 0.5미리 정도는 구멍을 파도 된다. 이 구멍이 원통까지 지우는 바람에 분리된 채로 찍었는데 그 와중에 원통이 서포트에 걸려 있던 사고가 있었다.

길이는 딱 맞는데 원통이 십자홀에 들어가면 크랙이 발생한다. 폭이 좁다는 얘기인데 4번과 같이 폭 1.3, 길이 4.0으로 하자. 4번도 크랙이 약간 있지만 끼우기 너무 빡빡하지 않고 층 따라 생긴 크랙이라 위험하지는 않다. 그리고 뒷면 안쪽에 흘러내림이 약간 있어 스위치가 들어가다 마는데 서포트를 뒤로 더 바짝 민다. 원통 길이를 4.1로 해서 0.1미리 키캡에 잠기도록 한다.

마지막 테스트는 꽤 쓸만하게 나왔다. 높이 1.5 줄인 것도 나름 성과라고 할 수 있고 더 이상 신발은 안 만들어도 되니 노동력 절감에도 상당한 기여를 한다. 크랙이 약하게 있지만 이건 오히려 탄력이라고 볼 수도 있어 나쁘진 않다. 끼우기 너무 빡빡하지 않고 빼기도 너무 어렵지 않다. 더 수정해 봐야 큰 의미는 없을 듯 하니 이 정도만 하자.

이미 만들어 놓은 키캡도 신발만 약간 낮추면 못 쓰는 건 아니다. 하지만 별로 그럴거 같지는 않고 테스트용으로만 쓸거 같다. 이번에 꽤 진전이 있었지만 다음에는 어떻게 바뀔지 모르니 미리 너무 많이 찍어 놓지 말고 딱 필요한만큼만 찍어 사용하자.

오늘(221) 송기동 차장이 놀러 와 키보드를 구경시켜 줬는데 피치가 좁다길레 보니 손가락이 엄청 굵다. 나는 중지 끝부분이 16 정도인데 거의 18이나 되는거 같다. 이렇게 손가락이 굵은 사람에게 16.5피치는 좀 무리이다. 차후 대중화를 위해 피치를 더 늘릴 경우도 있을 수 있고 지금까지도 계속 바뀌어 왔으니 키캡은 필요할 때 만드는 걸로 하자.

22호의 펑션은 하판없이 제작했는데 메인도 굳이 하판이 필요한가 싶다. 어차피 서포트 받치고 뽑으니 수평, 수직각도 원하는대로 기울여 아래까지 벽을 내려 버리면 된다. 벽을 키홀까지 바짝 붙일 수 있어 폭을 꽤 줄일 수 있다. 나사 구멍도 애써 맞출 필요 없고 틴지와 케이블 접합부 등은 벽 안쪽에 부착한다. 펑션이나 팜레스트 접합부의 나사도 상판 위쪽까지 뚫을 수 있다.

웨지 또는 패드를 붙일 영역은 상하부 벽 안쪽으로 10~15미리 정도 확보한다. 패드 두께가 2~4미리로 두꺼워 일부만 붙이면 벽이 뜨는데 이건 하판이 있을 때도 마찬가지였다. 종이 테이프나 미끄럼 방지 테이프 등을 균일하게 발라 줘야 전체 수평이 맞다. 일부 뜨는 부분이 있더라도 힘 받는 부분이 아니면 괜찮다. 제작해 보고 미끌림이나 무게 등을 고려하여 패드 부착 영역은 다시 생각해 보자.

하판이 없으면 뒤집었을 때 납땜한게 보여 고생해서 만들었다는 걸 보여줄 수 있지만 미관상 난잡해 보이고 손상의 위험도 있다. 점프선이 고정되지 않으면 흘러 내리고 바닥에 끌리기도 한다. 이게 정 싫으면 1미리 두께 정도의 가림막을 만들고 벽 중간에 끼워 넣을 수 있는 홈을 파 걸어 놓기로 한다. 어차피 하판이 지지대 역할을 제대로 하지 못한다.

▶틴지 케이스는 상판 위쪽에 접합부를 만들고 하판에 나사길을 만들어 아래에서 위로 끼운다. 아래쪽에 케이블 홀더와 매크로 포트를 배치한다. 매크로 포트는 최초 3.5파이 오디오 케이블을 쓸려고 했는데 막상 붙여 보니 너무 크고 모양도 일관되지 않아 고정이 어렵다. 다른 분리형 제품이 3.5파이를 쓰니 일종의 고정 관념이 생긴건데 사실 3가닥으로는 행열이 다른 두 스위치를 연결할 수도 없다. 최소 4핀 정도의 부품을 찾아 보자.

디바이스 마트를 뒤지고 뒤져 GSH-2504라는 케이블을 겨우 구했다. 고작 1500원짜리인데 부품 종류가 워낙 많다 보니 딱 맘에 드는걸 찾기가 어렵다. 케이블과 케넥터가 다 별도라 수컷만 따로 파는 경우가 많고 암컷은 납땜을 직접 해야 한다. 양쪽으로 케이블이 있고 접합 가능한게 이거 정도밖에 없다.

이것도 케이블이 원형으로 뭉쳐 있으면 좋을텐데 각각이라 매크로 패드까지 가는 선은 둥근선으로 따로 만들어야 한다. 이외에 펑션쪽으로 가는 케이블도 필요한데 네트워크 케이블이 딱이지 않을까 싶다. 딱 맞는 부품 구하기가 참 어렵다.

나사, 볼트류, 케이블을 주문했는데 길이별로 다 필요하다. 이번에 구한 케이블은 용도에 딱 맞긴 하다. 이외에 알리에서 케이블 더 많이 주문해 놨는데 어떡하든 맞는 부품을 찾아 쓸 수는 있을 듯 하다.

▶자판은 큰 변경 사항이 없되 날곰 키홀을 사용하여 새로 만든다. 크게 바꾼 거 없으니 21호의 자판을 그대로 가져 오면 된다. 다만 조합키 배치와 자판 각도를 조정한다. 이제 브리지로 각도를 조정할 수 있고 분리형이면 자유 각도이니 자판 자체를 많이 기울일 필요가 없다. 팔을 평행하게 쫙 벌리면 0도여야 맞지만 책상 면적을 너무 많이 차지해 어느 정도는 오므려서 쓸 것이다. 팔을 일자로 뻗으면 40센치, 거의 풀배열 키보드만큼이나 벌려야 하니 말이 안된다.

기본을 4도나 주면 팔을 벌렸을 때 과한 각도가 되고 오므릴 때 브리지의 각도가 고작 8도 정도밖에 안된다. 기본을 2도 정도로 약하게 주어 넓게 벌렸을 때에 맞추고 모았을 때는 브리지로 각도를 조정한다. 기본 각도가 너무 없으면 키보드가 V자형이 되어 부피를 많이 차지하니 2 또는 3도 정도가 적당하다.

조합키는 원래대로 회전하지 않고 배열한다. 자판8도 편집5도인 19호 기준으로 자판이 2도이면 편집은 -1도가 되어야 하는데 그냥 0도에 맞추자. 팔을 바깥쪽 아래로 뺐을 때 2도 정도 기울어진다고 정의하면 된다. 이렇게 보면 자판 3도도 괜찮아 보인다. 브리지가 12도이면 자판은 8도가 되고 편집은 6도가 되니 대충 19호와 맞다.

바깥쪽 조합키는 손목을 회전해서 누르므로 지금까지와 마찬가지로 수직 배열한다. 안쪽 2개 조합키는 일관된 거리를 위해 문자키와 같이 회전시키자. 바깥 조합키는 조금씩 위치 조정하여 문자 영역과 너무 이질적이지 않게 배치한다.  Esc는 조금 더 내리고 CapsCtrl 간격도 조금 더 줄인다.

21호와는 반대로 문자 영역에 게이트론 청축 스위치를 쓰고 나머지 영역에 GTMX 청축을 쓴다. 10호에서 게이트론 스위치를 잠시 써 봤었는데 소리는 경쾌하다. 다만 키압의 측면에서는 GTMX의 감이 더 좋은 거 같다.

 

기획은 여기까지이고 나머지는 설계, 제작 단계에서 시행착오를 거쳐 가며 기록해 놓기로 한다.

23호 설계

상판, 브리지, 팜레스트, 키캡 등에 대한 설계가 많이 바뀌어 제작 절차가 좀 복잡해졌다. 일단 날곰으로 찍는 건 확정했으니 키홀은 큰걸 써야 하니 22호와는 좀 다르고 오히려 21호와 더 유사하다. 다음 절차대로 23호를 제작한다. 이 절차는 시행착오를 거쳐 수정한 사항까지 반영한 것이다.

 

플레이트

- 문자 영역은 21호와 같으며 수정할게 없다. 21호의 플레이트를 그대로 가져 오면 된다. 제작 과정에 빨간색으로 주의할 사항과 변경할 부분만 정리해 놓기로 한다. 다만 부품은 조금씩 바뀌어 22호의 것을 채용 하는데 나사구멍은 2.9로 직경 늘렸고 모서리 라운드 반지름도 늘린다. 문자, 엄지, 안쪽 조합키까지 놓고 2도 기울이는 것까지 하고 다음 작업을 이어서 한다.

- 편집은 회전없이 문자 좌하단 8미리 아래에 배치하되 2미리만 내린다. 바깥 조합키는 간격을 적당히 조정하여 Esc가 너무 위에 가지 않도록 한다.

- 수평 6, 수직 6도 기울이되 회전은 교환 법칙이 성립하지 않아 순서를 지켜야 한다. 먼저 기울인쪽이 짧아지고 비스듬해진다. 바닥에서 1미리 들고 가장자리에 구멍을 설치하여 수직으로 잘라 직사각형을 만든다. 구멍이 플레이트에 모두 붙도록 하여 사선이 없도록 하고 폭과 길이의 소수점을 없애 남은 플레이트를 정수 크기로 만든다. 이후 작업의 편의를 위해 남은 플레이트 부분을 0,0에 위치시킨다.

- 4미리 두께로 4변에 수직 벽을 두르고 길이를 각 변에 맞추며 끝부분에 정확히 정렬한다. 하판 아래 평면에 위쪽으로 사각 구멍을 댄 후 구멍을 0.1미리 위로 들어 그룹화하여 벽 위쪽을 잘라낸다. 구멍을 들지 않고 정확히 자르면 상판과 벽사이에 미세한 경계면이 생기므로 일부 겹치도록 해야 한다.

- 왼쪽에 55,2 90,3에 나사 구멍과 찌꺼기 홈을 배치한다. 홈은 벽면에서 0.1미리 띄고 나사 구멍 중앙에 배치하되 정렬시 나사 구멍의 위치가 바뀌지 않도록 주의한다. 위쪽 9810*8 배선홀을 배치한다.

- 아래쪽에 49,385,5에 팜레스트 고정 나사 구멍와 찌꺼기 홈을 배치한다. 편집키 중간 부분의 보 위치에 맞추어야 스위치와 간섭이 없다.

- 오른쪽 브리지 홀 배치 : 브리지 테스트의 부품 가져와 조립한다. 135.5(-2.5) 높이 12에 아래쪽 걸쇠 배치. 원점을 우하단 4/4 분면으로 옮겨 둔다. 윗 걸쇠 X=0, Y=100, Z=12에 배치하면 딱 맞음. 걸쇠의 모서리가 플레이트 모서리와 일치한다.

- 뒷면에 틴지홀 배치 : 31*7 높이의 구멍을 플레이트 우상단 배치. 틴지 케이스 높이는 6.4이며 바닥에서 0.7만큼 뜸. 틴지 뚜껑과 나사 구멍 가져와 윗쪽 벽면에 배치하고 플레이트에 닿도록 높이 조정. 측면 홈을 20미리 길이로 오른쪽벽 안에 놓음. 틴지 사본을 옆에 붙인 후 매크로 포트 구멍, 케이블 홀을 벽 안으로 밀어 넣음.

- 플레이트 윗면 바닥에 9*90*4 막대 깔아 윗면은 폭 12로 늘림. 차후 이 부분에 미끄럼 방지 패드 등을 깔 계획임.

- 4면에 모서리 라운드 처리한다. 정렬후 밖으로 1미리씩 빼는 걸 잊지 않도록 주의한다.

- 전체 그룹화하여 완성한다.

 

이전 버전에 비해 복잡하게 얽히는게 없고 위치 맞출게 없어 오히려 작업하기는 더 간편하다. 첫 버전은 어디까지나 테스트로 뽑아본거라 수정할게 많다.

서포트 10%로 했는데 주루룩 기분 좋게 잘 뜯긴다. 나사 구멍에도 서포트를 박아놨는데 메인을 뜯으면 같이 뜯겨 나온다. 키홀은 무난한 크기여서 모든 위치에 제대로 잘 꽂힌다. 1미리 올린 덕에 좌하단 편집키 바닥에 겨우 안 닿는다. Esc는 적절한데 Ctrl이 너무 떨어져 조금 더 접근시켜야 한다. 현재폭 142인데 140까지 가능할 듯 하다.

상판 일체형이라 수평은 기가 막히게 잘 맞으며 틀어질 곳이 없다. 왜 진작 이 생각을 못했는가 모르겠다. 사방의 나사 구멍은 주변 부품 만들면서 맞춰 봐야 한다. 팜레스트 영역에 나사 끼워 봤는데 조금 빡빡하게 잘 들어간다. 그런데 상판과 벽 사이를 하판 기준으로 잘랐더니 이음선이 보인다. 원래 이러면 안되는데 팅커캐드의 실수 연산에 좀 문제가 있다. 구멍을 0.1미리 위로 든 후 자르면 벽과 상판이 온전히 합쳐진다.

오른쪽 플레이트는 왼쪽 복사 후 대칭시키고 틴지, 펑션, 매크로 포트 접합 지점을 삭제하면 된다.

2232차본 제작 : 주변 접합부를 만들면서 같이 수정할 사항은 제작 방법에 정리해 두었으며 플레이트 자체의 문제도 있다. 가장 심각한건 조합키의 배치인데 명확한 기준없이 눈대중으로 맞추다 보니 너무 벙벙하게 뜬다.

   

CA3미리 안쪽, 1미리 위로 올리고 EC1미리만 아래로 내려 공간을 줄였다. 21호의 자판 8도 기준으로는 이게 맞았는데 지금은 문자가 고작 2도 기울어 있어 Ctrl이 너무 바깥으로 밀려나 있다. Esc는 문자키의 솟아 오른 부분과 거의 맛닿아 있어 더 안쪽으로 이동할 수 없다. 안쪽의 Fn, Num 간격은 대충 맞다.

뽑아 보니 CA를 안쪽, 위쪽으로 1미리씩 더 올려도 될 듯 하다. 짜투리 필라를 썼더니 투톤으로 나왔다. Ctrl은 대충 위치가 맞는데 Alt는 혼자 벗어나 있다. 꼭 왼쪽변을 맞출 필요없이 CapsAlt를 중앙 정렬하자.

조합 키캡의 크기를 키웠는데 EscCtrl은 현재 크기가 맞다고 해도 CapsAlt과 과연 저렇게 클 필요가 있나가 고민이다. 그런데 또 막상 그 자리에 문자키를 꽂아 놓고 보면 Alt키의 경우 너무 작다는 느낌이 확 든다. 약간 크다는 건 알고 있지만 자판 각도에 따라 달라질 수 있어 지금은 그냥 이대로 가자.

조합키를 재배치하니 플레이트 크기가 4미리나 줄어 든다. 게다가 벽면을 더 붙일 수 있어 더 줄일 수도 있다. 크기 조정하는 김에 소수점 이하는 가급적 없애 버리고 정수 크기로 딱 맞추자. 수직벽으로 깍아 내니 그래도 되며 주변 부품과 결합할 때 항상 원점 기준으로 수치를 계산할 수 있어 간단해진다.

플레이트 크기 조정하여 138*150에 맞추었다. 정수 단위라 부품 배치하고 편리하다. 틴지 케이스 접합부 만들어 넣고 펑션과 브리지는 높이가 바뀌어 다시 수정해야 한다. 10시간이나 기다릴 수 없어 접합부 주요 부분만 다시 출력했는데도 2시간 31분이 걸린다. 찍어 보니 문제점이 아주 많다.

- 일단 케이블 홀이 누락되었다. 매크로 포트 옆에 10*8 구멍 하나 뚫는다.

- 틴지가 너무 깊이 숨어 버려 꽂을 수가 없다. 최소 2미리 빼야 한다.

- 틴지 포트 위에 케이블 머리 들어갈 공간이 2미리 필요하다.

- 틴지와 바닥차 0.3이 서포트 자국으로 인해 충분치 않아 0.6으로 늘린다.

- 홈은 잘 맞긴 한데 바닥을 높이지 말고 채운다.

- 매크로 포트 너비와 높이 0.5씩 늘리고 숫컷 윗부분 공간 6*3을 위에 놓는다.

- 틴지 들어갈 홈을 31*7로 하고 틴지 케이스를 중앙에 놓아 좌우 0.5 여백 확보

 

주로 틴지 케이스쪽 수정 사항인데 이건 따로 테스트를 뽑아 본 적이 없어서 그렇다. 두 번 테스트 뽑아 보고 케이블 홀과 고정장치까지 만들어 결합 테스트를 했다. 틴지 바깥쪽에 라운드 처리가 빠졌다.

수정된 브리지도 뽑아 장착 확인했으니 이제 전체를 다 뽑아 본다. 45도 각도 준 곳에도 자꾸 서포트를 세워 오버행을 60으로 변경했다. 10.24 시간 걸리는데 인필을 20%만 줬다. 50%로 해도 10.54이니 그리 오래 잡아 먹지는 않는다. 최종은 아니고 아직도 테스트이다.

 

- 틴지가 겨우 걸림. 윗 뚜껑 1미리라도 더 두껍게 만들 것

- 틴지 고정 옆면 나사 구멍. 밖에서 안으로

- 엄지 아래쪽에도 플레이트 확장 : 윗변과 마찬가지로 12미리폭으로 확장하되 편집 영역 직전까지인 70 길이로 했다.

 

펑션 영역

22호는 역방향으로 찍었는데 키홀 크기 때문에 이번에는 서포트 받치고 정방향으로 찍기로 한다. 키홀의 일관성 문제도 있고 각도에 의한 층이 있으려면 다 있는게 보기도 좋고 위에 엠블렘을 찍기도 편하다.

 

- 36*120*4 플레이트를 배치한다. 길이는 어차피 자를거라 조금 넉넉하게 잡아도 된다.

- 가로 16.5 세로 15.5로 키홀 4개 배치하고 그룹간 4미리 띄운다.

- 플레이트를 원점에 놓고 2, 8 위치에 키홀을 놓고 그룹화한다.

- 수직 6도 기울이고 1미리 위로 띄운다.

- 4면에 벽 두르고 하판 평면 위에 사각 구멍 만든 후 상판 숨겨두고 구멍을 0.1미리 위로 이동하여 자른다. 벽과 상판이 이만큼 겹친다.

- 아래 위에 구멍 대고 잘라 상판 높이와 맞추고 벽을 수직으로 만든다. 아래 먼저 맞추고 좌하단으로 원점 옮긴 후 위를 맞추면 된다.

- 상판 사본 옆에 놓고 나사 구멍 구멍, 케이블 홀 가져온다. 치수대로 배치해도 되지만 이게 더 간편하다. 나사 구멍 안쪽에 찌꺼기 홀을 배치한다.

- 케이블홀 반대편에 드라이버 구멍을 판다. 폭이 9미리는 되어야 전동 드라이버가 들어간다.

- 위의 남는 공간에 평탄한 사각형 올린 후 엠블렘을 높이 1.5로 새긴다.

- 모서리에 라운드 처리한다.

 

벽이 키홀 영역을 살짝 침범했지만 납땜 공간이 조금 협소할 뿐 스위치에 걸리지 않아 벽 때문에 두꺼워지는 부분은 없다. 나사를 채우면 딱 맞게 붙는데 끝이 살짝 들린다. 나사가 들어가며 생긴 찌꺼끼 때문인 듯 해 풀어서 청소했더니 많이 개선되었다. 접합부 나사홀에 찌꺼기 홀을 만들기로 했다.

브리지의 홀이 잘 동작한다면 펑션도 착탈식으로 만들어도 될 듯한데 분리가 잦지 않으니 일단 나사로 고정하는 방식을 택했다. 지금은 분리 가능하다는 게 중요하지 실제 분리가 꼭 안되어도 상관 없고 가능하다는 것만 기획에 포함하면 된다.

1차에서 찌꺼기홀, 라운드, 엠블렘, 드라이버 구멍 조정해서 2차를 찍었다. 점프선 건너오는 구멍이 작은거 같아 10*8로 대폭 늘렸다. 건너온 선을 고정할 장치도 필요한데 아직 어떤 선을 쓸지, 실제 분리를 할건지도 결정되지 않아 보류했다. 그리고 하단키의 핀이 바닥에 살짝 닿는데 일단은 핀 구부려 넣기로 한다.

2차 수정 : 플레이트의 높이가 바뀌면서 나사 구멍과 배선 홀의 위치가 바뀌었다. 이왕 수정하는 김에 아예 플레이트에 합쳐서 찍을까 싶기도 한데 어차피 핀 사이가 멀어 점프선 없이는 안된다. 선 좀 늘어 뜨리더라도 그냥 분리형으로 찍자.

높이 맞추느라 아래쪽 1.5미리, 위쪽 1미리 줄였다. 구멍으로 깍기만 했지 벽을 밀 생각은 하지 못해 위쪽벽에 너무 얇아져 구멍이 생겼다. 나사 구멍이나 배선홀은 잘 맞다. 어쩔 수 없이 벽 다시 조정해서 새로 출력하되 이번에는 서포트 15%로 했다.

틴지 케이스

기존의 틴지 케이스를 가져와 약간 확장하는 식으로 만들었다. 틴지가 들어갈 공간과 포트부는 딱 맞으니 굳이 건드릴 필요 없다. 포트 위의 뚜껑은 플레이트에 접합할 부품만 만들어 두면 된다. 틴지 케이스 높이가 5.7이고 플레이트 바닥에 6미리를 띄울거라 0.3미리만큼 공중에 떠 있도록 한다.

아래쪽에는 매크로 포트를 붙일 구멍만 13*6크기로 배치했다. 디바이스 마트에서 구입한 포트 기준이므로 이후 언제든 바뀔 수 있다. 따로 고정할 수 있는 장치는 만들지 않았고 접착제로 붙이기로 한다. 플레이트에 구멍 뚫어 놓고 4미리만끔 밖으로 빼서 고정하먼 된다. 아래쪽에도 나사 하나 박을까 하다가 공간이 넉넉치 않아 쐐기 모양의 홀에 걸치는 방식으로 디자인했다.

각 부품을 만들어 두고 플레이트 만들 때 붙여 넣는다. 윗뚜껑은 윗벽에 붙인 후 서포트 생기지 않도록 높이를 키운다. 쐐기는 벽면 0.3미리 위쪽에 0.1미리 안쪽으로 박히도록 배치하고 틴지 케이스의 홈 30보다 짧은 20으로 했다.

플레이트에 붙여 보니 문제가 많다. 케이블 머리 수납할 공간까지 생각하면 애초의 틴지 케이스 뚜껑에 해당하는 부품이 필요하다. 초록색 뚜껑을 미리 만들어 두고 케이스에 결합하도록 했다. 매크로 포트는 숫컷 머리 부분까지 고려했고 케이블 홀은 플레이트에서는 구멍이지만 틴지 케이스가 2미리 두께로 받치도록 했다. 안그러면 케이블이 이탈하여 불편하다. 케이블 고정 장치도 만들어는 두었는데 뚜껑은 새로 만들어야 한다.

케이블을 받치는 바닥을 플레이트에 붙일 수도 있을 거 같지만 납땜 후 케이블을 홀에 넣고 덮어야 하기 때문에 안된다. 틴지 케이스에 있어야 케이블 먼저 들어가고 고정해서 덮을 수 있다. 수정본 뽑고 플레이트에 적용해 보니 또 다른 문제가 있다.

케이블 고정 홈이 너무 안쪽에 있어 매크로 포트 배치에 걸려 뒤로 이동한다. 측면 홈으로 걸치는건 아무래도 아래쪽이 처지니 결국은 옆면 나사 구멍이 필요하다. 케이블홀 아래쪽에 나사 구멍을 배치하고 측면 홈은 제거한다. 뚜껑은 틴지 포트가 아슬 아슬하게 걸리는데 1.5미리 정도 더 안쪽으로 확장한다. 틴지 넣는 홈의 길이가 약간 길어 안에서 노는 경향이 있는데 0.3미리 축소했다. 바깥쪽 라운드 처리도 필요하다.

틴지 케이스 앞부분 높이는 6.4이고 뚜껑은 7미리에 놓으니 0.6만큼 갭이 있는데 이는 서포트 자국으로 인한 여유분이다. 실제로는 칼질해서 다듬어 0.1이하로 바짝 붙여 케이스가 바닥에서 0.5미리 떠 있도록 한다. 측면 나사 구멍과 케이스의 나사구멍도 0.5만큼 높이차를 두었다.

틴지 노는 공간이 약간 타이트해졌는데 아직도 조금은 논다. 이 부분은 남땝으로 인해 늘어나는 부분에 대한 여유라고 생각하면 된다. 뚜껑이 틴지도 잘 잡아준다. 매크로 포트나 케이블 고정 장치도 다 잘되었는데 측면 나사 구멍이 안으로 4미리 들어간 건 삽질이다. 플레이트 벽에 밀착되니 이 구멍이 안으로 들어갈 이유가 없는데 잠시 착각했다. 이 부분만 수정해서 다시 뽑자.

다시 뽑은건 비교적 성공적이다. 플레이트의 뚜껑 윗부분이 서포트를 15%로 해도 거칠게 나오는데 이 부분은 어쩔 수 없이 칼질을 좀 해야겠다. 다 잘 끼워지는데 아직도 오류가 있다. 틴지를 바닥에서 0.5 띄우기로했으면 매크로 포트도 그만큼 띄워야 맞는데 그게 고려되지 않았다.

뚜껑쪽을 깔끔하게 손질하기 쉽지 않을 거 같고 현재도 높이에 약간 여유가 있어 0.5를 띄우는건 좀 그렇고 0.3만 띄웠다. 케이블홀은 적당히 넓어 더 조정하지 않아도 될 거 같은데 매크로 포트보다 낮으니 1미리만 더 높였다. 여기까지 플레이트에 새로 적용한다.

팜레스트

21호에서 초안만 만들어 봤는데 너무 작았다. 손바닥 닿는 곳이 예상보다 멀리 있고 키보드 바깥으로 10미리 정도 벗어 나기도 한다. 나사 구멍은 49, 85에 뚫어 놨으니 간격은 36이다. 접합부 두께는 4미리로 하고 10미리 띄운 후 65 높이까지 아래로 내려가 -10까지 걸치면 될 듯 하다. 이런건 뽑아서 손바닥을 얹어 봐야 알 수 있다.

좌하단 좌표는 -10, 60이고 폭은 80, 키보드와는 10만큼 간격을 두었다. 상판 두께 5미리에 2미리 안쪽으로 1미리 깊이의 홈을 파고 여기에 마우스 패드를 잘라 올린다.

일단 수평이 안 맞은데 중요한 건 아니다. 나사 끼기 어려워 나사길을 더 길게 내거나 다른 방법을 찾아야 한다. 바깥 아래쪽으로 10미는 더 내려 가야 하며 왼쪽은 5미리 오른쪽은 8미리로 고도차를 둔다. 기성품은 높이 15에 폭은 68이며 길이는 보통 키보드에 맞추되 중앙 부분은 사실상 쓰지 않는다. 5미리 패드를 깔면 10~13미리 높이가 된다.

두번째는 요렇게 만들었는데 치수는 조정했지만 거는 쪽이 말이 안된다. 이래서는 힘을 받을 수도 없고 나사를 박기도 힘들다. 이건 해 보나 마나 안되는거니 다시 만들자. 다행히 예열만 걸어 놓고 출력은 안했다. 플레이트 좌하단에 나사 박을 평평한 공간을 만들고 위에서 아래로 박기로 한다.

가로 7 좌표에 9*9*5크기의 박스깔고 그 위에 높이 5의 구멍을 얹고 나사 구멍을 아래로 박는다. 점합점은 공차 0.2로 주고 위에 나사 구멍과 나사길을 내 놓았다. 오른쪽 구멍은 편집키에 걸리지 않는 바깥에 배치하여 나사 체결이 쉽도록 했다.

테스트 결과 대략 치수는 맞는데 왼쪽 걸쇠 아래쪽 서포트 뗀 자국 때문에 우둘투둘해 높이가 맞지 않다. 이 부분은 섬세한 칼질이 필요하다. 또 전체 8미리라 10미리 나사를 박으면 약간 튀어 나오는 문제가 있는데 차후 나사 길이를 잘 조정하자. 중간 부품은 차후 결합하기 쉽도록 따로 정리해 두었다.

시제품 제작을 위해 뽑아 보니 잘 맞긴 한데 안쪽으로 뻗치는 팔이 짧아 나사가 들어가면 쪼개지는 문제가 있다. 3미리 정도 더 늘린 후 핑크 매트 필라로 새로 뽑았는데 또 실패다. 구멍을 통째로 그룹핑해서 걸쇠가 너무 낮게 나왔고 서포트를 받치지 않아 무너져 버렸다. 다시 뽑기 전에 자체 서포트를 0.3미리 간극, 앞뒤는 0.5 간격으로 받쳤다.

뽑아 보니 떼기는 약간 어렵지만 윗면 품질이 훨씬 더 곱게 나온다. 다만 이 경우 서포트 위가 조금 불안한데 나사길이 너무 깊아 박혀 있어 위로 1미리 옮겼다. 이 작전이 괜찮으면 틴지 케이스 뚜껑 부분에 적용해도 될 듯 하다. 또 걸쇠 부분이 팔과 겹치지 않아 따로 찍히는데 0.2미리 정도 겹쳐 주었다.

출력물은 성공적이다. 자체 서포트는 잘 분리되었으며 윗면이 곱게 나온다. 팔과 걸쇠를 겹쳐 주었더니 연속적으로 튼튼하게 잘 연결되었다. 틴커캐드의 실수 연산 버그가 많아 잘 피해 다녀야 한다. 성공적이지만 이것도 어디까지나 테스트일 뿐 각도나 크기는 차후에 더 조정해야 한다.

키캡

일괄 우수 품질 350%로 찍는다. 인필이 들어가는 경우가 거의 없어 시간차는 미미하다. 우수와 표준의 품질차가 많지는 않아도 키캡을 늘 찍는 것도 아니니 시간을 좀 더 쓰고 품질을 높이자. 각인의 선명함도 대중화에 꼭 필요하다.

조합키와 엄지키만 빼고 같은 모양이라 복제하기 쉽다. 캡션만 4*6 정도의 크기로 맞추고 좌상단에 위치시키는 정도로 통일시키자. ESC는 굳이 두께를 키울 필요없이 원통의 길이만 늘리면 되니 이런 점은 편리하다. 대량 생산이 가능한지도 봐야 하니 숫자와 문자 엄지만 일단 찍어 봤다. 밑면이 좁아져 안착이 어려운데 엄지는 찍다 하나 쓰러졌다. 다행히 노즐 밑의 찌꺼기만 잘 청소해 주면 큰 문제는 없다.

문자 36개를 일괄 찍는데 7시간 걸렸고 큰 사고없이 잘 찍었다. 서포트는 일부 베드에 남아 있는 것도 있고 키캡에 딸려 오는 것도 있는데 분리하는데 별 어려움은 없다. 실사용 느낌도 체크해 봐야 하니 21호에 장착해 봤다.

필라가 좋으니 각인이 선명해 좋다. 착탈에 별 문제 없고 삐뚤어지거나 기울어지지도 않았으며 결속력도 적당한 편이다. 주변보다는 확실히 낮아진 거 같은데 높이차는 아직 실감하기 어렵다. 이론상 높이가 낮아졌으니 안밖열이 조금 더 벌어지는데 육안으로 그 정도 차이를 실감하기는 어렵다. 좀 더 써보고 나머지 부분도 작업해서 끼워 넣자.

순차적으로 하나씩 출력하여 21호에 끼워 써 보고 있는데 Ctrl이 좀 이상해서 살펴 봤더니 십자원통의 중앙이 맞지 않다. 어째 이런 실수를 했을까. 이거 자체는 수정하기 쉽지만 홀의 위치가 바뀌면 플레이트의 키홀도 조정해야 한다. 그냥 쓸까 싶기도 하지만 센터가 맞지 않으면 키를 누를 때 한쪽으로 쳐질 수 있다.

다행히 아직 플레이트가 최종은 아니니 수정하기로 한다. 점검해 보니 문자 키캡 높이 15에서 19미리로 4미리 늘었는데 원통은 1미리만 올렸다. 1미리 더 올리고 서포트가 너무 잘 붙어 이건 0.3미리 띄웠다. 키캡이 1미리 바깥으로 밀리니 키홀이 1미리 안쪽으로 와야 한다. AltCtrl의 중앙이 아니므로 1미리 더 안쪽으로 같이 와야 한다.

회전된 플레이트를 수정하는 작업은 만만치 않다. 전체 그룹 해체해서 수평, 수직 각도를 원점으로 돌린 후에야 키홀 위치를 바꿀 수 있다. 평면을 위에 얹어서는 직교 좌표계가 안나와 딱 1미리 이동할 수 없다. 신기하게도 회전, 수정, 재회전하면 원래대로 돌아오지 않는데 바닥에서 1미리 띄운 걸 편집하면 1.07이 되어 강제로 1로 맞추었다. 우여곡절끝에 수정은 완료해 두었는데 플레이트 틀어지지 않았나 걱정된다.

0.3 갭으로 뽑았더니 서포트가 훨씬 잘 떨어진다. 다음부터는 0.3으로 해야겠다. 확인안하고 넘어갈 수 없으니 플레이트 수정하여 이 부분만 테스트를 뽑았다. 큐라에서 딱 원하는 부분만 잘라내서 뽑아야 한다.

다행히 잘 맞고 플레이트도 틀어진 부분은 없는 듯 하다. 이래서 키홀은 한번 정할 때 잘 결정해야 하며 키캡 크기도 함부로 바꾸기 어렵다.

 

브리지

아래쪽 거는 부분의 높이가 8인데 플레이트 위로 삐죽 나오는 모양새라 이 부분을 약간 깍고 경사를 주었다. 두 개의 브리지를 만들었는데 가장 좁은건 6도에 14미리이다. 한쪽 각도와 위, 아래 길이의 평균, 즉 중간 지점의 거리로 명명하기로 한다.

각각 다른 색상으로 출력하여 바꿔가며 쓰고자 한다. 표준 350%로 각 1시간, 2시간 걸린다. 작은걸 매트로 뽑아 봤는데 심각한 문제가 발견되었다. 물렁한 필라멘트이다 보니 탄력이 너무 좋아 걸어도 끄덕거리고 힘을 주면 빠져 버린다. 공차 0.5가 너무 많 걸리는 고리 길이가 짧다. 또 결국에는 고정을 위한 나사 구멍도 뚫어 놔야겠다.

윗부분은 건드리지 않고 아래쪽 걸솨만 새로 수정했다. 삼각형 모양의 돌출부가 1미리밖에 안되어 힘이 없는데 2.5미리로 대폭 늘렸다. 깊이 공차, 너비 공차 모두 0.2로 빡빡하게 맞췄는데 너비는 좁더라도 위쪽에서 조금 누르면 된다. 홈의 수직 공차는 0.4로 그대로 유지했다. 나사 구멍은 윗부분에 하나 파 놨다.

나사 구멍은 아주 잘 맞아서 차후 고정용으로 쓸만하다. 그런데 너비 공차 0.2는 조금 무리였던지 억지로 끼워도 휘어 버린다. 암컷을 약간 위로 올러 너비 공차를 0.4로 조정하고 막대 끝부분에 가로바의 탄력을 주기 위해 0.3미리 삼각형을 조금 파 놓았다. 갈수록 복잡해지고 있다.

다시 뽑은건 조금 빡빡하지만 들어간다. 측면에 0.3미리 삼각형이 탄력에 약간 도움이 되는 거 같은데 이 부분을 0.5로 늘리고 일단락하자. 실제 예는 뽑아서 칼질을 하든 나사질을 하든해서 끼워 맞춰야 할 거 같다. 시제품이 이 이상 정교하기는 어렵다.

14는 최소 거리인 셈인데 6도이면 자판은 8도이다. 더 기울여 8/14로 만들어도 된다. 0도면 대략 100 정도 거리여야 맞고 2도면 70, 4도면 50 정도가 비율상 맞을 듯 하다.중간 각도인 533도 가능하다. 물론 실제로 사용해 봐야 정확히 평가할 수 있다. 450 브리지를 하나 더 만들었다. 흰색이라 눈에 잘 안 띄는데 533은 다른 색으로 뽑자.

와이어링 점검

현재 틴지는 7*14=98로 쓰고 있는데 펑션이 왼쪽으로 이동함으로써 배선이 좀 복잡하게 되었다. 이걸 6*16=96으로 쓸 수 있다면 배선이 간단해지고 외부 매크로까지 키 개수가 딱 맞다. 이럴려면 틴지의 핀 22개를 사용해야 하는데 이게 가능한지 점검해 보자. 총 핀이 32개니 가능하지 않을까 싶기도 하다.

작년 524일 조사해본 바로는 21개까지만 쓸 수 있다는데 게시글 작성자의 기준일 뿐이라 더 많을 수도 있다. D0, D1OLED용으로 쓴다는데 그냥 핀으로도 쓸 수 있지 않을까? D4, D6도 남는 핀이다. https://www.pjrc.com/store/teensy.html에서는 25개까지 가능하고 22개를 쉽게 쓸 수 있다고 한다.  

검색해 봐도 기술 문서는 잘 못 읽겠고 그냥 덮어 놓고 시도해 보자. 다들 삽질해서 알아내던데 플러싱해서 되는지 확인해 보면 된다. 두 개의 핀을 더 쓸 수 있다고 가정하고 16*7=112까지 시도해 보자.

처음에 F23, F24를 오른쪽 끝 남는 자리에 배치했는데 이러면 틴지가 왼쪽에 있어 건너가는 선을 따야 한다. 이 둘을 Alt 아래로 옮기고 마지막에 F22도 배치하여 최대 3개까지의 외부 매크로를 쓸 수 있도록 변경했다. 4핀을 준비해 놓아 13행이 가능하되 당분간은 2개만 쓸 계획이다.

 

["F1","F2","Esc","`","1","2","3","4","5","6","7","8","9","0","\\","PgUp"],

["F3","F4","Caps Lock","Tab","Q","W","E","R","T","Y","U","I","O","P","-","PgDn"],

["F5","F6","Ctrl","[","A","S","D","F","G","H","J","K","L",";","'","F15"],

["F7","F8","Alt","]","Z","X","C","V","B","N","M",",",".","=","/","Del"],

["F9","F10","F23","Pause","Prtsc","SLCK","F17","Shift","RAlt","BS","Space","Enter","Home","up","End"],

["F11","F12","F24","App","Ins","NLCK","F18","F19","F13","F14","F20","F21","left","down","right"],

[{x:2,a:7},"F22",{x:5,a:4},"F16","Win"]

 

중앙 부분이 조금 복잡하다. Han 아래에 Fn, Num을 배치하여 8열은 5JVQHanFnNum으로 연결한다. 5행은 PasFnSaveUndo를 지나간다. 6행은 NumWin만 지나가면 되면 F22는 배치에만 있을 뿐 쓰지 않는다. 외부 매크로는 2열 한가닥 4,5행 한가닥씩 세 가닥을 밖으로 뺀다.

핀배치는 8열까지 왼쪽에 두고 9열부터는 오른쪽에 둔다. 행은 좌우 따로 구분할 필요 없으니 아래쪽에 적당히 배열했다. 6행까지 씀으로써 왼쪽에서 오른쪽으로 건너갈 선이 14가닥으로 하나 늘었다.

 

이렇게 한 후 sj23으로 컴파일하고 틴지에 플러싱하니 바로 동작한다. R0C8에 대해 5가 잘 입력되고 열을 위로 올리면 4, 3, 2 숫자로 바뀐다. R1이랑 접촉하면 JNHW가 순서대로 나온다. D7C9를 붙이$   +*Win키가 동작하니 마지막 행도 잘 동작하는 셈이다.

새벽에 혹시나 해서 해 봤는데 한방에 되어 버려 너무 상쾌하다. 다른 문제가 더 있는지 모르겠지만 납땜 배선이 훨씬 더 단순해질 거 같고 직관적이며 별 쓸데는 없지만 16개의 여유분까지 생겼다. 역시 덮어 놓고 해 봐야 한다.

23호 제작

납땜

개별 부품들 웬만큼 완성된 거 같고 왼쪽 플레이트에 다 잘 결합되니 슬슬 제작을 시작해야겠다. 더 천천히 할려고 했는데 시간을 너무 많이 쓰는 거 같고 또 한양여대 강의 요청건이 들어와 서두를 필요가 생겼다. 강의는 안하더라도 집필서 한권은 써 놓을 필요가 있다. 맨날 키보드만 만들 수는 없으니 일단락지어야 한다.

설계 단계의 모든 성과를 반영하여 왼쪽 플레이트부터 뽑았다. 실제 시제품이니 펑션과 팜레스트를 아예 붙여서 뽑을까도 생각해 봤지만 분리 가능하다는 것을 테스트해야 하니 일단 따로 뽑기로 했다. 조립이 좀 번거롭지만 그러면서 문제점과 개선점을 찾을 수 있으니 의미는 있다.

서포트는 비교적 잘 뜯긴다. 출력할 때 보온에 신경 썼고 안착 잘 된 상태로 충분히 식혀서 뗐는데도 수평이 약간 안 맞다. 이런 부분은 프린터로 맞추기는 불가능할 거 같고 테이프로 높이를 조정할 계획이다.

틴지 뚜껑 부분이 우둘투둘해 칼질이 필요하다. 이 부분은 이미 알고 있던 문제인데 그 외에 문자의 가로보에 V자 계곡이 있다. 모델을 점검해 보니 아래쪽 부분이 제대로 붙어 있지 않다.

 

21호의 모델을 가져온거라 그때부터 이 문제가 있었던 모양인데 17*18을 쓴다고 되어 있지만 실제로는 17*17을 사용했다. 다음에는 키홀 플레이트의 세로 높이를 높여야겠고 벌어지는지 확인도 꼼꼼히 하기로 한다. 이번에는 강도에 딱히 큰 문제는 없어 이대로 제작하기로 했다. 조립해 봤다.

펑션 잘 붙고 팜레스트 접합 지점도 비교적 무난하다. 브리지는 두 개 뽑아서 걸어 봤는데 빡빡한 느낌이 있지만 쓸만하다. 틴지 케이스는 가운데가 살짝 불룩하게 휘지만 바닥에는 닿지 않는다. 점검해 보니 나사구멍 수치상의 문제는 아니고 조립상의 뻑뻑함인 듯 하다. 팜레스트가 쪼개지는 문제가 있어 팔길이 3미리 늘려 분홍 매트로 다시 찍었다. 오른쪽 플레이트는 왼쪽 반전 후 펑션, 틴지 접합부 제거하고 출력했다.

(여기서부터 23호로 타이핑) 227일 아침부터 준비해서 납땜을 하기로 했다. 다이오드가 준비된 게 없어 마는 것부터 시작하여 다오이드 걸고 행 납땜을 먼저 했다. 배선도가 바뀌었지만 나름 직관적이어서 크게 헷갈리지는 않았다.

펑션의 행은 원래는 분리형으로 만들어야 하지만 8핀 소켓 주문한게 오지도 않았고 개념상의 분리이므로 점프선을 넘겼다. 홀을 만들어 놓은 건 좋은데 고정장치가 없다는 점은 조금 아쉽다. 중앙의 두 조합키가 위치적으로는 Han버튼 아래쪽이라 이 부분의 행 구조만 약간 주의하면 된다.

틴지는 변경된 핀 배선도에 따라 납땜하되 위치에 따라 선의 종류가 다르다. 오른쪽으로 갈 열은 점프선에 미리 연결해야 한다. 행은 일단 왼쪽에 연결한 후 점프선으로도 연결한다. 열납땜이 제일 어려운데 이번에는 새로운 방법을 시도해 봤다.

 

연선의 중간 부분을 탈피기로 밀어 틈을 만들고 연선을 벌려 핀을 그 사이에 끼우는 방식이다. 연선이라 납이 잘 스며들고 깔끔하게 잘 되는건 좋은데 핀간의 길이를 정확하게 측정해서 틈을 만드는게 무척 번거롭다. 저번에 사 둔 연선 점프선을 잘 써 먹긴 했는데 너무 두꺼워 조작이 번거롭다. 두꺼운데 피복은 연약해 열에 잘 녹아 합선이 발생한다.

왼쪽 납땜 후 점검해 보니 BRG 세 키가 계속 반복 입력되는데 열피복이 녹아 행 철사에 붙어서 그렇다. 행 철사를 아래로 구부려 떨어뜨리니 정상 동작한다. 우연이겠지만 한 열에서 세 키가 동시에 합선이 발생했는데 이때 인두를 좀 과하게 썼나 보다. 이어서 오른쪽 열을 납땜한다.

왼쪽에서 넘어온 점프선으로 열과 행을 연결한다. 배선 구조가 단순해져 별다른 어려움은 없었다. 열 납땜에 단선도 사용해 보고 옆으로 스쳐가며 납땜하는 방식도 써 봤는데 난이도는 다 비슷하다. 스치며 납땜하는게 간단할 거 같지만 선이 그 자리에 있지 않아 더 어렵다. 오히려 고리를 말아서 고정한 후 땜하는게 더 간단한 거 같다.

매크로 포트 납땜을 빼 먹어 열은 2열 중간에 붙이고 행은 4, 5, 6행에 연결했다. 포트 자체는 원래 순접으로 고정할려고 했는데 공간이 협소해 그냥 걸쳐만 놓았다. 차후 필요하면 밖에서 순접하자. 틴지 케이스에 틴지 넣고 케이블 고정 뚜껑 급하게 모델링하여 박아 넣고 매크로 포트 끼워 넣고 나사 세 개를 채웠다.

배선 길이를 여유있게 준비했고 틴지 위쪽이 꽤 넓은데도 공간이 협소하다. 다행히 선 짧은 건 없어 억지로 구겨 넣었는데 다행히 단선이나 합선은 발생하지 않았다. 오른쪽 플레이트에는 케이블 고정 장치가 없어 그냥 밀어 넣었는데 이러면 안에서 놀 거 같다. 다행히 잘 말아 넣기는 했는데 가늘고 유연한 케이블을 찾아 봐야겠다.

브리지, 팜레스트 조립하고 엠블렘에 도색까지 하여 조립 완료했다. 브리지는 물론 원하는 옵션으로 만들어 끼우면 된다. 중간에 합선이 한번 발생한 거 외에는 큰 사고는 없었고 생각한대로 무난히 잘 제작되었다. 팜레스트는 일단 빨간색으로 패드를 붙였다.

이전 버전에 비해 모양이 많이 특이해졌고 변화를 줄 여지가 많아졌다. 팜레스트는 더 개선해야 하고 매크로 패드는 만들지도 않았다. 주변 부품과의 결합성을 더 개선하여 완성도를 더 높여야 한다. 23호의 모든 문제점을 개선하여 24호를 만들건데 대략 한달 후 쯤이 되지 않을까 예상된다. 작업 시간 측정치이다.

 

다이오드 100개 말기 : 35

다이오드 행 배치 : 1시간

행 납땜. 펑션 점프선 연결 : 1시간 20

틴지 납땜 : 45

왼쪽 열 및 좌우 점프선 연결 : 1시간 50

오른쪽 열 납땜 : 1시간 25

매크로 패드 연결. 틴지 및 주변 부품 조립 : 30

 

오후 1:50에 시작해서 새벽 510분에 끝났으니 총 15시간 10분이되 중간에 밥 먹고 놀아가며 했다. 작업 시간만 계산하면 대략 7시간 30분 정도 걸렸는데 이번에도 연구차 시도해 본게 있어 시간이 걸렸다. 숙련되고 재료를 잘 찾으면 6시간 내로 가능할 듯 하다.

이 납땜기를 정리하며 23호를 써 보니 일단 키감이 좋고 팜레스트가 예상 외로 편리하다. 좌우 분할은 아직 제대로 경험해 보지 않아 잘 모르겠지만 21호에 비해 양팔의 거리가 벌어지니 자세가 편하다는 느낌이 든다. 좌우 분리해서 써 보니 자유로워 좋기는 한데 이대로 쓸 수 있을까 하는 의문이 든다. 최적 거리와 각도를 찾아 브리지를 체결하는게 일반적이지 않을까 예상된다.

팜레스트 개선

납땜은 완료했지만 부품을 지속적으로 업그레이드할 필요가 있다. 원래 이럴 계획으로 부품을 대충 만들어 두었다. 팜레스트 자체는 무척 쓸만하고 실용적이다. 본체에 붙이기로 한 결정은 잘 한 거 같다. 애초에 붙일 자리만 만들어 두려고 대충 설계했는데 더 개선할 게 많다.

 

- 본체와 절대로 수평이 맞지 않으며 나사로 조이는 방식으로는 맞출 수도 없다. 단단히 고정할 필요는 없으니 대충 걸쳐 놓고 유격 가능하게 만들어야 한다.

- 밖으로 너무 쏠려 있고 안쪽은 부족하다. 20미리 정도는 안쪽으로 이동한다. 특히 오른쪽 끝은 마우스의 진로를 방해한다.

- 안쪽으로 각도를 준건 적절한데 각도가 적다. 지금보다 최소한 두 배는 더 줘도 될 거 같다. 굴곡까지는 아직 고려치 않고 있다.

 

여러 부품을 조립하다 보니 수평이 안 맞는 문제가 여기 저기서 나타난다. 팜레스트가 플레이트를 들어 윗부분이 떴다. FDM 프린터의 한계이기도 하고 나사로 조립하는 방식이 완벽할 수 없다는 것을 보여준다. 수평 틀어짐이 예상보다 훨씬 심하다. 결국 단단하게 고정하는 방식은 문제가 더 많이 발생하니 적당히 유격을 두어 부품끼리 움직일 수 있도록 해야 한다.

다행히 본체에 뚫어 놓은 나사 구멍은 그대로 쓸 수 있을 거 같다. 당장은 이대로 쓰되 차후 걸치는 형식이라면 조금은 튀어 나와 있어도 될 듯 하다. 유격 가능한 관절을 먼저 만들어야 하는데 최초 구슬 모양을 홈에 끼우는 걸로 만들어 봤다.

5미리 구를 1미리 아래로 박고 윗 부분만 살짝 나오게 한 후 암컷은 6.5미리 구로 구멍을 파서 끼운다. 구가 살짝 걸려 들어가고 안에서 노는 방식으로 설계한건데 구의 중간쯤 폭을 예측하기 어렵다. 모니터상에서 길이 재 보고 살짝 포개 보고 만들어 봤는데 들어는 간다 하더라도 출력 방향이 어렵다. 숫컷을 뒤집어 찍어야 하는데 과연 저 모양이 유지가 되겠는가 말이다. 두번째 시도는 3미리 홈에 2미리 T자를 끼우는 것이다.

벽에서의 공차는 0.5이다. 위로 들리는 건 막지 못해도 앞이나 좌우로는 고정되고 유격도 어느 정도 있다. 문제는 수컷이 2미리 위로 올라가야 한다는건데 암컷도 그냥 바닥을 뚫어 보고 양쪽에 60미리 간격으로 두 개를 배치해 보자.

이건 꽤 그럴듯하게 잘 동작하되 몇가지 수정을 더 한다. 위로는 들어가야 하니 어쩔 수 없다 치고 아래로는 빠지지 않도록 하는 장치가 필요하다. 암컷 바닥에 삼각형 쐐기를 배치하여 내려가지 않도록 하고 숫컷은 그만큼 깍는다. 그리고 뒤쪽 공차가 좀 남으니 앞쪽으로 0.2미리 옮겨 팜레스트의 각도를 자유롭게 바꿀 수 있도록 한다. 당장은 나사간의 간격이 60이 안되니 40으로 줄이고 뒷면을 본체 높이만큼 높인다.

뽑아 보니 의도한대로 잘 동작한다. 본체쪽 걸쇠는 바닥 쐐기를 조금 더 크게 해도 될 거 같고 서포트가 잘 안떨어지니 간극을 조금 더 줄인다. 다음은 팜레스트를 만든다. 20미리 안쪽으로 이동하고 각도를 두 배로 늘린다. 중앙쪽이 원래 3미리였는데 10미리로 높였다.

장착해 보니 일단 수평이 맞든 안 맞든 끄덕거리지 않으며 대충 제자리에 잘 붙어 있는다. 장착 및 탈거가 쉽고 아래로 꺼지지 않으니 키보드를 들어도 쳐지지 않는다. 이 정도면 일단 접속은 합격점이다. 차후 T자형 홈은 본체에 만들되 편집키 양쪽으로 넓게 배치하면 될 듯 하다.

손바닥 닿는 곳의 길이, 각도, 면적 등은 지금 이게 최적은 분명 아니며 차후 더 사용하면서 조정하기로 한다.당장 이대로 사용해 보니 각도는 적당한 거 같은데 손가락 닿는 곳이 너무 멀다. 오른쪽은 10미리 더 본체쪽으로 판을 이동하고 5도만 살짝 기울여서 찍어 봤다.

면적이 충분히 넓지는 않아도 손목 올리기에는 괜찮고 5도 기운 각도도 대충 맞다. 마우스가 약간 걸리적거리긴 하지만 이건 어쩔 수 없다. 좌우를 다르게 계속 사용해 보고 개선하도록 하자.

이 상태로 한동안 쓰다가 왼쪽도 오른쪽과 같이 수정하되 안쪽이 짧으니 20미리 더 확장하여 100미리로 맞춘다. 그리고 위쪽 삼각형이 2미리씩 작은데 1미리만 작게 한다. 하판 100*50이고 삼각형 98*48이다. 각도와 거리는 이대로 유지한다.

뽑아 보니 20미리는 너무 많이 튀어 나온 느낌이고 우하단은 오히려 공간이 남는다. 팔 각도에 따라 달라지는데 이대로 더 써 보자.

브리지 개선

아래쪽 다리가 너무 길어 착탈 각도가 잘 안나온다. 다리를 짧게 줄이고 걸쇠 길이도 조금 줄였더니 잘 들어가고 잘 빠진다. 나사 구멍을 그룹 해제하지 않고 전체 그룹화 해 버려 안쪽에서 막혀 버렸다. 양쪽 부품 배치하고 가운데 채운 후 나사 구멍 그룹 해제한 상태에서 전체 그룹화 해야 제대로 구멍이 뚫린다.

막상 끼워 보니 아래쪽은 굳이 나사 체결까지는 안해도 될 듯 하다. 다만 위쪽은 걸쇠가 얇아 조금 불안해 나사 체결을 하는게 좋을 거 같다. 체결 해제를 위한 홈이 너무 위쪽에 있어 도구를 써도 잘 안 빠지는데 조금 아래로 이동하기로 한다. 6/14를 노란색으로 새로 뽑았다.

납땜까지 완료하고 실제로 써 보니 아주 심각한 문제가 발견되었다. 단단하게 고정하려고 그렇게 노력했는데 그게 오히려 더 안 좋은 결과를 초래한다. 브리지가 90도로 양쪽 플레이트를 잡아도 완전한 각도가 아니어서 한쪽은 뜰 수밖에 없다. 플레이트 자체만 보면 수평이 그리 안 맞는 것도 아닌데 브리지가 오히려 더 망쳐 놓고 있다.

왼쪽은 펑션 때문에 어쩔 수 없는 면이 있고 오른쪽도 프린터의 문제인지 우하단이 살짝 뜬다. 또 케이블을 잘 정리해 넣지 않으면 아래쪽에 깔려 뜨는 경향도 있다. 플레이트 자체의 기울어짐은 테이핑으로 일단 해결했다. 3~5겹 정도 낮은 쪽에 발라 수평을 맞춘다. 납땜에 의해 플레이트 일부가 녹은 부분이 있어 칼질로 맞췄다.

이 상태에서도 브리지를 끼우면 틀어지는데 팜레스트처럼 걸치기만 해서 거리와 각도만 잡아 주도록 수정한다. 처음에는 관절을 브리지 중간에 만드는 방법도 생각해 봤는데 이건 난이도도 높고 브리지가 번잡해져 안된다. 그냥 걸쳐야 한다.

지금은 T자 홈을 팔 수 없으니 양쪽 지지대에 홈을 파 플레이트에 먼저 걸고 그 홈에 브리지를 끼운다. 나중에는 물론 홈을 플레이트에 새겨 넣을 것이다. 탈거하려면 도구가 필요한데 이 부분도 고리를 만들어 손으로도 탈거하게 했던 것이 좋았을 듯 하다. 지금은 의미가 없어졌지만 말이다.

유격을 두고 브리지를 위에서 아래로 살짝 끼워 넣어 걸치기만 했다. 좌우의 수평은 틀어질 일이 없고 잘 맞지만 플레이트의 위치가 약간 들썩거린다. 수평 안 맞는거 보다는 이게 훨씬 낫다. 어차피 좌우 분리형은 각각 따로 놀게 설계된거니 몇 미리 차로 끄덕거리는건 큰 문제가 아니다. 다만 조금은 더 타이트했으면 하는 아쉬움은 살짝 있다.

매크로 패드

애초에 3핀만 쓰고 키 두 개만 만들려고 했는데 이왕 시제품에 키 세 개를 할당해 놓았으니 이번에는 키 3 개를 다 만들어 보자. 다음부터는 2개만 만들 예정이라 이번에 미리 3키로 만들어 보기로 한다. 별 특별할 것도 없고 그냥 키 세 개짜리 플레이트이면 된다.

케이블 고정 장치가 필요해 위로 점점 좁아지는 구멍을 만들었다. 하단 4미리, 상단 3미리로 하고 삼각형 쐐기를 중간 중간에 박아 위로 끼우면 압착되도록 만들었다. 케이블 위치를 바꿀 수 있도록 좌우, 후면에 세 개 배치했다. 주로 쓸 두 개의 키는 키캡을 20*20으로 크게 만들고 중간키는 위쪽에 작게 배치했다. 상판은 10도 기울였다.

 

초안 뽑아 보니 일단 케이블 홀이 너무 작다. 조명등에 쓰던 3선짜리 케이블을 쓸 예정인데 이게 안들어간다. 그리고 아무리 분리된 패드라고 해도 상판이 너무 작으니 조금 더 키우자. 하판은 초안에는 만들지 않았는데 메인 플레이트에도 하판이 필요하니 이번에 그냥 테스트삼아 만들어 보자.

 

큼직한 키캡도 만들어 붙이고 슬라이딩 방식의 하판도 달았는데 별로 마음에 안든다. 케이블 고정도 억지로 해야 하고 하판은 지 맘대로 움직인다. 하판이나 케이블 고정이나 둘 다 생소한 문제여서 연구가 필요하다.

 

하판 : 전면부 얇은 쪽은 홈을 파 끼우면 나사를 쓰지 않아도 된다. 후면부는 안쪽 지지대는 넓게 만들고 바깥쪽은 돌기 두개 정도 만들어 살짝 끼우도록 한다. 힘으로 끼우면 빼내기가 어렵다. 공간이 충분하다면 하판 위에 나사길까지 들어갈 면적과 깊이를 확보하여 나사 2개를 채우는 방식이 제일 확실하다.

케이블 고정 장치 : 기둥에 말아 놓거나 기둥 사이에 끼워 두는 방식도 괜찮은데 마찰이 없으면 풀려 버릴 수도 있다. 케이블을 끼우는 사각형을 만들고 순접으로 붙인후 케이스에는 돌기로 끼워 고정한다.

뽑아 보니 진짜 택도 없다. 케이블이 들어가지도 않으며 수직으로 걸리지도 않을 뿐더러 수평으로도 고정이 안되어 밀면 빠져 나가 버린다. 0.5미리 홈이나 0.3미리 돌기는 거의 보이지도 않을 정도이며 전혀 기능하지 못한다. 최소한 10*10은 되어야 하며 수평 먼저 고정하고 수직으로도 걸릴 수 있도록 설계해야 한다.

 

케이블 홀은 4미리로 늘리고 양옆에 삼각형 배치하여 수평 고정하고 수직은 0.5미리 삼각형 구멍으로 걸치도록 한다. 구멍은 1미리 더 넓고 0.5미리 더 높게 만든거 외에는 옆 삼각형의 반전 모양이다. 0.5미리 삼각 걸쇠로 걸친다는 작전이다. 막상 뽑아 보니 0.5는 걸리지도 않는다. 1미리로 늘렸더니 걸리고 고정도 잘 되는데 빡빡하고 일단 끼우면 잘 안 빠진다.

 

구멍을 1미리 내리고 그 위에 경사를 약간 파 잘 들어가도록 했다. 그랬더니 꽤 쓸만하며 동작도 마음에 든다. 이걸 매크로패드에 적용하기로 한다. 하판을 끼우면 구멍은 약간 위로 옮길 필요도 있어 보인다.

하판은 전면에 삼각형홀 파서 끼우고 후면은 나사로 채우기로 했다. 바닥과 1미리 띄우고 하판 2미리 더하면 본체의 아래 공간 3미리를 쓰는데 케이블 고정용이다. 아주 낮은 부분은 하판을 빼거나 구멍을 뚫어도 된다.

전면 삼각홀에 0.5만큼 들어간다 치고 하판폭을 본체 내부폭에 맞추면 뒤쪽도 0.5 남는다. 폭은 내부폭보다 1미리 짧게 하여 좌우로 0.5만큼 여유를 두었다. 나사박을 기둥을 뒷면 모서리에 7*7크기로 배치하고 나사길은 2미리 안으로 넣어 나사가 돌출되지 않도록 했다. 두 개 출력하는데 3.3시간이나 걸린다. 하판은 나사길때문에 뒤집어 찍는다.

이번건은 아주 잘 나왔다. 하판이 홈에 쏙 들어가고 나사 구멍도 정확히 일치한다. 다만 나사 머리가 아슬아슬하게 바닥에 닿을 듯한데 나사길을 0.5미리만 더 위로 밀어 넣으면 딱 좋을 거 같다. 케이블도 잘 들어가되 꽉 잡히지는 않아 순접으로 붙일 예정이다. 이제 납땜하고 조립만 하면 되는데 케이블이 마땅치 않다. 알리에서 케이블을 대판 주문해서 오기는 왔다.

14핀짜리는 너무 굵어 문제고 9핀도 차량용이라 어울리지 않는다. 4핀 암수 셋트가 그나마 얇아서 실용성이 있어 보이는데 다음번에는 이걸로 사용해야겠다. 이번 매크로패드는 키 3개를 넣었는데 그러면 4가닥짜리 케이블이 필요하다. 조명 케이블 잘라 놓은게 3가닥이라 키 2개만 쓸까 하다 다이소에서 산 1000원짜리 USB 연장 케이블을 잘라 봤다.

어쩜 딱 이렇게 4가닥이고 굵기도 맞는지 모르겠다. 1미터 잘라 쓰고 1미터 더 남았다. 이번에는 배선까지 해 놨고 프로그램에서 3개를 지원하는 코드를 작성해 놨으니 매크로키 3개짜리로 만들고 다음부터는 2개짜리로 만들기로 한다. 다음날(36) 부품 다 뽑아 납땜을 시작한다.

3천원짜리 USB 휴대용 납땜기를 처음 써 봤는데 예상외로 괜찮다. 열 올라오는 속도도 빠르고 납도 잘 녹아 휴대용으로 쓰기에 큰 무리가 없다. 배터리까지 내장이면 더 끝내줄 거 같다. 4핀 케이블에 4핀 수컷을 연결했다.

열수축 튜브도 처음 써 봤는데 이것도 상당히 마음에 든다. 흩어진 선을 깔끔하게 모아주기도 하고 절연 테이프가 없어도 납땜후 선을 정리할 수 있다. 앞으로 선끼리 이을 때는 종종 사용해야겠다. 다만, 미리 튜브를 끼워 넣고 납땜을 하는 치밀함이 있어야 한다.

패드내의 배선은 단순하다. 검정색이 2열에 연결되어 있으니 스위치 세 개의 왼쪽 핀을 다 연결하면 된다. 흰색이 F24에 매핑되는 왼쪽 버튼이고 초록색이 F23에 매핑되는 오른쪽 버튼이다. 빨간책은 F25에 매핑되는 위쪽 버튼인데 이건 꼭 연결하지 않아도 된다.

납땜 후 키 테스트 프로그램을 점검해 보니 잘 입력된다. 다만 아직 소젯은 이 키를 몰라 매크로로 직접 사용할 수는 없다. 케이블은 순접 안해도 될 정도로 마찰력이 있어 그냥 두고 본체쪽 플러그는 순접으로 붙인 후 연결했다. 주로 왼손으로 쓸거라 케이블을 왼쪽으로 뺐는데 막상 배치해 보니 키보드에 케이블에 걸려 불편하다.

 

하판 나사 풀고 접속부를 걸쇠로 빼내 뒤쪽으로 이동했다. 이동이 그리 간편하지는 않지만 가능하다는데 의미가 있다. 차후 이쪽도 플러그를 배치하면 어떨까 싶긴 한데 그러면 암컷이 세 군데 다 있어야 하고 병렬로 연결해야 하니 좀 어렵겠다. 만들었으니 소젯 업그레이드 후 사용성 테스트해 보고 개선 방안을 더 생각해 보자.

소젯 1.35 시작

23호의 매크로 패드 기능이 추가됨으로써 전체 키수가 97키로 늘었다. 늘어난 키를 지원하는 기능을 작성하기 전에 1.34를 중간 백업하고 오늘 날짜로 1.35를 제작한다. 23호부터 1.35 버전을 사용해야 한다.

 

F23, F24, F22 세 개의 매크로키를 정의한다. 주로 2개의 키를 쓸거라 맵핑이 연속적이지는 않으며 F22는 차후 다른 용도로 쓸 수도 있다. 이 키의 기능을 정의하는 옵션과 UI를 작성한다. 다음 세 개의 키를 추가한다.

 

          /*94*/ { KG_MACRO,          VK_F23,       ...

          /*95*/ { KG_MACRO,          VK_F24,       ...

          /*96*/ { KG_MACRO,          VK_F22,       ...

 

키 상수도 K_PADLEFT, K_PADRIGHT, K_PADMID 세 개 추가했다. 이러면 총 97키가 되는데 외부 매크로 셋은 화면에 표시하지 않으며 통계도 굳이 표시할 필요 없다. 실제 키 개수에서 표시할 개수만 3 적게 정의하고 표시 루틴은 이 개수만큼만 돌면 된다.

 

     keyNumDisp = keyNum - 3;

 

키 입력 처리 루틴은 물론 외부 매크로도 다 처리한다. 옵션에 외부 매크로를 저장할 변수를 추가하고 다음과 같이 초기화한다.

 

     tOpt.m_left = "^C";

     tOpt.m_right = "^V";

     tOpt.m_mid = "^A";

 

제일 흔하게 쓸 명령이 클립보드 명령이라 이렇게 정했는데 어디까지나 디폴트일 뿐이다. 매크로 검색 함수에서 키와 매크로를 연결한다.

 

string FindMacroFromKey(int kidx)

{

     ....

     if (kidx == K_PADLEFT) return Opt.m_left;

     if (kidx == K_PADRIGHT) return Opt.m_right;

     if (kidx == K_PADMID) return Opt.m_mid;

 

     return "";

}

 

연결만 해 주면 외부 매크로도 기존과 똑같은 흐름으로 실행된다. 옵션 대화상자에는 세 개의 컨트롤을 추가하고 매크로를 편집하도록 한다. 조합키와도 같이 쓸 수 있지만 별로 그런 예는 없을 듯 하다.

사용해 보니 나름 괜찮다. 모델링할 때 숨김/보임키를 이걸로 정의해 두면 편리하고 동영상 탐색도 빠르고 편집에도 필수 기능을 등록하여 사용할 수 있다. 매크로 패드의 실용성을 높이려면 명령 세트를 일괄 변경하는 스크립트가 필요하다. 전에 만들다가 말았는데 차후 다시 시도해 봐야겠다.

24호 기획

330: 23호를 한달 넘게 써 봤고 그 동안 모델링과 슬라이서 등을 공부하면서 출력 기술을 업그레이드했다. 블렌더는 당장은 도움이 안될거 같고 여전히 틴커캐드가 주력이다. 슬라이서 옵션 몇가지를 터득한게 차후 제작에 좀 도움이 될 거 같은데 수평 확장 옵션 덕에 플레이트는 일관되게 만들 수 있게 되었다. -> 기울어진 구멍에는 도움이 안됨

프린팅은 목적이 아니고 도구일 뿐이므로 더 이상 시간을 쓰지 말고 이제 본업에 충실할 때이다. 3주간의 연구가 헛되지는 않았지만 지금 시간이 그리 넉넉치 않다. 충분히 사용해 봤으니 슬슬 24호 제작에 들어가며 차후 한손 자판까지 완료하여 상반기중에 양산 버전을 완성한다.

23호 사용기

전반적으로 쓸만하며 23호 자체로도 완성도는 꽤 높은 편이지만 몇 가지 개선할 점은 있다. 주로 설계상의 문제가 아닌 제작상의 문제이다.

 

- 수평의 문제 : 펑션과 왼쪽의 높이가 정확히 일치하지 않아 왼쪽이 끄덕거린다. 펑션을 일체형으로 만들어야 하는 이유이다. 사출에서는 정확하게 만들 수 있다 하더라도 프린터로 이 수평을 맞추는 것은 거의 불가능하다.

- 하판 부재로 인해 케이블 정리가 잘 안된다. 들어 올렸을 때 케이블이 빠져 다시 제자리 놓기 어렵다. 하판이 있어야 하되 바닥에 꼭 닿을 필요는 없다. 매크로 패드처럼 케이블만 받쳐 주면 된다.

- 브리지가 꽉 밀착되는게 아니어서 끄덕거림이 있으나 문제될 정도는 아니다. 팜레스트도 마찬가지이다. 적당히 유격을 두는게 수평 맞추기 쉽고 더 좋다. 이동시 잘 빠지는 문제와 네 군데 높이가 잘 안 맞는 문제는 있어 개선이 필요하다.

- 팜레스트는 길이, 높이, 각도를 정밀하게 맞추진 않았지만 있으니 좋다. 계속 포함시키기로 한다. 충분한 크기로 넉넉하게 제작하면 될 거 같다.

- 키감 및 배치상의 문제는 거의 발견되지 않았다. 새끼 3미리 내린 건 적당하고 헷갈리지 않는다. 피치도 좁지 않고 딱 적당한데 손가락이 굵은 사람을 위해 늘린 버전을 따로 만들 필요는 있다.

- 좌우 분리의 실용성에 대해서는 다소 의문이다. 사실 분리해서 써 본 적도 별로 없고 짧게 써본 바로는 팔은 조금 편하다는 느낌이 들지만 책상 위가 지저분해지고 키보드의 이동이 불편하다. 또 한쪽이 너무 가벼워 미끌리는 느낌도 든다. 분리 가능하다는 것은 긍정적이지만 브리지로 원하는 각도를 조정하여 고정 상태로 쓰는게 더 좋아 보인다.

 

다음은 23호에서 발견된 사소한 에러이다.

 

문자 영역 플레이트 더 크게 해서 V 계곡 없앨 것 -> 완료

틴지 뚜껑에 자체 서포트 받칠 것 -> 그냥 칼질하는걸로

케이블 수납 공간 및 미관상 하판이 있어야 할 듯 -> 완료

팜레스트, 브리지 접합부 T자형으로 플레이트에 배치. 또는 더 좋은 방법 연구 -> T자 하나로 제작함

펑션은 왼쪽에 붙여서 제작하되 라운드 처리는 살려둘것 -> 완료

 

이외에 장거리 이동했다 돌아오면 꼭 납땜이 하나씩 떨어지는 제작상의 문제가 있었다. 실제 배포하려면 더 튼튼하게 만들어야 한다.

 

기획안

주요 기획안은 다음과 같다.

 

- 24호는 23호의 개선판 및 배포판이다. 피치, 펌웨어, 구조 등은 그대로 사용한다. 기능상 추가는 없더라도 사용성을 개선하고 제작 편의성을 향상시킨다.

- 키홀은 13.9로 하고 킹룬으로 뽑는다. 장비가 바뀔 경우 수평 확장 옵션을 쓴다. 하판 추가하고 접속 부분을 개선한다. 펑션은 분리 가능하다는 가능성만 남겨 두고 수평 유지를 위해 일체형으로 합쳐 뽑는다.

- 매크로 포트는 가능성만 확인했으므로 이번에는 생략하거나 최소한으로 안쪽에 접속 포트 정도만 남긴다. 분리된 키보드가 하나 더 있으니 책상위가 지저분해진다. 기존 매크로를 빠르게 전환해서 쓰는게 더 깔끔하다.

- 스위치는 이번에는 적축을 사용한다. 키캡은 그대로 쓴다. 게이트론과 GTMX를 적당히 섞어 쓰기로 한다. 피치를 늘린 버전도 필요하지만 당장 그럴 필요는 없다.

- 자판 각도는 2도에서 3도로 소폭 키운다. 브리지를 쓴다 하더라도 기본 각도가 3도는 되어야 좀 기울어진 듯 보인다. 2도도 별 문제는 없었다.

- 수평, 수직 기울기를 6도에서 7도로 모두 올린다. 6도가 막상 사용해 보면 조금 작다는 느낌인데 8도까지는 늘려도 될 듯 하지만 1도씩만 올렸다. 하판의 케이블 공간 확보 의미도 있다.

- 엄지 영역을 5도 기울인다. 이번에 새로 해 보는 시도인데 일단 기울여 보고 실사용해 보며 적당한 각도는 다음에 찾기로 한다.

 

수평 확장

프린터마다, 필라멘트마다 키홀 크기가 달라 모델링 단계에서부터 크기를 고려했었다. 날곰용, 가이더용 키홀을 따로 만들고 그러다 보니 출력할 프린터가 고정되어 버려 범용성이 떨어지는 문제가 있다. 최근에 슬라이서를 연구하다 수평 확장 옵션을 쓰면 약간씩은 조정 가능함을 알게 되었다. 과연 그런지 테스트해 봤다.

노란색은 킹룬으로 찍은건데 13.9로 찍은게 진짜 13.9로 나오며 -0.2 확장하면 13.5가 된다. 축소 안한건 9자리가 헐렁하고 오히려 8 자리라 딱 맞다. 축소한건 9 자리에는 안들어가고 1자리가 13.7로 딱 맞게 들어간다. 스위치의 폭은 13.9가 맞지만 키홀은 13.7 정도가 오히려 딱 맞게 고정된다.

검정색이 가이더로 찍은건데 9 자리의 폭이 13.7로 나와 약간 축소되어 있다. 그런데 딱 맞게 잘 들어가며 8자리는 빡빡하고 0자리는 헐렁하다. 1자리가 13.9인데 오히려 스위치가 덜렁거린다. 13.9가 맞다고 생각했었는데 0.1미리 축소에 의해 맞았던거다.

날곰은 9자리가 13.5로 나와 들어가지 않으며 0자리가 오히려 맞다. -0.1 확장하면 9자리가 13.3이 되며 1자리도 13.5가 되어 들어가지 않는다. 기본 -0.2만큼 축소가 발생하니 오히려 0.2 확장해서 찍어야 맞게 나올 듯 하다.

이 실험을 통해 스위치의 폭은 13.9이지만 키홀은 양쪽으로 0.1미리 줄어든 13.7이 맞다는 것을 알게 되었다. 13.7로 모델링하되 가이더에서 찍을 때는 0.1 확장하고 날곰에서 찍을 때는 0.2 확장하면 될 듯 하다. 한번 더 검증해 보자.

이렇게 찍어 보니 정확하게 나온다. 킹룬은 수축이 없고 모델링한 치수 그대로 나오며 13.8이 빡빡하게 들어가고 13.9는 딱 맞다. 너무 끼면 플레이트가 울 수도 있으니 13.9에 맞추는게 좋겠다. -0.2 확장하면 진짜 딱 그만큼 줄어들어 13.913.5로 나온다. 가이더로 뽑으면 -0.1, 날곰으로 찍으면 -0.2를 주면 된다.

접합부 연구

팜레스트와 브리지 접합부를 T자로 디자인했는데 이 부분이 좀 문제가 있다. 지금 상태도 과히 나쁘진 않은데 조금만 더 개선해 보자. 수평 확보를 위해 유격을 준건 좋은데 이동시 너무 쉽게 분리되고 끄덕거림이 있다. 또한 접합부가 두 개이다 보니 얘들이 수평을 맞지 않으면 오히려 더 끄덕거린다.

접합부가 꼭 두 개일 필요는 없다. 한개만 하더라도 옆면이 나란히 밀착되면 지지에는 큰 문제가 없다. T자형이 기본이되 너무 각지게 하지 말고 반원형으로 만들어 유격을 좀 더 주도록 한다. 막대폭은 3, 구는 5로 하되 아래쪽 1미리는 안착을 위해 깍았다. 암놈은 모든 방향으로 0.5미리 공차를 주었다.

 

뽑아 보니 조금 헐렁해도 결합은 잘 된다. 암놈구가 크니 막대 길이는 같게 만들어도 될 거 같다. 그리고 위쪽에서 끼우는 쪽은 원통이 들어갈 길을 따로 내 줘야 수직 높이를 마음대로 지정할 수 있다.

두번째 뽑은건 팔길이가 약간 짧은데 이건 길이를 조금만 늘리면 되니 별 문제는 아니다. 그러나 더 심각한건 바닥에 완전히 닿을 수가 없다는 점인데 팜레스트는 이래 버리면 공중에 붕 뜬 상태가 되어 버린다. 접합부에 서포터를 받치는 건 좀 그렇긴 한데 플레이트를 바닥까지 뚫지 않으려면 어쩔 수 없는 부분이긴 하다.

구 형태의 걸쇠를 생각한건 좌우로 자유롭게 움직이도록 하려는 의도였는데 동그란 모양으로는 아무래도 무리인 거 같다. 매크로 패드를 만들 때 적용한 걸 가져와 똑딱이 형태로 걸리도록 만들어 보았다. 수평 공차는 0.5 수직 공차는 0.3으로 주었다.

잘 끼워지고 대체로 무난한데 이번에도 바닥이 닿지 않는다. 꼬끼리발 때문인가 싶어 칼질을 다 해 봤는데도 그렇다. 계산상으로는 분명이 맞고 수평 공차로 인해 오히려 더 내려와야 맞을 듯 한데 0.3미리 정도 덜 내려 온다. 레벨링 다시 맞추고 첫 레이어 수평 확장을 -0.2로 주고 다시 찍어 보자. -0.2는 정도만 덜할 뿐 별 차이가 없다.

아래로 덜 내려 오니 숫컷 걸림 부분을 0.3 위로 올리고 수평 공차를 0.4로 약간 더 늘렸다. 그리고 수평 확장을 -0.3으로 주었다. 이랬더니 이번에는 오히려 밑으로 약간 내려와 버린다. 수평 공차가 문제인지 걸림 부분을 올린게 문제인지 알 수가 없다.

3번 숫놈을 2번 암놈에 끼우니 딱 맞다. 3번은 좌우로 끄덕거림도 있으니 수평 공차를 다시 0.3으로 줄여서 한번만 더 뽑아 보자. 이 조합으로 했더니 일단 맞고 좌우 끄덕거림도 덜하다.

접합부의 형태는 이 정도면 대체로 쓸만한 듯 하다. 다만 어느 정도의 유격을 줄 것인가를 결정해야 하는데 붙는 쪽의 필요에 따라 선택하면 된다. 브리지는 조금 꽉 끼우는게 좋겠고 팜레스트는 조금 헐렁해도 유격이 있어야 한다. 본체의 구멍은 팔길이 2.7로 고정해 놓고 끼우는 쪽이 팔 길이를 3이나 3.1로 조정하여 결정하기로 한다.

엄지 경사

틴커캐드 강좌를 쓰다가 공유 목록에서 희한하게 생긴 키보드를 보았다. 내 키보드랑 비슷하지만 경사가 더 심하게 져 있고 손가락 사이의 높낮이도 과하게 많이 주었다. 중지는 수평뿐만 아니라 수직으로도 내려 길이 차이를 보상하는데 이건 좀 과해 보인다. 특이한건 엄지키의 기울기이다. 아래쪽으로 30도나 내려가 있다.

 

다른 키보드를 보면 엄지쪽이 오히려 위로 솟은 것도 있어 어느쪽이 맞는지 헷갈린다. 소젯은 엄지가 둥그렇게 기울어져는 있지만 아래로 기울어져 있지는 않다. 위로 솟은 것보다는 아래로 살짝 기울어진게 조금 더 편해 보이며 이 경우 Num에 대한 접근성도 좋아진다. 10도 정도만 살짝 기울여 보자. 마침 초안은 디자인해 뒀으니 시도는 해 볼 수 있다.

엄지 디자인해 놓은 바닥에 플레이트를 일단 깐다. 일단은 키홀만 포함할 정도로 깔았는데 조금 더 넓게 깔아도 될 거 같다.

 

이 상태로 7도 기울인다. 자판을 수평 7도로 기울이니 SP가 평평해지는 각도에 맞추었다. 문자 영역 아래에 붙이되 나머지 상판은 얼기설기 엮어서 만들었는데 여러 모로 기울어져 있어 다 메꾸기 어렵다. 딱 이 부분만 잘라 3시간만에 출력해 봤다.

각도가 있는게 좋은건지는 아직도 명확히 판단이 서지 않는데 있어도 괜찮을 거 같고 시도해 볼만은 한거 같다. 그런데 7도 각도는 확실히 작고 기울었는지 잘 느껴지지도 않는다. 최대 15도까지는 더 기울여도 될 거 같다. 엄지 경사 여부는 여기까지 연구하고 줄만하다는 결론만 내고 플레이트 제작 부분에서 계속 테스트하여 적정 각도를 찾기로 하자.

24호 제작

브리지 제작

접합부의 팔길이가 2.7로 본체에 이미 배치되어 있다. 브리지는 꽉 끼는게 좋으니 공차 0.3을 적용하여 숫놈 팔길이를 3미리로 제작하기로 한다. 길이는 70미리로 하고 아래에서 35미리 지점에 숫놈을 배치한다. 숫놈길이가 14이므로 팔이 35에 오려면 숫놈이 30쯤에 있으면 된다.

높이는 이전 버전보다 1더 높은 6이다. 접합부가 하나밖에 없어 더 튼튼하게 만들어야 하며 걸쇠가 적당히 아래쪽에 있으려면 이 정도 높이는 되어야 한다. 가장 짧은 브리지를 6도로 만들었다. 이 경우 자판 각도 3도를 더하면 9도가 된다. 인필 50%로 뽑았다.

  

30분만에 나왔는데 끼워 보니 역시 빡빡하다. 접합부 걸쇠 높이는 6미리인데 구멍은 10미리나 되어 제대로 들어갔는지 확인이 잘 되지 않는다. 플레이트의 걸쇠 높이도 6미리로 맞추는게 좋을 듯 하다. 빡빡한만큼 좌우는 잘 잡아 주며 끄덕거리지 않는다. 아래위로는 약간씩 흔들리는데 이건 원래 의도한 바이다.  

접합부에 항상 문제가 되는 부분이 코끼리발인데 제대로 끼울려면 늘 칼질이 필요하다. 이래서는 인건비가 너무 많이 들고 정확도도 떨어진다. 첫 레이어에 -0.3 확장을 적용해 보자. 또 팔길이 3.0이 조금 빡빡하니 3.1로 만들어 공차 0.4로 여유를 줘 보자. 온도도 210도가 높으니 200도로 낮춰 본다.

첫 레이어 -0.3은 코끼리발 현상을 감소해줄뿐 완전히 없애주지는 못한다. -0.5로 뽑아 보니 이 정도는 되어야 한다. 또 공차 0.4는 잘 들어가지만 끄덕거린다. 공차 0.3에 첫 레이어 -0.5로 하면 딱 맞을 듯 하다.

브리지 각도는 한쪽의 각도이며 거리는 아랫면의 길이, 즉 플레이트의 최대 거리로 지정한다. 6도일 때 18 정도 나오며 0도일 때는 150까지 띄워도 양팔이 완전 일자는 아니어서 기본 3도 각도는 줘야 할 듯 하다. 이 비율대로 각도별 거리를 계산해 보면 1도 감소할 때 22미리씩 멀어진다.

 

브리지 각도

자판 각도

거리

비고

0

3

150

기본 각도

1

4

128

 

2

5

106

 

3

6

84

 

4

7

62

 

5

8

40

 

6

9

18

최대 각도

 

물론 가까운 거리에서 각도를 더 주고 싶다면 6도에 40이나 62도 가능하다. 5도짜리를 만들어 보자. 공차는 여전히 0.3이며 첫 레이어 수평으로 -0.5 축소한다. 코끼리발 현상이 워낙 일반적이므로 -0.5 축소 옵션은 계속 켜 놓는게 좋을 듯 하다. 5d40으로 뽑아 보니 꽉 끼지만 흔들림 없고 좌우 플레이트의 수평도 잘 맞다. 이걸로 결정하고 차후 플레이트 제작 과정에서 더 조정하기로 한다.

팜레스트 제작

전 버전의 팜레스트로 쓸만은 했는데 영역을 조금 더 넓게 잡아야겠다. 접합부는 공차 0.4를 적용하여 숫놈 팔길이를 3.1미리로 제작한다. 유격이 좀 있어야 수평에 방해가 되지 않는다. 전 버전 오른쪽을 가져와 약간 조정했다.

접합을 위한 가로바가 통합되므로 이 높이 7을 위쪽 사각형이 흡수하고 아랫판은 좌우로 5미리씩 증가시켜 90으로 했다. 아랫판 각도는 5이고 윗판은 상하좌우 1미리 더 작게 만들어 수직 각도 5도를 적용했다. 패드를 가급적 다 채워 남는 부분이 없도록 했다.

위쪽 사각형은 폭을 70으로 하고 접합부는 22 위치에 잡았다. 그냥 대충 눈대중이다. 전 버전은 나사 때문에 접합부가 바깥으로 치우쳤는데 지금은 그럴 필요가 없다. 플레이트에 붙여 보면 대략 이런 모양이다.

 

아직까지도 팜레스트는 초안일 뿐이라 수치까지 정밀하게 조정할 단계는 아니다. 일단 뽑아 보고 다음 작전을 결정하자. 인필 50%로 세시간 가까이 걸리니 이건 아침에나 결과를 볼 수 있을 거 같다. 아침에 나온걸 붙여 보니 대충 잘 나왔다. 패드까지 대 봐야겠지만 일단 접합부는 의도한바대로 좌우로 약간, 상하로 약간 유격이 있어 플레이트를 건드리지 않아 합격이다.

몇가지 개선 사항이 있는데 우선 연결부가 숫놈과 높이가 달라 6미리로 일치시킨다. 첫 레이어 수평 확장은 -0.5를 적용한다. 인필은 30이면 충분하다. 안쪽은 적당한데 바깥쪽은 5미리 축소한다. 이게 길면 마우스랑 걸리적거린다. 안쪽도 조금 남는 거 같지만 굳이 축소할 필요는 없다. 중간부가 너무 긴거 같으니 2미리 살짝 줄이고 손이 작은 사람을 위해 팜레스트 높이를 5미리 더 위로 확장한다. 전체 길이는 같다.

상하판을 그룹핑하고 하판의 라운드를 없앤다. 라운드는 별도의 구멍으로 4면을 파되 5미리짜리 구멍으로 뾰족한 부분만 없앴다. 2시간 반 정도 걸린다.

빨간색 패드를 85*55 크기로 꽉차게 만들어 붙였다. 손목이 닿는 부분을 충분히 잘 커버한다. 이 정도면 충분히 실사용할만하다. 여기까지 테스트하고 나머지는 제작 후 실사용하면서 조금씩 손보기로 한다.

플레이트 제작

선행 연구가 대충 완료되었으니 플레이트를 제작한다. 모든 키를 배치하여 상판에 경사를 주기 전까지 만들었다. 조합키의 위치나 엄지의 배치 등은 공식대로 되지 않으므로 찍어 봐야 알 수 있다. 플레이트에 대한 첫 번째 테스트 출력이다. 킹룬으로 5시간 가까이 걸렸다.

큰 말썽없이 출력은 잘 된 편인데 묵은 필라라 그런지 거미줄이 상당히 많이 끼고 서포터가 일부 무너진 곳이 있다. 서포터 분리는 무난하게 잘 되며 표면도 깨끗하다. 23호에서 문제였던 V자 계곡은 없어졌고 강도도 원하는만큼 나왔다. 그러나 스위치를 끼워 보니 문제가 좀 있다.

평평한 곳은 13.8 정도 나와 딱 맞지만 경사진 곳은 기울어서 그런지 아니면 필라가 흘러서 그런지 좁은 곳은 13.3밖에 안되어 칼질이 필요하다. 그렇다고 키홀을 14로 늘리면 헐렁한 부분이 생길거 같으니 일단은 이대로 하되 필라를 바꿔서 해결해 보기로 하자.

자판을 3도 기울였더니 EscCap1미리씩 바깥으로 밀려나 보인다. 게다가 Ctrl 키캡을 중심이 안 맞는 잘못된 걸로 끼워 너무 붙어 보인다. 이래서 잘못 찍은건 바로 바로 버려야 한다. 위쪽 두 개만 1미리씩 오른쪽으로 밀기로 한다. 엄지는 바짝 붙여 23호와 비슷한데 0.5미리는 더 올려도 될거 같지만 그냥 두기로 한다. V6미리는 악간 부족해 왼쪽으로 1미리는 더 밀어야 한다.

문자영역은 이만하면 된거 같고 다음은 엄지 부분을 새로 만든다. 7도로 줘 보고 대충 쓸만하다는 건 확인했으니 아예 15도로 팍 줘 보고 메꾸는 것도 플레이트를 충분히 깐 후 위로 삐져 나온 부분을 깍는걸로 하자.

너무 팍 떨어지는 느낌이 들고 절벽이 생기는게 조금 그렇긴 하다. 느낌을 정확히 알기 어려우나 일단 찍어 본다. 0.3 레이어 높이로 8시간만에 신속하게 뽑았는데 선두께를 0.8로 늘리면 6.29에도 뽑힌다. 조금 거칠게 나왔지만 테스트용 플레이트로는 이 정도면 썩 괜찮아 다음부터는 빨리 뽑도록 슬라이싱해야겠다. 요즘 전기세가 너무 많이 나와 이것도 아껴야 한다.

15도가 엄청 과하다는 느낌은 들지 않지만 일단 시각적으로 너무 기울어져 보이고 절벽이 생기니 보기 좋지 않다. 7도에 비해 더 편하다는 느낌은 없지만 평평한 걸 다시 쳐 보면 Han키를 누를 때 오히려 어색하다는 느낌이 든다. 엄지를 기울인게 편의성은 더 있는 듯 한데 어느 정도가 최적인지 찾기는 참 어렵다.

각도에 따라 그냥 느낌이 조금씩 달라질 뿐이다. 15도는 7도에 비해 경사는 그렇다 쳐도 Shift가 너무 아래로 이동해 버려 불편하다. 또 엄지가 내려간만큰 아래 두 키가 걸리적거리고 위의 Num키가 멀어 보인다. 15도 기울였다고 해도 키를 누를 때는 여전히 수직으로 누르지 경사진 방향으로 오므리지 않는다. 아예 30도 정도면 오므리지만 각도가 작고 거리까지 좁으면 엄지를 아래로 누르게 되어 있다.

7도가 오히려 경사도는 더 괜찮아 보이고 아래 두 키, Num키와의 관계도 괜찮다. 결정하기 참 어려워 계속 테스트할 필요가 있어 다음과 같이 만들어 본다.

 

- 엄지 각도는 중간쯤인 10도로 한다. 7도는 작아 보이고 15도는 과하다.

- 엄지 좌우의 두 키를 7도 기울여 놓은건 그대로 유지한다. 없애 버려도 될 거 같지만 회전에 의해 엄지 위치가 바뀌니 둥그런 모양 유지가 필요하다.

- 엄지 영역을 문자영역보다는 약간 더 위에 배치하여 엄지가 아래로 떨어지지 않도록 보상한다. Shift의 중앙이 문자키와 더 위이거나 최소한 비슷해야 한다. 2미리 정도 올리자.

- 각도에 의해 거리가 가까워지는 효과가 있어 엄지 전체를 오른쪽으로 약간 민다. V6미리에서 4미리로 하되 Shift의 우상단 모서리를 V 좌상단과 맞추는게 더 낫겠다.

- FN은 그대로 두더라도 Num4미리 정도 아래로 내리거나 앞으로 10도 기울여 엄지에서의 접근성을 높인다.

- 엄지부와 편집부의 접합부가 각지지 않도록 둥글게 처리한다.

 

엄지부외에 조합키 영역은 괜찮게 잘 나왔고 팜레스트와 브리지 접합부도 무난하다. 유격 정도가 문제인데 이건 접합하는 쪽에서 필요한만큼 조정하면 될 듯 하다.  흰색 테스트 필라는 경사진 키홀이 작게 나와 필라 문제인지 점검해 보기 위해 회색으로 찍었다. 0.3높이 0.8 두께로 2시간 24분만에 신속하게 뽑았다.

 

회전에 의해 폭이 줄어드는게 필라멘트 때문인지 점검하기 위해 7도씩 기울어진 테스트를 회색으로 뽑아 봤다. 평평한건 13.9가 맞지만 한쪽으로 기울어진건 13.8로 약간 작고 양쪽으로 기울어진건 13.7로 더 작다. 확실히 회전의 영향을 받기는 하되 13.7만 해도 잘 끼워져 필라멘트만 정상이면 별 문제 없을 듯 하다.

엄지 10도 정도면 적절한 각도인 듯 한데 제품 만들어서 더 써 봐야 정확히 평가할 수 있다. Num10도는 작아 보여 15도로 늘리는게 좋겠다. 그런데 육안상 암만 봐도 엄지가 10도는 안되는 거 같아 각도기로 재 보니 5도밖에 안된다. 파워포인트로 확인해 보니 과연 10도가 아니며 틴커캐드에서 10, 7도 기울여 봐도 역시 다른 각도이다.

 

제작 과정에서 애초에 15도 기울인걸 5도를 빼서 맞춘건데 기울여 놓고 전체 상판을 다시 7, 7도 기울여서 결국은 절반밖에 안되는 듯하다. 애초의 각도는 상판끼리의 각도였지 수평을 기준으로 한게 아니었다. 방금 만든 건 수평 기준으로는 고작 3도 정도만 기울어진 셈이다.

중간에 각도를 임의로 재조정하다 보니 이렇게 된건데 처음부터 각도를 매기는 순서를 잘 지켜야 정확한 각도를 만들 수 있다. Num의 각도도 정확하지 않고 엄지판 모서리에 라운드를 주는 것도 미리 해 두어야 모양이 정확하게 나온다. 다음 테스트는 엄지 12(수평 기준으로는 5), Num 15(수평 기준 7)로 만들어 보자.

0.3/0.8로 뽑았더니 하판은 1시간 플레이트는 6시간만에 나왔다. 자기 전에 걸어 놓고 일어나서 수확 가능한 일정이다. 빨리 뽑는건 좋은데 묵은 필라다 보니 서포트 분리가 좀 힘들었다. 그외 나머지는 굉장히 성공적이다.

 

엄지의 위치나 각도, 높이는 이상적이라고 평가하기는 이르지만 장기간 테스트 가능한 무난한 수준이다. Num 15도 기울인 것도 엄지에서의 접근성이 좋아 괜찮다. 베드에 평탄도에 문제가 있는지 바닥 수평이 약간 틀어졌는데 이건 어쩔 수 없는 문제다. 종이 테이프로 수평을 맞추는 수밖에 없다.

하판도 틴지 잘 들어가고 고정도 잘 된다. 좌우 각 0.5미리씩 갭을 줬는데도 거의 딱 맞게 들어간다. 바닥에 있는 나사는 머리를 더 집어 넣도록 나사길을 깊이 만들고 하판 길이도 10미리 더 내려와도 될 거 같다. 왼쪽은 어차피 펑션을 붙여야 하니 아직 완성이라 할 수 없고 오른쪽은 수정 후 0.2미리 레이어로 하고 필라도 회색으로 제대로 뽑아 보자.

수평 대칭 후 매크로포트, 틴지홀도 그냥 두기로 한다. 틴지홀을 없애면 나사 구멍이 없어져 곤란하고 매크로포트 있어도 별 방해는 되지 않으니 그대로 대칭만 시켜서 뽑으면 된다. 내가 편한게 장땡이다. 인필30%로 대략 12시간 걸린다. 날곰은 같은 옵션이되 아랫부분 잘라 내고 수평확장 0.2로 주어 구멍이 맞는지 5시간만에 테스트해본다.

12시간의 기다림 끝에 오른쪽 플레이트와 하판이 나왔다. 회색 필라는 괜찮을까 했는데 거미줄 엄청나고 키홀도 조금씩 작다. 노즐 온도가 210도여서 그렇지 않은가 싶은데 200으로 낮춰 봐야겠다. 이 부분은 확인해 보니 큐라의 디폴트가 200인데 내가 210으로 잘못 조정해 놓은 것이다. 옵션은 항상 디폴트에서 시작하는 버릇을 들여야겠으며 출력 전에 잘 확인해야 한다. 딱 쓰는 옵션만 빼고 나머지는 모두 숨겨 두었다.

서포트는 잘 뜯기는데 스위치 끼우는데 칼질이 필요하다. 조금씩 작게 나와 시간 많이 걸리게 생겼다. 하판은 날곰으로 뽑았는데 아주 꼭 맞다. 다음은 날곰으로 구멍 수평 확장 0.2를 적용한 것인데 13.9 구멍을 양쪽으로 확장하니 14.3이 되어야 하나 자체 수축으로 인해 다시 13.9가 될 것으로 예상했다.

그러나 막상 뽑아 보니 13.8도 있고 좁은건 13.1까지도 있어 이대로는 못 쓸 거 같다. 기울어진 부분에는 구멍 수평 확장이 제대로 안 먹는 모양이다. 스위치가 그냥 꽁으로 들어가는 부분이 거의 없어 내가 옵션을 잘못 줬나 싶기도 하다. 혹시 날곰으로 찍으면 더 깔끔하게 잘 나올까 했는데 어떤 프린터를 쓰나 똑같을거 같다.

브리지를 꽂아 보니 너무 깊이 들어가 빼기도 어렵고 모양도 좋지 않다. 접합부 두께가 6미리이니 6.3 정도면 적당할 거 같아 뽑아 봤는데 안쪽이 경사로 인해 낮아 전부 들어가지 않는다. 구멍 깊이를 7미리로 조정한다. 오른쪽은 그대로 복사해서 만들되 이번에는 매크로포트, 틴지 포트 구멍을 없앴다.

케이블 홀이 적절한지 테스트하기 위해 저번에 사둔 14핀 케이블을 통과시켜 보았다. 홀 크기는 충분하고 고정 장치도 만들어 두었다. 안쪽으로 납땜부까지 각각 20센티, 중간의 최대 거리를 15센티 정도 확보해야 하므로 대충 60센티 길이는 잘라야 한다. 이 케이블이 미터당 5000원꼴이라 케이블값도 만만치 않다. 브리지가 잡아 주겠지만 케이블이 좀 거센데 더 얇은 선을 찾거나 아니면 칩을 양쪽으로 두고 직렬로 연결하는 방법을 연구해 봐야겠다.

다음은 필라멘트와 키홀을 다시 테스트한다. 이번에는 파란색을 써 볼 예정인데 이 필라의 키홀 상태가 어떤지 경사에 대해 키홀의 크기가 제대로 나오는지 점검하기 위해 8칸만 뽑아 봤다. 키홀이 터무니없이 나오면 대량 생산이 어려우니 아예 다시 만드는게 더 낫다.

테스트를 찍어본 결과 합격이다. 색상도 화사하게 괜찮아 보이고 키홀도 13.8에서 앞뒤로 0.1미리 차이여서 스위치가 잘 들어간다. 거미줄도 거의 생기지 않아 품질도 괜찮아 보인다. 이제 펑션영역을 만들어 붙이고 왼쪽 플레이트를 완성하자.

23호의 펑션과 같은 방법으로 만들되 수직 피치와 각도가 다르다. 16.5*15피치로 키홀을 12개 나열하고 그룹간은 3미리 더 띄운다. 그룹간은 결국 4미리 간격이다. 나사구멍, 케이블홀 등은 당장은 필요치 않으며 엠블렘의 숫자 정도만 바꾸면 된다.

세 개의 플레이트가 다 완성되었다. 펑션과 왼쪽은 원본 따로 유지해 놓고 접합부 벽을 없애 합친다. 펑션의 오른쪽 벽은 그룹핑 해제 후 벽 지우고 다시 합치면 되지만 플레이트는 위쪽을 자르는 각도가 두 개라 복잡하다. 엄지쪽 각도로 자르는 구멍과 벽은 별도로 그룹핑 한 후 전체 그룹핑해야 한다.

174 * 118의 큰 플레이트가 완성된다. 이제 찍어 보자. 인필 30%13.09시간 걸리며 107g이다. 인필 50%13.41h113g인데 그냥 이걸로 찍자. 사실 인필이 별 의미는 없지만 기둥이 없어 튼튼하게 채우는게 좋을 듯 하다. 14시간을 기다려 결과는 나왔지만 완전 실패다.

잘 찍다가 상단부에서 탈조가 두 번 발생했다. 노즐이 이동하다 출력물에 걸릴 때 흔히 일어나는 현상인데 서포트가 많다 보니 그런 듯 하다. 우상단을 보면 수직으로 올라가야 할 벽이 계단이 두 번이나 져 있다. 키홀 크기는 이상적으로 딱 맞고 색감도 무난하며 거미줄도 거의 없고 팜레스트도 잘 맞다. 하지만 형편없이 틀어져 버려 쓸 수가 없다.

 

, 모델링상의 문제점도 발견되었는데 펑션과 본체의 라운드 때문에 윗면만 붙어 있을 뿐 아랫면은 닿아 있지 않다. 더 가깝게 땡기든지 아니면 별도의 보강벽을 추가해야 한다. 키캡을 꽂아 보니 더 땡길 여유는 없고 보강벽을 안쪽에 추가해야겠다. 서로 떨어져 있다 보니 본체 바닥면이 위로 뜨기도 했다. 문제가 참 많다.

탈조가 발생하는 이유는 기기 특성인데 Z홉 옵션을 꺼 놔서 그런 듯 하다. 오른쪽은 이 옵션 켜 놓고 다시 걸어 놨다. 12시간 후 새벽에 오른쪽 플레이트가 완성되었는데 이것도 완전히 실패다.

 

키홀 크기가 13.1~14.0까지 들쭉날쭉 지 맘대로이다. 도대체 왜 이런지 모르겠는데 필라가 문제인지, 아니면 프린터가 문제인지 알 수가 없다. 게다가 좌상단은 완전히 들떠 버렸다. 날이 갑자기 쌀쌀해져 그런지 모르겠는데 프린터 품질에 문제가 있는 듯 하다. 안착이 잘 안되니 모델 수정해서 23호처럼 밑바닥 넓힐 수 있는 곳은 넓혀 놔야겠다.

탈조, 안착, 키홀 등의 문제가 발생해 프린터를 바꿔볼까 해서 가이더와 날곰으로 샘플을 찍어 봤다. 날곰이가 지금까지 잘 찍어 줬고 보온이 잘 되어 바닥이 잘 뜨지도 않아 키홀만 맞추면 쓸만하다. 가이더는 그대로 찍은건데 13.6~7사이로 측정된다. 약간 빡빡한 감이 있지만 스위치가 잘 들어가며 고정도 잘되는 편이다. 일부는 칼로 약간 쓸어주면 들어간다.

날곰은 구멍 확장을 0.2로 주나 0.4로 주나 별반 차이없이 13.3~6 사이이며 특히 경사가 많이 진 곳의 키홀이 좁다. 0.4로 확장한 구멍이 겨우 0.1 정도 커 이 옵션이 제대로 동작하고 있는건지 의심스럽다. 평평한 곳에서 찍으면 그나마 키홀이 제대로 나오지만 경사가 지면 일반적으로 줄어든다. 가만 생각해 보면 구멍이란 같은 평면에 있어야 인정되는거지 기울어져 있으면 구멍으로 생각하지 않을 듯 하다. 과연 그런지 확인해 봤다.

 

왼쪽이 0, 오른쪽이 최대치인 1인데 좌하단의 평평한 키홀만 확장될 뿐이고 경사진 키홀은 확장되지 않는다. 게다가 위쪽은 일부만 확장되어 키홀이 일관되지도 않고 묵은 필라의 경우 테두리의 계단이 안쪽으로 흘러 조금씩 삐져 나오기도 한다. -1로 축소해 보면 더 명확히 보인다.

수평 확장 옵션을 도입한 이유는 하나의 키홀로 하나의 모델만 만들고 모든 프린터에서 옵션 바꿔 가며 출력하겠다는 작전이었다. 일반 사용자에게 배포할 때도 모델을 두 개 배포하기 번거로운 문제도 있다. 그러나 이 작전은 경사면에서는 통하지 않아 완전히 실패다. 프린터마다 키홀 크기를 따로 만들어야 정확하다. -> 차라리 전체적으로 스케일링을 하는 방법이 더 현실적이다. 13.713.9로 늘리려면 1.5%만 확대하면 된다. 이 경우 키캡만 빼고 다른 부품도 일괄 확대해야 한다. 차후 이 방법도 써 보자.

경사면이 문제이니 평면 기준으로 키홀 크기를 결정하는 것은 부적당해 보였다. 현재 소젯의 키홀은 대부분 기울어져 있으며 최소 7, 최대 27도까지 기울어져 있다. 키홀 테스트부터 더 정밀하게 다시 해 보되 기본 키홀을 14.1로 잡고 테스트를 만들어 보자. 오늘 새로온 킹룬2호로 찍어 봤는데 이것도 엉망이다. 14.1이나 14.0으로 정직하게 나와 버려 헐렁하고 기울어진게 더 헐렁하다. 그래서 13.9로도 다시 테스트를 뽑아 봤다.

13.9로 하니 모든 구멍이 적당하게 잘 나온다. 날곰으로 14.1 키홀을 뽑아 봤는데 이 또한 아주 쓸만하다. 모든 구멍이 13.7~8 사이로 일관되고 찌꺼기없이 깔끔하다. 킹룬은 13.9, 날곰은 14.1이 맞고 가이더는 그 중간쯤 된다. 킹룬이 정 못 뽑아 준다면 날곰으로 다시 돌아가는게 나을 듯 하다. 키홀 크기가 바뀌면 모델링은 처음부터 다시 해야 한다.

필라멘트 문제와 Z홉 옵션의 문제를 일단 의심해 보고 흰색 필라로 Z홉 다 주고 다시 뽑아 보자. 안착 및 미끄럼 방지를 위해 플레이트 벽면에 6미리 사각형을 덧대 위, 왼쪽벽은 10미리로 두텁게 만들고 아래쪽에도 빈 공간에 기둥 및 미끄럼 방지를 위한 사각형을 깔았다. 23호에도 있던건데 귀찮아 생략했더니 문제가 생겼다. 아무래도 4미리 벽만으로는 허약하고 안착이 잘 안되어 들뜨는 현상이 있다.

왼쪽 플레이트는 펑션쪽까지 확장하고 오른쪽 플레이트는 틴지 자리에도 세로바를 대 10미리로 만든다. 하판은 그만큼 줄어 들어야 한다. 다시 12시간을 기다린 끝에 출력 결과가 나왔는데 갈수록 더 엉망이다.

 

일단 거미줄이 많고 키홀은 13.3~7 사이로 좁다. 뿐만 아니라 키홀 주변이 지저분해서 칼질없이는 끼울 수가 없다. 안착은 비교적 잘 되었지만 케이블 홀 근처가 떠서 위로 말려 올라갔을 뿐만 아니라 위쯤에서 크랙까지 발생했다. 이 정도 품질이면 킹룬은 아예 플레이트 제작에는 사용할 수 없는 듯 하다.

처음 산 킹룬이 압출이 좀 안 좋아졌는지 플레이트 일부가 바스락거리기도 한다. 게다가 묵은 필라라 더 그런 듯 하다. 마지막으로 속는셈치고 새로 산 킹룬2호에 회색 필라로 딱 한번만 더 찍어 보자. 첫 레이어 수평 확장 빼고 인필30Z홉은 끄고 속도는 60이되 이동속도는 100으로 낮추어 찍어 본다. 안착 잘되라고 새벽에 온풍기까지 켜 줬는데 중간쯤까지는 잘 나오고 있지만 내일 점심이 되어야 확실히 알 수 있다. 이거 안되면 킹룬으로 플레이트 찍는건 포기한다.

이번에는 제대로 성공했다. 오른쪽 먼저 나왔는데 칼질 하나 안하고도 스위치 잘 들어간다. 이어서 왼쪽 출력했는데 14시간만에 잘 나왔다. 이딴식이니 하루가 쑥 가버리는거다. 키홀 크기는 13.5~8 사이인데 모두 부드럽게 잘 들어간다. 가장 높은 곳이 23호는 31인데 24호는 각도가 7도로 늘어나 35.74.7미리나 더 높아졌다.

회색 필라에 레벨링 잘 맞췄고 실내 20도 유지하느라 초반에는 온풍기까지도 틀어 줬더니 괜찮게 나오는 듯 하다. 킹룬 프린터 자체는 쓸만한데 묵은 필라와 글로스 블루 필라가 플레이트용으로 적합하지 않았다. 목적한 바는 이루었지만 자잘한 문제가 많다. 이걸 알아내기 위해 뽑은거니 수정 사항 점검해 보고 적용하자.

 

- 엄지가 너무 멀다. 기존 배치에 익숙해서 그런지 모르겠지만 SPEnt 중간에 엄지가 자꾸 걸치고 BS까지는 쭉 뻗어야 한다. MEdit 거리가 현재 2.5인데 원래대로 6미리로 해야겠다. 5도 기운 각도는 적당하되 위로는 프레임이 겹칠 정도까지 바짝 더 올린다. 23호에 비해 멀다.

- Num의 위치가 낮아 엄지로 누르면 Shift키가 엄지에 닿으며 집게로 누르기도 불편하다. 2미리 정도 위로 올린다. 각도도 15도는 조금 많은 거 같으니 10도만 기울인다. 엄지에서 약간 멀지만 잘 맞추면 엄지에서 접근성이 개선될 거 같다.

- 하판 아래 팔은 안착면과 미끄럼 방지를 위해 필요하다. 필요한 곳에 다 둘렀는데 틴지 자리는 뺐다. 틴지를 6미리 안으로 밀고 매크로포트 직전까지 6미리 팔을 두른다.

- 후면 나사 구멍은 안착부 때문에 하판쪽에 나사 구멍을 배치할 수 없다. 3점으로도 고정은 잘 되니 지워 버린다.

- 팜레스트 접합부가 좌우로 놀고 심지어 아래로 빠져 버린다. 구멍을 줄이기보다는 팔의 폭을 키워 강도와 고정력을 높인다. 구멍은 5, 팔은 4여서 수평 공차 0.5가 적용되어 있는데 실측해 보면 좌우 0.4만큼은 비어서 논다. 팔 두께를 4.6으로 늘리고 안쪽 걸쇠폭은 0.4만 늘린다. 팔길이도 3.1에서 3으로 줄인다. 몇번의 조정 과정을 거쳐 다음과 같이 조정했다.

필라멘트에 따라 공차가 달라지는데 이건 어쩔 수 없다. 그때 그때 필요에 따라 공차를 조정해 가며 뽑기로 한다. 꼬끼리발 제거를 위해 첫 레이어는 -0.5 축소하고 뽑은 후 나머지 후처리한다. 널널한 건 어쩔 수 없지만 좀 빡빡해도 차라리 칼질을 하는게 낫다. 칼질 했다가 헐랑하면 벽면에 테이핑을 하는 작전도 써볼만 하다. 다음 버전에는 자석을 써 보는 시도도 해 봐야겠다.

- 마찬가지로 브리지도 흔들거리지 않게 조정한다. 팜레스트보다는 더 빡빡해야 하는데 지금도 충분히 빡빡해서 똑같이 만들기로 했다. 6도짜리 만들어 꽂아 보니 꽉 끼고 많이 흔들리지 않아 좋다. 다만 분리할 때 조금 힘이 든다. 5도짜리까지 뽑아 보니 단단히 잡아주는게 썩 괜찮은 거 같고 걸쇠 하나짜리로 만든건 잘 한 거 같다.

- 플레이트의 수평이 안 맞다. 분리할 때까지는 거의 맞는데 식으면 틀어지는 모양이다. 이건 어쩔 수 없는 일인 듯 하니 테이핑해야 한다.

 

상기 문제점은 하판까지 뽑아본 후에 한꺼번에 수정하자. 안쪽에 팔이 생김으로 인해 하판을 새로 만들어야 한다. 팔영역을 제외하고 펑션영역까지 덮도록 만들었다. 수평 공차는 0.5를 주되 수직 공차는 주지 않았는데 만들어 보고 필요하면 넣자. 안쪽팔 때문에 후면에 있는 고정 나사 구멍은 쓸 수 없는데 세 점 정도만 고정해도 될 듯 하다.

왼쪽은 3시간 오른쪽은 2.18시간 걸리는데 킹룬 두대로 각각 뽑았다. K1에 탈조가 발생했는데 레벨링이 느슨해서 그런듯해 조정했다. K2는 틴지쪽 나사 고정부를 뽑다 부러져 버렸다. 다 나오기는 해 일단 장착했다.

오른쪽을 파란색으로 한번 더 뽑았는데 나사 고정부가 또 부러져 점검해 보니 모델이 잘못됐다. 틴지 케이스 드러내면서 기둥이 공중에 붕 떠 있어 그렇다. 딱 맞게 잘 들어가되 위쪽에도 0.5 공차를 주는게 좋을 거 같다. 아래쪽은 비어 있으니 공차가 별 의미 없다. 틴지 6미리 옮긴걸로 하고 수직 공차 0.5를 더해 새로 만들었다.

틴지 옆의 팔은 상단 기준 41미리(3미리 아래에서 시작하면 38미리) 길이로 본체에 달아 주면 된다. 왼쪽은 오른쪽을 복사한 후 길이를 펑션 영역폭인 34만큼 빼고 틴지 케이스만 제거하면 된다. 당장은 뽑아봐야 달 수 없으니 본체 완성 후 다시 뽑아 보자.

키캡도 추가로 뽑는다. 24호에 쓸만큼 한 셋트 있지만 색상이 부족하고 프린터 역할도 재배치할 겸 킹룬으로 테스트 키캡을 뽑아 봤다. 표준은 0.2높이 0.44 두께이되 0.12로 높이를 줄여 보고 0.25로 두께도 줄여 봤다.

왼쪽이 표준인데 가까이서 보면 거칠어 보이지만 잘 나온 편이다. 가운데는 높이, 두께를 다 낮춘 0.12/0.25 조합이되 표면만 섬세할 뿐 각인이나 측면이 오히려 무너진다. 오른쪽은 0.12/0.44 조합이되 시간만 조금 단축될 뿐 고급으로 뽑은 것과 별만 차이 없다. 셋다 십자홀은 잘 나왔으며 체결에는 문제가 없다.

위쪽 파란색은 킹룬1호로 뽑은건데 예상보다 잘 나왔다. 가이더보다는 거칠지만 못 쓸 수준도 아니고 각인 시인성이 나쁘지는 않다. 가이더보다는 떨어지지만 킹룬으로도 키캡을 뽑을 수 있다는 사실을 확인했다. 어드벤처로 키캡을 뽑으려고 수리를 시도했는데 노즐이 망가진 듯 하다. 당분간 키캡은 가이더의 독박이다.

부속품 먼저 정비했는데 다 잘 맞고 쓸만해졌다. 다음은 플레이트를 조정한다. 엄지 영역을 왼쪽 위로 이동하고 Num 높이, 각도 조정하고 틴지 6미리 이동 후 팔을 둘렀다. 처음부터 만들지 않고 만들어 놓은 걸 수정하다 보니 정확도가 좀 떨어지는데 테스트 후 다시 만들든가 해야겠다. 수정 후 필요한 부분만 0.3미리로 뽑았다.

엄지 거리는 적당히 잘 맞는 거 같고 Num도 엄지로 눌렀을 때 닿지 않는다. 다만 Num 플레이트로 인해 위의 Fn키홀이 살짝 가려지는 문제가 있는데 Num을 조금 아래로 이동시키면 되겠다. 수정 후 오른쪽만 다시 출력 걸었는데 딱 12시간 걸린다. 뽑아 보니 아주 잘 나왔으며 스위치도 잘 들어가고 하판, 브리지, 팜레스트도 딱 맞게 결합된다.

이대로 납땜해도 될 듯 한데 이어서 왼쪽도 펑션 영역 결합해서 뽑았다. 이번에는 체험단에 선정된 스팅3D 실크 빨간색 필라로 뽑는다. 오른쪽은 파랑으로 뽑았는데 성공하면 각 두벌씩 만들 계획이다. 14시간 걸리니 내일 아침이나 되어야 결과가 나온다. 아침에 성공적으로 결과 나왔고 이걸로 스팅3D 실크 체험기 올렸다. 크랙이 한 군데 발생하긴 했지만 플레이트용으로는 괜찮은 거 같다.

좌적우청으로 할까 하다가 아무래도 그건 아닌 거 같아서 오후에 오른쪽을 실크로 다시 걸었다. 12시간이니 새벽에나 나오는데 그 동안 19~22호까지 시제품을 정리했다. 그동안 뭘 그렇게 만들었는지 버릴 것도 많다. 24호 실패한 건 죄다 버리고 22호도 칩을 연결하지 않았으니 해체해서 버렸다. 새벽에 오른쪽 플레이트 무사히 완성해서 조립을 마쳤으나 펑션 키캡 쓸만한게 없어 다시 뽑고 있다.

플레이트도 잘 나왔고 접합부도 꽤 튼튼하며 하판도 딱 맞다. 이전 버전에 비해 구조가 깔끔하고 탄탄해졌다. 엄지 각도 기울어진 것과 Num키 각도 준 것도 괜찮은 듯 한데 아직 23호와 별 다른 차이점을 실감하지는 못하겠다. 내일은 바로 납땜을 하기로 하고 새벽에 다이오드 말기 등의 예비 동작을 취해놔야겠다.

플레이트 제작 과정

23호까지는 통합 정리했으나 기록이 지저분해져 24호부터는 새로 기록하되 간략하게 요약 정리하고 이후의 제작 과정도 여기에 기록하기로 한다.

 

- 13.9*13.9*1.1 윗부분에 15*13.9*3.05 아래부분을 겹쳐 킹룬용 키홀을 만든다.  아래위로 0.05씩 포개 회전 에러를 제거하고 그룹핑한다. 플레이트는 17*18*3이며 키홀과 그룹핑한 후 바닥에 내린다. 높이3 키홀은 문자영역에만 사용한다.

  

- 키홀 6개를 16.5미리 간격으로 나열한다. 안밖열은 tan7 * 8.5(키캡높이) = 1.04 더 띄운후 플레이트 안쪽폭을 18로 확장한다. 7도 기울여 바닥에 내리고 중지2미리 위,새끼3미리 아래로 내린다.

- 16.45미리 간격으로 4행을 만든다. 키캡간 15미리가 되려면 경사에 의해 좁아지는 거리 tan10*8.5=1.45를 더해야 한다. 0행은 너무 벌어져 0.7미리 아래로 내려 좁힌다. 더 내리면 회전시 키홀이 침범 당한다.

1,3행은 10, 0행은 20도 기울인다. 키홀간의 수직 위치를 눈대중으로 맞추어 열내에서 둥그런 모양이 되도록 한다. 스냅 0.1미리 상태에서 파랑, 빨강이 반쯤 섞이는 위치에 맞춘다.

전체 선택시 -0.15 정도에 있는데 -3만큼 더 내려(-3.15) 2행 윗면의 Z 좌표가 0의 위치가 되도록 한다. 플레이트 표면 4미리 아래이다.

- 사방을 플레이트로 두르고 모든 부분을 메꾼다. 이전 모델의 플레이트를 복사한 후 위치만 조금 조정하면 된다. 엄지 영역은 비워 둔다.

- 안쪽 조합키 2개를 배치한다. FnV옆 약간 아래에 그냥 놓으면 된다. Num18*18*4 플레이트와 중앙정렬하고 플레이트를 복제하여 위에 구멍을 얹고 높이를 6으로 늘리고 키홀 아랫부분을 8미리로 충분히 늘려 둔다. 수직으로 10도 기울인다. Fn보다 수직 위치를 1미리 정도 올린다.

- 엄지키는 23호의 것을 가져와 키홀 크기를 13.9로 변경한다. 4미리 플레이트를 감싸고 왼쪽 모서리에 5*5크기의 둥근 구멍을 대 둥글게 깍아 둔다. 수평 12도 기울이면 수평 각도를 뺀만큼 기울어진다. 수평 7도면 엄지는 5도 기울어지는 셈이다. EditM의 키홀 거리를 6미리로 하고 위로 프레임끼리 겹칠만큼 밀착한다. 편집쪽보다 2미리 더 수직 위로 놓는다. 엄지와 메인 플레이트 사이의 구멍을 삼각형으로 틀어 막는다.

 

- 그룹핑하여 사본을 백업해 둔다. Z축으로 3도 회전하여 자판을 기울인다.

- 편집키를 16.5*15피치로 배치한다. 그 위에 상하좌우 1미리 더 넓은 구멍을 얹고 그 아래 상하좌우 3미리 더 넓은 두께 3의 플레이트를 배치한 후 전체 2미리 내린다. 키홀 상단 높이가 2이며 메인 플레이트의 2미리 아래쪽이다. 부품 백업해 두고 회전없이 좌하단 문자키 수직 8미리 아래에 배치한다.

- Alt를 원점에 먼저 놓는다. 수평 위치는 모두 0이며 수직으로는 19, 38, 54에 놓는다. 간격은 19, 19, 16이다. 이 상태 그대로 문자 왼쪽에 놓되 Ctrl+와 맞도록 하고 Alt의 오른쪽변과 좌하단 문자키와 1미리 정도의 간격을 띄운다.

  

 

- 전체 그룹화하고 수평 7, 수직 7도 기울이되 반드시 수평 먼저 기울인다. D를 눌러 바닥에 앉힌 후 가장자리에 수직 기둥을 대 수직으로 잘라낸다. 플레이트 크기를 정수에 맞추고 원점에 위치시킨다. 24호는 140*118이다. 팜레스트를 위해 가급적 아랫면을 많이 남겼다.

- 바닥에서 1미리 위로 든다. 4미리 두께의 수직벽을 두르고 하판 아래 평편에 위쪽으로 사각 구멍을 댄 후 1미리 위로 들어 일부 겹치도록 한 상태에서 벽 윗부분을 잘라낸다. 0.1미리만 겹쳐도 되지만 충분히 겹쳐 두면 차후 미세 조정할 때 다시 자르지 않아도 된다. 엄지 부분도 같이 잘라내되 엄지 영역만 자른다. 엄지 아래쪽에 삼각형 구멍이 생기는데 메꾼다.

-펑션 접합부는 이번 버전에서는 생략한다. 아래쪽에 편집키 2, 3열 중앙에 팜레스트 접합홀을 배치한다. 안쪽에 홀을 팔 기둥도 배치해야 한다. 오른쪽에 브리지 접합홀을 배치하되 수직 기울기와 같은 7도 기울이고 깊이는 7미리로 판다. 안쪽 기둥은 틴지 영역을 방해하지 않도록 공중에 띄워 둔다.

- 하판을 131*90*2로 만든다. 좌우위에 0.5만큼 간격을 둔다. 틴지 케이스를 오른쪽 끝 6미리 지점에 배치한다. 케이블 고정 구멍 2, 하판 고정 나사 구멍을 2개 배치한다.

- 플레이트 뒷면에 틴지홀 ,오른쪽에 매크로포트, 케이블홀, 나사 구멍 배치. 왼쪽 나사 구멍은 하판을 X4.5 Z1 위치에 두고 위로 올린 후 나사 구멍 복사해서 만든다.

- 케이스 4면에 라운드 처리한다. 여기까지 한 후 그룹해제하여 Num키홀을 살려 놓고 통째로 그룹핑한다. 그렇지 않으면 Num의 오른쪽변이 벽면에 의해 덮혀져 버린다.

- 하판을 (4.5, 38, 1)에 놓고 나사 구멍이 다 맞는지 확인한다.

납땜

414. 여기서부터 24호로 타이핑함. 모든 부품을 다 뽑고 준비했으니 이번주에 납땜을 하기로 하고 13일부터 작업을 시작했다. 게시판에서 본 다른 사람의 키보드 작품을 보니 납땜이 정말 잘 되어 있다. 컨넥터를 사용했는데 어떻게 고정했는지는 설명이 없어 잘 모르겠지만 본드로 붙인 거 같지는 않다. 다이오드를 아래 방향으로 연결한게 특이하며 열선도 곧게 길이에 딱 맞게 되어 있다.

열선을 일일이 탈피해서 연결한건지 아니면 한번에 연결한건지 잘 모르겠지만 납을 적게 쓰고도 깔끔하게 잘 붙인 거 같다. 인서트 나사에 배터리까지 넣은 거 보니 확실히 프로의 솜씨이다. 이 정도 수준이 될 때까지 연습해야 할텐데 사실 사진의 저것도 만드는데 소젯만큼의 시간은 걸렸을 거 같다.

왼쪽에 다이오드 먼저 배치한다. 나도 아랫쪽으로 배치해 봤는데 제일 윗행만 조금 편할 뿐 나머지 행은 다이오드가 가로바에 걸려 오히려 배치가 더 어렵다. 한번 따라해 보기는 했지만 굴곡이 있어 위로 돌리는 기존 방식이 더 낫다. 아랫 부분은 다이오드를 위로 돌렸는데 익숙해서 편하다.

소젯은 굴곡이 있고 스위치 사이의 가로, 세로 바가 돌출되어 있어 다이오드가 여기에 걸치는 것은 바람직하지 않다. 스위치 기둥 옆에 두는게 더 안정적이다. 다이오드 배치하는데만도 한 시간이나 걸렸는데 이것 저것 고민할게 많아서 그렇다. 펑션이 붙어 있어 점프선을 안 써도 되니 그나마 빠르다.

납땜은 오히려 시간이 덜 들었는데 새로 산 납땜기가 성능이 괜찮은 거 같다. 역시 공구가 좋아야 한다. 점프선은 그리 많이 필요치 않다. 오른쪽은 상대적으로 간단하고 한번 해 봐서 금방 끝냈다.

좌우 연결을 위해 14핀 케이블을 사 두었는데 7가닥은 열선이고 7가닥은 행선이다. 열선은 틴지에 박고 행선은 다이오드에 연결한다. 80미리 정도 탈피하면 내부에서 선 배치하기 부족하지 않은데 조금 더 해도 될 거 같다.

 

이후 열 납땜을 하는데 이 부분에서 시간을 다 까 먹고 있다. 연선 걸치기 좀 쓰다가 그냥 단선 중간 중간을 여유있게 탈피해 고리 마는 작전을 주로 사용했다. 납땜은 잘 되는 편인데 GTMX 스위치의 핀이 너무 붙어 있어 합선이 종종 발생한다.

경사진 안쪽을 땜하다 보면 납이 과다하게 먹어 행과 열이 붙어 버리는 경우가 2번 있었다. 스위치 핀이 부러져 하나 교체하기도 했다. 왼쪽 열 납땜하는데 틴지까지 붙이고 케이블 작업까지 하느라 2시간 이상 걸렸다.

이 상태에서 틴지에 펌웨어 넣고 테스트해 보니 정상적으로 잘 동작한다. 시간은 걸리지만 확실히 숙련도가 좋아졌다. 하판을 결합하려면 케이블 고정 장치가 필요한데 미리 뽑아 놓지 않아 중간에 모델링 수정해서 뽑았다. 케이블 닿는 부분에 삼각형 이빨을 배치하여 튼튼하게 잡도록 했다. 케이블이 두꺼워 조금 볼록하지만 잘 고정된다.

오른쪽은 열 납땜도 쉽고 케이블에서 건너온거 연결만 하면 되니 양이 많지 않아 상대적으로 금방 끝냈다. 다만 행선 하나의 색깔을 헷갈려 5행과 6행을 반대로 꽂아 다시 연결하는 실수가 있었다. 가닥이 많아지면 번잡스러워지고 실수할 여지도 많다 만든 후 브리지까지 연결해 보니 케이블이 조금 말썽이다. 너무 억세고 굵어서 고리를 말아도 바닥을 밀어 올려 키보드가 평탄하지 않다.

사실 이 문제는 처음부터 어느 정도 예상을 했었는데 실제 연결해 보니 문제가 확실히 드러난다. 더 얇은 케이블을 구해 보되 일단은 문제를 해결해야 하니 중간 부분의 케이블을 탈피해 버리는 방법을 썼다.

모양이 좀 거시기 하지만 어차피 안 보이는 부분이니 큰 상관은 없다. 브리지와 팜레스트는 무난히 잘 연결되며 나름 튼튼하다. 모든 부품을 연결한 완성샷이다.

플레이트의 수평이 잘 안 맞아 테이핑을 했는데 그래도 맞지 않다. 찬찬히 뜯어 보니 안쪽 모서리만 뜨는게 아니라 전체적으로 약간 휘어 모서리 하나만 맞춰서는 안되고 미끄럼 방지 패드를 최소한 두 곳은 붙여 주어야 좀 맞다. 안착이 잘 되어도 분리 과정에서 모서리 들뜸이 어느 정도는 발생한다. 가급적 윗면에 패드를 대서 수직 각도를 약간이라도 높이는게 낫다.

24호 제작 시간은 총 14시간 걸렸다. 물론 중간에 밥도 먹고 낮잠도 자고 쉬엄 쉬엄해서 이 정도이며 순수 작업 시간만 계산하면 7시간 45분이다. 아무리 절차를 정비하고 숙련되어도 6시간은 꼬박 걸린다고 봐야 한다. 각 작업별 소요 시간이다.

 

다이오드 말기 : 30

왼쪽 다이오드 배치 1시간, 왼쪽 납땜 45

오른쪽 다이오드 배치 40, 납땜 35

틴지, 케이블 납땜 : 40

왼쪽 열 납땜, 틴지, 케이블 연결 : 2시간 10

오른쪽 열 납땜 : 1시간 25

 

23호는 7시간 30분 걸렸다고 기록되어 있는데 결국 비슷하다. 공구를 조금 더 좋은 것으로 장만하고 열납땜 스킬을 늘려야 한다. 열선 탈피만 신속하게 해도 시간을 상당히 단축할 수 있을 듯 하다.

소젯 1.35 개선

24호 완성 후 소프트웨어를 좀 더 업그레이드한다. 전에도 많이 수정했지만 더 손질할게 많이 남아 있다. 버전은 아직 1.35이며 릴리즈 날짜를 419일로만 수정해 두었다.

자판종류 지원

이제 슬슬 오픈 테스트를 준비해야 하는데 현재는 한글종류3에만 맞춰져 있어 종류12로 맞춘 환경에서는 동작하지 않는다. 이러면 테스트를 할 수가 없으니 두 종류도 지원해야 한다. 각 키보드 종류별 차이부터 알아 봤다.

 

종류1 : 오른쪽 ALT로 한영전환, 오른쪽 Ctrl로 한자 입력. 디폴트 드라이버이며 사용자가 가장 많다.

종류2 : 오른쪽 Ctrl로 한영전화, 오른쪽 Alt로 한자 입력. 사용하는 예를 거의 본적이 없어 당분간은 지원 안해도 될 듯 하다.

종류3 : Shift+Space로 한영전환, Ctrl+Space로 한자

103: 한글, 한자키가 따로 존재한다.

 

제어판의 시간 및 언어/언어 페이지에서 한국어를 눌러 펼치고 옵션 버튼을 누른다. 레이아웃 변경키를 눌러 대화상자를 열고 원하는 종류를 선택한다. 꽁꽁 숨겨 놔서 찾기도 어렵다. 윈도우7은 드라이버를 새로 설치해야 한다.

 

먼저 타입별로 후킹코드를 다르게 적용했다. kType 변수가 키보드 타입이고 종류 1, 2, 3103키가 각각 3, 4, 5, 6에 대응된다. 기존의 종류3 코드는 if문으로 감싸기만 하면 되고 종류1일 때의 후킹은 다르게 한다.

 

if (kType == 5) {

     // 키보드 종류 3에서는 Shift+Space 입력시 VK_HANGUL이 온다. OnKey와는 완전히 다르다.

     // 가상키를 Space로만 바꿔 놓으면 ProcessKey에서 공백으로 처리한다.

     if (kb->vkCode == VK_HANGUL) {

          vk = VK_SPACE;

          log("VK_HANGUL -> VK_SPACE");

     }

 

     // Ctrl + Space 한자키는 그대로 보내 준다. 그래야 문자표와 한자창이 열린다.

     if (kb->vkCode == VK_HANJA) {

          log("VK_HANJA 시스템으로 전달");

          return 0;

     }

}

 

if (kType == 3) {

     // 키보드 종류1에서는 우Alt 누를 때 VK_HANGUL이 온다.

     // 이를 VK_RMENU로 바꿔 놓으면 K_LANG을 찾아 언어 변경키로 취급한다.

     if (kb->vkCode == VK_HANGUL) {

          vk = VK_RMENU;

          log("VK_HANGUL -> VK_RMENU");

     }

     // 종류1에서는 우Ctrl을 누를 수 없어 실제 한자키는 누를 수 없다.

     // 아래 코드에 의해 한자키가 입력되면 시스템으로 보내 주기만 하면 된다.

     if (kb->vkCode == VK_HANJA) {

          return 0;

     }

     // Ctrl+Space 입력시 한자로 바꿔 보내고 키 입력 자체는 먹어 버린다.

     if (IsKeyDown(K_CTRL) && kb->vkCode == VK_SPACE) {

          KeyEvent(VK_HANJA, bDown ? AC_DOWN : AC_UP);

          return 1;

     }

}

 

종류3일 때는 우Alt에 맵핑된 Lang키가 한영을 전환하므로 이건 그대로 두면 되고 Shift + Space에 대해 한영 전환을 막고 Space만 보내 주면 된다. 한자 변환키인 Ctrl + Space는 그대로 시스템으로 전달하면 된다.

종류1일 때는 우Alt 입력시 한영 전환시 VK_RMENU러 바꿔 K_LANG을 찬도록 해 주면 된다. 한자는 우Ctrl키가 없어 사실 누를 수 없되 Ctrl + Space 입력시 VK_HANJA로 바꾸면 된다. 이 메시지가 인젝트되어 다시 후킹으로 전달되는데 이때는 시스템으로 보내 준다.

두 키보드 종류에 대해 한영, 한자, Lang 홀드까지 잘 동작함을 확인했는데 재부팅해가며 점검해 봐야 하므로 시간이 좀 걸린다. 종류2103키에 대해서도 기본 점검은 마쳤는데 한자까지 정밀하게 점검하지는 않았다. 두 종류의 키보드를 쓰는 사람은 극히 드물거 같고 103키는 내가 없어서 당장 테스트하기 어렵다.

키보드 종류별로 구분은 잘 했는데 현재 사용자의 키보드가 뭔지 조사해야 하는 문제가 있다. 구글링해 봐도 키보드 종류를 바꾸는 방법만 있지 코드에서 알아내는 방법은 잘 보이지 않는다. 그러다가 티스토리 블로그 (https://yjh5369.tistory.com/)에서 레지스트리에 정보가 있음을 알게 되었다.

 

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\i8042prt\Parameters

 키보드 종류

LayerDriver KOR

Override Keyboard Subtype

Override Keyboard Identifier 

한영 키 

한자 키 

101 ( 종류 1 )

kbd101a.dll

3

PCAT_101AKEY

오른쪽 ALT

오른쪽 CTRL 

101 ( 종류 2 )

kbd101b.dll

4

PCAT_101BKEY

오른쪽 CTRL

오른쪽 ALT 

101 ( 종류 3 )

kbd101c.dll

5

PCAT_101CKEY

SHIFT+SPACE

CTRL+SPACE 

한국어 103/106

kbd103.dll

6

PCAT_103KEY

한영 키 

한자 키

 

드라이버나 ID도 있지만 그냥 subtype 정수를 읽어 구분하면 될 듯 하다. 프로그램 실행 직후에 이 값을 조사하도록 했다.

 

LRESULT OnActivateApp(HWND hWnd, WPARAM wParam, LPARAM lParam)

{

     static BOOL bFirstActivate = TRUE;

     if (wParam == TRUE) {

          if (bFirstActivate) {

              bFirstActivate = FALSE;

              // WM_SIZE 후에 처리해야 상태란이 제대로 나온다.

              UpdateAllStatus();

 

              // 최초 실행시 키보드 레이아웃이 한글이 맞는지 점검하고 아니면 경고만 한다.

              TCHAR name[KL_NAMELENGTH];

              GetKeyboardLayoutName(name);

              if (lstrcmp(name, TEXT("00000412")) != 0) {

                   MessageBox(hWnd, "한글 키보드 레이아웃이 아닙니다. 소젯은 한글 키보드 드라이버 위에서 "

                        "실행되므로 다른 레이아웃에서는 정상 동작을 보증하지 않습니다.", "경고", MB_OK);

              }

 

              // 키보드 종류를 조사한다. 디폴트는 종류1로 설정했다.

              CSetting reg(false);

              reg.hive = HKEY_LOCAL_MACHINE;

              lstrcpy(reg.regRoot, "SYSTEM\\CurrentControlSet\\Services\\i8042prt\\");

              kType = reg.get("Parameters", "OverrideKeyboardSubtype", 3);

          }

     }

     return 0;

}

 

조사는 제대로 되는데 혹시라도 정보가 없거나 잘못되어 있을 때에 대한 대처는 아직 없다. 사용자가 이 값을 직접 변경하는 것도 고려해 볼만은 한데 자동 조사가 잘 된다면 굳이 그럴 필요는 없을 듯 하다. 여기까지 해 두고 더 테스트해 보기로 한다.

키보드 종류를 구분해야 후킹이 제대로 먹혀 오픈 테스트를 위해 반드시 필요한 기능인데 차일피일 미루다 이제서야 처리했다. 굉장히 어려울거라고 생각했는데 쉽게 풀린 거 같아 상쾌하다. 이래서 일단 덮어 놓고 해 봐야 한다.

매크로셋

매크로 일괄 변경 기능을 작성하기로 한다. 스타 리플레이를 볼 때 Up, Down, 일시 정지, 창토글 기능이 여기 저기 흩어져 있어 불편한데 모아 두면 왼손으로 조작하고 오른손으로 마우스만 까딱거리면 되니 편리하다. 이외에 관련키를 모아 두면 편리한 예는 많이 있을텐데 그럴려면 키의 기능을 신속히 변경하는 기능이 필요하다.

이게 가능하려면 재정의할 수 있는 키가 많아야 하는데 왼쪽에 있는 펑션키가 좋은 후보이다. 그런데 굳이 펑션키로만 제한할 필요는 없고 문자나 숫자까지도 재정의 가능성을 최대한 넓혀 두는게 좋을 듯 하다. 다만 다음 몇 가지 키는 재정의 대상에서 제외한다.

 

엄지키 6

Ctrl, Alt, Win, Fn, Num 조합키 5

 

조합키는 기능이 고정적이라 바꾸면 헷갈릴 뿐만 아니라 기술적으로도 문제가 많다. 엄지키 전체를 재정의 불가로 한 이유는 무분별한 변형을 방지하기 위해서이다. ShiftSpace를 교체한다든가 BS, Ent를 바꿔 쓸 수 있으면 경험의 파편화를 초래하여 일반성이 떨어진다.

거의 모든 키를 다 재정의할 수 있으므로 매크로 정보는 macro[100] 배열에 모두 저장할 수 있으며 K_ 열거형으로 매크로를 찾는다. 한 매크로 안에는 ;으로 세 가지 조합 상태와 :으로 여러 명령을 구분하니 조합 상태에 따라 재정의할 수 있는 기능이 거의 300개에 달하는 셈이다.

플래그는 재정의 가능하다는 속성을 빼고 반대로 재정의 금지 이미의 KEYFLAG_NOMACRO 플래그를 지정하여 사용자가 변경할 수 없도록 막는다. 매크로를 저장하는 기억 장소는 그냥 냅 두고 변경하는 코드만 막아 둔다. 디폴트 매크로를 정의해 두고 언제든지 디폴트로는 돌아갈 수 있도록 한다. 매크로를 저장하는 변수는 다음 하나로 통합한다.

 

string macro[MAXKEY];

 

키는 최대 100개까지로 정의하고 100개의 키에 대한 매크로를 INI 파일에 저장한다. 특정키에 대한 매크로는 이 배열의 K_ *번째 문자열만 보면 된다. 매크로 대화상자의 컨트롤은 자주 정의하는 매크로만 보여 주도록 일단 그대로 두었다. ProcessKey는 조합키 다음에 매크로 정의를 보고 재정의된 키는 매크로로 처리하도록 했다.

macro 배열의 정의만 바꾸면 펑션키가 다른 기능으로 즉시 바뀐다. 매크로 리셋은 Fn+*로 단축키를 정의하고 그 옆의 BLC 등으로 스타 리플레이, 동영상 감상 모드 등의 단축키 셋트를 정의해 봤는데 나름 실용성은 있다. 잠시 기능을 바꿔 쓰다가 언제든지 리셋하면 된다.

잘 동작함과 유용성은 확인했지만 해결해야 할 문제가 많다. Opt.macro[K_A] = "B" 코드는 AB로 바꾸라는 명령인데 원하는대로 동작하지 않는다. K_A는 쿼티 배치 기준이라 사실은 R자리이며 배열이 바뀌면 실제 가리키는 키도 달라져 일관성이 없다. 또 문자는 IME 모드에 따라 B가 될 수도 있고 ㅠ가 될 수도 있어 재정의의 효용성이 떨어진다.

결국 문자나 숫자를 재정의하는 것은 득보다 실이 더 많다는 판단이다. 차후 재시도하더라도 일단은 제외하는게 덜 까이는 방법이다. 셋트 조작 명령의 단축키를 뭘로 할 것인지, 몇개까지 가능한지도 결정해야 하며 리셋 방식도 더 정교해야 한다. 매크로셋은 잠시만 일시적으로 바꿔서 쓰는 것일 뿐 영구적으로 키의 기능을 변경하는 것은 바람직하지 않다.

421: 초안을 구현해 본 후 매크로 관련 기능을 대폭적으로 다시 설계했다. 먼저 대상키를 축소했다. 편집 6, 엄지 아래 4, 조합 3, 매크로패드3은 기존 재정의 가능키이고 여기에 펑션키만 추가하여 총 28개의 키만 재정의한다. 커서 이동키도 가능은 하나 기본 동작이라 제외했다. 이 정도만 해도 실용적인 목적으로는 충분히 쓸만하고 논리만 잘 만들어 두면 차후 확장도 가능하다.

매크로셋은 왼쪽 3열키의 개수에 맞춰 최대 6개까지만 정의한다. 고정 크기는 불편하고 한계가 많은게 사실이며 임의의 개수만큼 매크로셋을 생성하고 이름과 단축키까지 부여할 수 있으면 이상적이다. 그러나 매크로셋에 대한 추가, 삭제, 편집 UI가 들어가면 복잡하고 지저분해진다. 원하는 키만 재정의하는 스크립트도 고려했으나 배워야 하고 완벽하기도 어려워 위험하다.

이랬다가 단축키가 부족해 4개로 줄였다가 대화상자에서 직접 활성홯하는 방법을 도입하여 최대 10개로 늘렸다. 당분간 고정 개수로 개발하고 차후 필요시 확장하자. 정적 크기로 해 두면 샘플 매크로셋을 미리 제공할 수 있는 이점도 있다.

 

#define MAXMACRO 28                         // 매크로 지원키 개수

#define MAXMACROSET 10                       // 매크로 셋 개수

     string macro[MAXMACROSET][MAXMACRO];

 

2차 배열 하나면 여섯개 셋, 28개의 매크로를 모두 저장할 수 있다. 재정의 키가 불연속적이므로 룩업 배열을 정의하고 활성 매크로셋을 기억하는 변수도 선언한다.

 

int arMidx[MAXMACRO] = {             // 매크로 키의 배열

     K_PAUSE, K_PRT, K_SL, K_MENU, K_INS, K_NL, K_COPY, K_PASTE, K_UNDO, K_REDO,

     K_CAPS, K_FIND,K_SAVE, K_PADLEFT, K_PADRIGHT, K_PADMID,

     K_F1, K_F2, K_F3, K_F4, K_F5, K_F6, K_F7, K_F8, K_F9, K_F10, K_F11, K_F12,

};

int lkMidx[MAXKEY];                // 키로부터 매크로 첨자를 찾는 룩업. arMidx로부터 생성한다.

int nowMacroSet = 0;              // 활성 매크로셋

 

매크로 키 배열은 매크로 번호로부터 키를 찾는데 코드에서는 반대로 키로부터 매크로 첨자를 찾아야 한다. 이를 위해 룩업 배열에 각 키에 대한 매크로 첨자를 대입해 두었다. 코드에서 kidx키에 대한 매크로는 Opt.macro[nowMacroSet][lkMidx[kidx]] 참조문으로 찾으면 된다. 만약 이 자리가 비어 있으면 0번셋의 매크로를 상속받는 것으로 한다. 1번 이후의 셋은 바꾸고 싶은 매크로만 정의하면 된다. 재정의 가능키인지는 KEYFLAG_MACRO 플래그를 보고 판단하는 것으로 원상 복구한다.

매크로셋의 단축키는 앞쪽 4개만 Fn + *blc로 일단 고정하며 변경할 수는 없다. 시작시 0번 셋을 활성화하며 다른 셋으로 바꿔도 저장하지는 않는다. 매크로셋은 일시적으로만 전환하는 것으로 기획된 것이어서 저장하는게 더 위험하다. 만약 정 고정하려면 0번셋을 직접 바꾸면 된다.

매크로 키의 개수가 줄었지만 셋이 늘어 INI 파일이 번잡스러울 수도 있다. 통계 정보와 마찬가지로 28개의 매크로 정의를 __ 구분자로 나열하여 한꺼번에 저장하기로 한다. 94개 키의 값을 모두 저장하는 것에 비해 보기는 좀 복잡하지만 훨씬 짧고 명료하다.

 

macroSet0=pause__Prtsc__scrlock__menu__ins__numlock__^C;^X;^A:^C__*^V;*textonly:^V;^A:^V__*^Z__*^Y__Caps__^F__^S__^C__^V__^A__F1__F2__F3__F4__F5__F6__F7__F8__F9__F10__F11__F12

macroSet1=________________________________________@F__@E__W__@Y__P__U__@M__D

macroSet2=________________________________________Enter__PgUp__Space__PgDn__^right__#right__left__right

 

대화 상자에는 매크로셋 목록을 먼저 보여 주고 28개키의 매크로 정의를 편집하도록 한다. 에디트가 너무 많아 조금 복잡한데 차후 키보드 그림위에 명령을 문자열로 보여 주고 클릭시 편집 팝업을 열어 긴 명령도 편집할 수 있도록 하는게 좋을 듯 하다.

초기화시 0번은 프로그램 디폴트로, 나머지는 샘플셋을 대입한다. 이 디폴트는 프로그램이 정의하는 것이며 ResetMacro 함수에서 문자열 하나로 초기화한다. 더블클릭하면 활성 매크로 집합을 즉시 변경하고 창을 닫아 단축키가 없는 집합도 선택할 수 있다. 활성화 버튼을 두었다가 저장 여부가 애매하고 비직과적이어서 더블클릭으로 변경만 했다.

사용자 정의 매크로의 공백은 기본 집합의 명령을 상속 받는다는 뜻인데 ->F1 식으로 원래 어떤 명령인지를 보여주는 방법도 생각해 봤다. 그러나 명령을 할당할 때 사용자가 이걸 정확히 지우고 새로 잘 입력한다는 보장이 없어 불완전 편집의 위험이 있고 명령을 할당했다가 원래대로 돌아가는 방법이 비직관적이다. 그냥 공백이 상속이라는 안내만 붙이고 공백을 보이도록 했다.

매크로 집합에 대해 이름과 단축키를 따로 지정할 수 있도록 구조체를 만드는 것도 괜찮다. 그러나 편집 UI가 번잡스러워 일단은 하지 않았다. 일단 사용해 보면서 더 면밀히 검토해 보고 차후 더 좋은 체계로 일괄 수정하는 것이 좋을 거 같다. 샘플은 동영상 보기, 스타 리플레이 보기 두 개 정도 넣어 놨는데 더 일반적인 적절한 매크로 집합의 예를 찾아 봐야겠다.

사용해 보니 그리 복잡하지 않고 외부 매크로 패드를 쓸 것도 없이 지금 키보드 내에서 셋을 바꿔가며 쓰는 것도 그럭 저럭 괜찮은 거 같다. 이번 주에는 키보드 종류와 매크로 두 개의 큰 기능을 완성해 나름 성과가 있었다.

24호 사용기

514: 24호를 빌드한지 한달이 지났다. 그동안 줄곧 사용했는데 수평, 수직 각도를 1도씩 더 늘리고 엄지에 각도를 준 거 외에 23호에 비해 구조적으로 크게 달라진 점은 없다. 브리지와 팜레스트의 접속성을 개선한 버전일 뿐이다. 사용기를 정리하고 25호 기획 방향을 잡아 보자.

 

- 키감 : 역시 적축이 청축보다는 부드럽고 조용하다. 청축도 시제품으로 만들기 나쁘진 않지만 사무실에서 쓰기는 어려워 공개할 제품은 가급적 적축으로 만드는게 좋아 보인다. LP만 고집하지 않는다면 최신 스위치를 채용하는 방안도 고려해 볼만하다. 교체 가능하게 만들면 커스텀의 재미도 있다.

- 키캡 : 예쁘게 만든다고 매트로 뽑았는데 시인성 좋고 보기에도 좋지만 촉감은 별로다. 매끈한 유광에 비해 분필을 만지는 느낌이라고 할까 푸석거리는 느낌이다. 주변키는 몰라도 자주 사용하는 문자키는 그냥 유광으로 뽑는게 더 나을 거 같다. 23호의 파랑색 글로스 필라멘트가 괜찮았다.

- 엄지 경사 : 이미 익숙해져서 그냥저냥 괜찮게 쓰고는 있지만 과히 좋지는 않다. 5도나 기울인건 너무 과했던 거 같다. 대신 엄지로 Num이나 Win키에 대한 접근성이 개선되기는 했다. 다음 버전은 많아도 2도 정도만 주고 아니면 아예 0도로 평평하게 만드는 것도 괜찮을 거 같다. 자판의 수평 각도를 반대로 적용하면 된다. 0~2도 사이에서 결정하자.

- 팜레스트를 처음에 필라멘트로 뽑아 바로 썼는데 이러니 손바닥에 들러 붙어 자꾸 들썩거린다. 두께에 상관없이 천재질로 덮어야 한다. 이왕이면 5미리 이상의 두터운 걸로 덮는게 좋다. 팜레스트의 크기와 각도는 현재도 나쁘지는 않고 적당하다. 손목 모양으로 홈을 파는 것도 해 볼만한 시도이다.

- 브리지와 팜레스트의 접합성은 아주 좋다. 좌우가 심하게 끄덕거리지도 않고 너무 꽉 잡지도 않아 키보드가 들썩거리지도 않는다. 거리와 각도에 따라 브리지를 교체해서 쓰는 방식은 썩 괜찮은 작전이다. 두께가 얇아 키보드를 들 때 약해 보이는데 3미리 정도 더 두껍게 만드는 것도 괜찮을 듯 하다. 그리고 시제품 여러 개를 만들다 보니 브리가 누구껀지 잘 구분되지 않는다. 다음부터는 몇호의 브리지인지 각인에 새기기로 한다.

- 좌우 분리형 : 좌우를 분리해서 써 보면 어깨가 약간 편한 면도 있어 나는 즐겨 쓰지는 않지만 분리형 자체는 괜찮은 구조이고 최근의 트렌드와도 맞다. 그러나 책상이 지저분해지고 키보드를 옮기기 번거로워지는 단점이 있어 굳이 분리형을 고집할 필요는 없다. 적당한 거리와 각도 하나를 찾았다면 이대로 계속 쓸 확률이 높으므로 아예 통으로 찍는게 제작도 간편하다. 큰 프린터만 있다면 가능하고 틴지칩 하나만 쓰면 된다. 내 취향은 이렇지만 마케팅적인 이유로 당분간은 좌우 분리형으로 만드는게 좋을 거 같다.

- 케이블 : 중간의 케이블이 너무 굵고 모양도 예쁘지 않으며 14핀이나 되는 비싼 케이블이어서 길이도 길게 뽑을 수 없다. 3~4가닥 얇은 케이블로 바꿔야 하고 길이도 충분히 뽑고 걸리적거리지 않도록 설계해야 한다. 현재 15센티인데 최소 30센티는 되어야 어깨 넓이만큼 충분히 벌릴 수 있다. 바닥에 끌리지 않도록 브리지에 결박하는 방안도 고려해 봐야겠다.

- 납땜 품질 : 열납땜이 부실했는지 가끔 안되는 키가 있다. 얼마전에는 Esc 아래의 키가 먹통이 되어 뜯어서 수리했는데 Esc에서 아래로 내려가는 선의 납땜이 불완전했다. 두 선을 따로 붙이면 꼭 아래에 깔리는 선이 납에 잘 안 붙는 문제가 예전에도 계속 반복되었다. 열이 시작되는 지점의 구리선을 아예 먼저 결박한 후 땜을 해야겠다. 얼마전에는 반대쪽인 Del키가 안 먹었던 적도 있고 현재는 Alt키가 먹통이다. 뜯어서 보니 과연 문제있다.

고리가 아래에 깔리고 납은 그 위에 그냥 묻어만 있어 고리가 덜렁거린다. USB 납땜기 잠시 연결해 지져 주니 이제 잘된다. 반대쪽의 Del키도 아마 비슷한 상황일 듯 한데 지금은 잘 된다. 차후 배포할 때 이런 문제가 생기면 AS를 할 수도 없고 사용자가 직접 뜯어서 고치기도 쉽지 않다. 배포할 시제품은 납땜 품질 검사를 더 철저히 해서 문제가 없도록 해야겠다.

- 한글 키보드 종류 구분 작업은 무사히 잘 마쳐 배포의 큰 문제를 해결했다. 매크로셋을 한꺼번에 정의하는 기능도 실사용해 보니 꽤 쓸만하다. 이 기능을 더 발전시켜 편의성을 개선하면 큰 장점이 될 듯 하다.

 

한달 약간 넘게 사용한 24호는 큰 문제없이 실사용할만했다. 23호와 거의 같은 구조라 익숙해서 별 문제가 없었다. 잠시 23호로 바꿔서 쳐 보고 있는데 오랜만에 청축을 쳐 보니 이것도 뭐 그리 나쁜 거 같지는 않다. 엄지에 각도가 없어 안쪽으로 엄지가 위로 올라가니 불편하게 느껴지고 하판이 없어 케이블에 아래 깔리는 점은 불편하다. 그 외 나머지는 비슷한 거 같다. 25호도 같은 구조겠지만 기능적으로 많이 개선할 예정이다.

25호 설계

ProMicro 도입

24호의 가장 큰 문제는 틴지칩 하나로 만들다 보니 좌우 케이블이 14가닥이나 건너가야 한다는 점이다. 이를 해결하기 위해 프마로 칩을 변경했는데 과정이 무척 험난했다. 그동안 사용하던 KBF가 좌우 분리형을 지원하지 않아 이제는 벗어날 때가 되었다. KBF의 소스를 분석해 봤는데 별 도움이 되지 않았으며 QMK에서 바로 컴파일되지도 않았다.

결국 QMK를 직접 사용해야 하며 오픈 소스를 참고해야 한다. 이를 위해 먼저 깃을 일주일 공부했다. 남의 소스를 보는 방법부터 터득해야 하고 그 자체도 공부해 둘 가치가 있어 시간을 투자할만 하며 다행히 책 몇권 보고 많은 것을 파악했으며 공개된 키보드 소스를 많이 구할 수 있었다.

다음은 QMK 자체를 공부했다. 이걸 마음대로 주무를 수 있어야 자유를 확보할 수 있다. 웹 검색해서 얻는 지식의 깊이에는 한계가 있어 공식 문서를 인쇄해서 읽고 있는데 나름 많은 도움이 되었다. 샘플 키보드도 dormouse, wingB, corne 등을 만들어 봤는데 QMK 뿐만 아니라 커스텀 키보드 제작에도 많은 도움이 되었다. 지금까지 본 바로는 QMK 기반의 어떤 키보드보다도 소젯이 월등히 우수하다. 일일이 펌웨어 바꿔 가며 맵핑 바꾸는 방법보다는 소프트웨어로 맵핑을 선택하는게 효율적이며 오토마타도 마음대로 바꿀 수 있다.

QMK도 더 연구하면 휠이나 터치패드, LED 등을 더 달 수 있어 좋다. 궁극적으로는 QMK도 벗어나 직접 C 코딩을 해야 하는데 이를 위해 아두이노도 공부하고 있다. 아무리 소형이라도 컴퓨터의 일종이라 깊이 있는 학습과 실습이 필요하다. 틴지나 프마나 아두이노의 일종이라 이것도 공부해 두면 칩을 자유롭게 다룰 수 있어 좋다.

여기까지 공부하는데 대략 한달 걸렸다. 프마로 양쪽 시리얼 통신하는 방법을 터득했고 USB C 타입으로 연결하는 것도 어렵게 성공했다. 원래는 이게 잘 되어야 하는데 어떤 이유로 잘 안되고 관련 정보도 없어 삽질 끝에 알아냈다. 남의 소스 분석하고 공식 문서 참고해서 겨우 만들었다. 칩이 바뀜으로 인해 24호에 비해 다음과 같은 이점이 생겼다.

 

- 양쪽에 칩 두 개를 쓴다. 가격은 비슷하다.

- 케이블은 3가닥짜리면 된다. 얇아졌으니 어깨넓이만큼 충분히 길게 만들 수 있다. 착탈식으로 만들 이유는 없지만 가변 길이를 위해 중간에 늘리게 만드는 것도 괜찮을 듯 하다.

- 구하기도 힘든 USB 미니 케이블이 아닌 C 타입 케이블을 쓸 수 있다.

- 양쪽 어디에나 꽂아도 된다.

- LED나 휠 등의 추가적인 장치를 더 달 수 있다.

 

아직 공부를 다 한 것은 아니고 QMK와 아두이노는 더 공부해야 한다. 시행착오를 줄이려면 기존 이론부터 확실히 정리한 후에 제작에 들어가야 한다. 지금까지 무수한 삽질을 했는데 공부를 먼저 했더라면 줄일 수 있었다. 그렇다고 해서 삽질이 의미가 없는 것은 아니다.

앞으로는 프마칩 위주로 쓰기로 하되 만약 일체형으로 만든다면 틴지칩을 쓸 수도 있다. 틴지 대략 30개 넘게 사 재 놨는데 너무 많이 확보해 놓은 거 같다. 이러면서 지금은 프마칩을 또 사 재고 있다. 가격이 계속 오를 거 같으니 돈이 좀 들더라도 적당히 사재 놓는 것도 나쁘지는 않는 듯 하다.

영타연습

오랜만에 타자 속도를 재 보니 한타는 450타까지도 나오는데 영타는 100타 겨우 나온다. 최소 150, 넉넉하게 200타는 가볍게 넘겨야 할텐데 아직도 영타는 무척 헷갈린다. 한글을 ㅎㅅㅍㅊㅋㅌ의 새 위치가 이미 손가락에 익어 기존 2벌식이 더 헷갈리는데 비해 영타는 아직도 쿼티 자판을 더 기억하는 거 같다.

이 연습을 지금 굳이 해야 하는 이유는 영문 배열이 과연 타당한지, 익숙해질만한 가치가 있는 배열인지를 검증해야 하기 때문이다. 300타까지는 무난히 나와 줘야 하며 익숙해지면 쿼티보다는 확실히 우월하다는 것을 나 스스로 검증해야 하기 때문이다. 실사용하는 입장에서 영문 타수가 느리니 불편한 면도 있다.

영문이 느린 것은 물론이고 a~z까지 순서대로 치는 것도 130타 수준이며 여러번 연습한 후 친 최고 기록이 겨우 202타에 불과하다. 단기간에 늘어날 거 같지는 않으니 일주일간 시간날 때마다 틈틈이 연습해서 알파벨은 200타 이상, 가사는 150타 이상까지는 도달해야겠다. 일주일 후에 연습 결과를 다시 기록하기로 한다.

530: 틈틈이 연습해서 영문 가사는 160타를 무난히 넘겼고 알파벳은 250타까지 나온다. 연습할수록 늘기는 하니 영문도 200타는 금방 갈 거 같다. 연습해 보니 sosf, asrs로 치는 경우가 많은데 이는 아직도 쿼티랑 헷갈리고 있다는 뜻이다. 소젯에 익숙해지기도 해야겠지만 쿼티를 완전히 지우는 것도 중요하다. oa, nh가 자꾸 헷갈리는데 근육이 기억할 때까지 연습해야 한다. 자꾸 쳐보니 연타 방지가 잘 되어 있고 리듬감도 있는 편이다.

쿼티 사용성 테스트

이제 조만간 오픈 테스트를 할건데 모든 사람이 드라이버를 다 깔고 쓰지는 않을 것이며 받자 마자 그냥 쳐 보는 사람도 있을 것이다. 이 경우 소젯이 그냥도 쓸만한지 점검해볼 필요가 있다. 드라이버를 띄우고 2벌식 쿼티에 맞춰 쓰는 것도 쓸만한지 점검해 보고 필요하다면 키맵을 일부 조정해야 한다.

 

영문 : 쿼티대로 치면 된다. 키맵이 쿼티로 되어 있어 드라이버 없어도 쿼티로 칠 수 있다. 소젯 방식으로 GWHNJ 식으로 맵핑을 바꿀 수 있고 그러면 드라이버 없이도 소젯으로 칠 수 있지만 아직은 때가 아니다. 쿼티에 익숙한 사람이 더 우선이다. 또한 영문 키맵을 바꿔 버리면 한글 2벌식도 안된다.

한글 : 2벌식 배치대로 치면 된다. 복모음을 연타로 입력할 수 없을 뿐 그 외의 큰 차이점은 없다. 한영 전환은 설치해 놓은 드라이버를 따르면 된다. 종류1은 소젯의 우Alt를 쓰고 종류3Shift+Space를 그대로 쓸 수 있다.

기호 : 영문, 한글은 드라이버가 없더라도 키맵이 그대로여서 별 문제가 없지만 기호는 배치가 달라 별도로 익혀야 쓸 수 있다. 쿼티의 = ] \는 소젯에 대응되는 위치가 아예 없다. 기호별로 쿼티와 어떻게 다른지 분류해 보자.

 

- 완전히 같음 : ; '

- 노말만 같음 : 1~0 , .

- 위치 옮김 : - / =

- 노말로 이동 : $ % + *

- Shift로 이동 : ` [ ] \

 

문자영역에 있는 구두점과 숫자의 위치가 같아 큰 틀에서는 유사해 많이 혼란스럽지는 않다. 빈도가 높은 + *를 노말에 배치한 것과 빈도가 떨어지는 ` \Shift로 옮긴 것도 잘 한 일이다. 하지만 위치가 바뀐 키가 많아 처음에 이 키를 찾느라 당황스러울 수 있다.

- = / 는 빈도에 따라 위치를 바꾼 것이고 [ ] \는 다 Shift자리로 옮겨 아예 다른 기호를 가진다. 옮긴 이유가 다 합리적이라 설명은 가능하다. 몇가지 자리만 다시 익히면 드라이버 없이도 사용은 가능하다. 기호키 21개가 다 포함되어 있으니 위치가 헷갈리더라도 모든 기호를 다 쓸 수 있다. Shit 자리에 있는 기호도 기존의 알던 지식대로 사용하면 된다. 불만은 있겠지만 다 이유가 있어 바꿔 놓은 것이라 키맵 구조는 딱히 더 손델게 없어 보인다.

편집 : 공백, 개행 키는 오른쪽 엄지에 있는 걸 그대로 쓸 수 있어 쿼티보다 접근성이 좋다. BS, Del, PgUp, PgDn 등의 이동키와 Pause, Ins 등의 키도 위치만 바뀌었을 뿐 모두 존재한다. Ctrl, Alt, Win 등의 조합키도 위치는 바뀌었지만 다 쓸 수 있다. 다만 Ctrl이 양쪽에 있지는 않아 불편할 수는 있다. Copy, Paste, Edit, Fn 등의 키는 모두 동작하지 않으며 아무 기능이 없다. 안쓰는 펑션키로 맵핑되어 있어 별다른 부작용은 없다.

 

다음은 드라이버를 실행하되 쿼티 자판을 선택해 놓고 쓰는 경우를 가정해 보자. 이 경우 한글, 영문은 기존 배열대로 사용하면 된다. 한글의 경우 연타로 복모음을 입력하는 기능이 추가된다는 정도만 다르다. 언어의 자판을 쿼티로 변경하더라도 키보드는 여전히 소젯이어서 언어 배열만 맞춰줄 뿐 소젯의 기능은 계속 동작한다.

한영 전환은 Han키로만 해야 하며 Edit, Num 모드를 사용할 수 있고 매크로와 클립보드도 모두 동작한다. 기호도 소젯 배열을 따르는데 자판 구조가 쿼티와 다르니 똑같을 수는 없다. 만약 기호까지 쿼티 배열로 쓰고 싶다면 드라이버를 실행하지 말든가, 배치까지 쿼티와 똑같기를 바라면 그냥 쿼티 키보드를 써야 한다. 이 점은 어쩔 수 없으며 양해시켜야 한다.

 

여기까지 분석해 본 결과 소젯 키보드를 사용하는 유형은 다음 세 가지 정도로 나눌 수 있다.

 

1.드라이버없이 쓰는 경우 : 모든 입력이 가능하지만 키 배치가 달라졌음은 알아야 한다. 비상시나 부팅전에도 일단 쓸 수는 있으며 심각한 문제는 없다. 로그인 비번이 좀 문제가 되는데 이때는 쿼티 배열로 비번을 입력해야 한다. 디바이스 드라이버를 만들거나 서비스로 실행하면 해결된다.

2.드라이버 실행하고 쿼티 차맷으로 쓰는 경우 : 기호만 빼고 언어는 기존 배열대로 쓸 수 있다. 문자를 제외한 모든 키는 소젯의 규칙대로 동작한다. 소젯에 익숙하지 않거나 적응중일 때 일시적으로 쓸 수 있는 방법이다.

3.소젯 차맷으로 쓰는 경우 : 소젯의 모든 이점을 누릴 수 있다. 다만 웹에서 비번 입력 등 아직 해결하지 못한 몇가지 문제는 잠시 후킹을 풀어서 써야 하는 불편함이 있다. 이 모든 불편함을 해소하는게 궁극의 목표이다.

 

쿼티 사용성 테스트 결과 지금 당장은 딱히 취할 조치가 없고 이대로 그냥 가면 될 듯 하다. 키맵만 쿼티에 맞춰 놓으면 비상시에도 활용할 수 있다.

팜레스트 자석 적용

팜레스트는 꼭 필요하고 있으면 좋지만 부피감이 너무 크다. 이왕 달아야 한다면 불필요할 때 신속하게 분리할 수 있는 구조가 좋을 거 같아 자석으로 붙여 보기로 했다. 알리에서 다양한 크기의 자석을 주문했는데 이거 전부 20000원어치나 된다.

주로 두께 1미리짜리로 주문했는데 막상 써 보니 1미리짜리는 자성이 약해 안되겠다. 50*6*1.5미리짜리가 그나마 괜찮은 거 같아 이걸로 만들어 보기로 한다. 키보드에는 자석을 붙이고 팜레스트에는 철판을 붙인다. 둘 다 자석일 경우 서로 밀치는 구간이 있어 안된다. 자석 깊이만큼 약간 홈을 파고 팜레스트에 철판을 붙어 홈 안으로 들어가 붙는 형식으로 만들어 보자.

자석의 홈을 정직하게 1.6 깊이에 폭 50으로 했더니 자석이 들어가지 않는다. 51에 깊이 1.8로 다시 만들고 첫 레이어 수평 확장 -0.4로 준다. 바깥쪽 걸쇠는 1미리 두께에 폭 2미리로 했는데 이 정도면 잘 버틸 거 같다. 팜레스트 접합부는 45미리로 만들었다. 재출력하는동안 자석의 양면 테이프로 표면에 붙인 후 자를 붙여 봤다.

자에 있는 철판이 널직해 단단하게 잘 붙는다. 그러나 예상했던대로 수평을 맞추는게 녹녹치 않아 자를 똑바로 세우면 플레이트가 끄덕거린다. 이걸 해결하기가 만만치 않다. 팜레스트쪽은 얇은 철판을 붙여야 하는데 마땅한 재료가 얼른 떠오르지 않아 커터 칼날을 잘라 글루건으로 붙였다. 평평하게 만드는 것도 쉽지 않은데 재료는 차후에 다시 구해 보도록 하자.

새로 뽑은 플레이트는 별도의 칼질을 하지 않아도 자석이 쑥 잘 들어간다. 밖으로 조금 삐져 나오는데 깊이도 0.5는 더 깊게 줘야겠다. 자석을 끼우고 팜레스트를 붙어 보니 심각한 문제가 발견되었다. 팜레스트가 자석의 중간에 붙는게 아니라 양쪽 가장자리에 붙는다.

억지로 힘을 주면 가운데로 오기는 하지만 이런 상태에서는 견고하게 지지할 수 없다. 둘 다 자석이 아닌데도 이런 척력이 발생하는 것은 의외이다. 이런 경험이 아주 없는 것은 아니지만 정확한 원리는 잘 모르겠다. 자석의 모양을 둥근것으로 바꾸면 좀 나아질려나 모르겠는데 이 문제로 인해 팜레스트를 자석으로 만드는 것은 당장은 어려울 듯 하다.

또 설사 된다 하더라도 수평을 맞출 자신이 없다. 안타깝지만 24호에서 만들었던 홈 모양을 계속 써야겠다. 조금 덜렁거리는 감이 있으니 두께는 6미리에서 10미리로 늘려 주도록 한다.

펑션 분리

미니 키보드는 펑션이 보통 없고 소젯도 펑션없이 쓸 수 있는 장치가 준비되어 있다. 23호에서 잠시 분리형으로 만들었다가 24호에서 수평이 안 맞아 다시 합쳐 놨는데 25호에서는 다시 분리한다. 좌우 동형의 의미가 있고 키 개수도 줄이고 최대한 작게 만들어 보는 것도 의미가 있다.

팜레스트에 자석 테스트가 잘 되었으면 똑같이 하려고 했는데 실패하여 24호의 브리지나 팜레스트 접속홀을 그대로 쓰기로 한다. 브리지가 덜렁거리는 감이 있어 높이를 6에서 10으로 높인다. 부피감이 조금 있더라도 단단한 감을 주어 괜찮을 거 같다. 브리지와 접속부만 뽑아 봤다.

쑥 들어가는게 아주 잘 맞고 좌우로나 상하로 유격도 적당히 브리지는 이 높이로 만들도록 한다. 팜레스트는 상하 유격이 꼭 필요해 6미리 유지한다. 시제품별로 브리지 여러 개를 만들다 보니 어떤게 어느놈건지 잘 구분되지 않는 문제가 있는데 25호부터는 sj25를 붙여 소속을 기록한다. 그리고 브리지 출력시 첫 레이어 -0.5 확장을 잊지 말고 적용하여 코끼리발을 방지한다. 그럴려면 큐라로 슬라이싱해야 한다.

펑션 접속부 제작의 난점은 접속할만한 지점이 애매하다는 점이다. 접속부가 폭15, 깊이7이고 높이는 6~10인데 플레이트 왼쪽에는 이 정도 공간이 없다. Alt 바로 아래쪽에 붙여야 하는데 이 부분 높이가 기껏해야 9미리 정도밖에 안되어 좁고 중간 지점도 아니어서 접속력도 떨어질 거 같다. 그렇다고 플레이트를 쌩으로 7미리 더 늘리거나 조합키 중간에 접속점을 만드는 것도 낭비다.

다른 대안이 없으니 일단 8미리 높이로 만들어 보자. 24호 제작/플레이트 제작 기록에서 최종적으로 조정한 치수 참고하여 만들었다. 팔길이 3이고 구멍 깊이는 2.7이니 0.3만큼 여유를 뒀다. 팔을 아래에서 28미리 위에 배치하고 구멍을 팔보다 0.2미리 아래에 두어 팔을 중앙 정렬한다. 플레이트 쪽에는 나사 구멍이 있는데 이 부분을 덮고 접속부를 꽉 채워야 한다.

  

좌우 유격 적당하고 위로도 많이 돌출되지 않아 적당하다. 그런데 아래면이 그냥은 딱 맞지만 밀면 아래로 더 내려가는데 원래 그런지 점검이 필요하다. 모델을 풀어서 점검해 보니 숫컷(오른쪽) 꼭지점 높이가 3.5이고 암컷(왼쪽) 꼭지점 높이가 3.80.3만큼 차이가 있다. 오른쪽 전체가 구멍이라 삼각형 구멍이 나중에 벽면 돌기가 됨을 주의하자.

0.3 차이가 왜 있는지 기록을 살펴 보면 아래로 덜 내려와 그랬다는데 어쨌든 지금은 바닥에 딱 맞게 내려오고 힘을 줘야만 아래로 더 내려 오며 빠지지는 않는다. 과거에 했던 작업의 내용을 정확히 기억하기 어렵고 기록을 해 놔도 의미를 알기가 참 어렵다. 치수가 대충은 맞는 듯 하니 전체를 뽑아 보자. 킹룬 2대로 각각 뽑되 펑션은 첫 레이어 -0.5 확장 지정했다.

성공적으로 잘 나왔다. 끼우기는 조금 빡빡하지만 옆면만 조금 다듬어 주면 잘 들어간다. 수평으로는 거의 흔들리지 않으며 수직으로는 손으로 잡고 돌리면 윗부분이 약간 돌아가지만 접속부가 하나밖에 없으니 어쩔 수 없다. 양쪽의 버튼을 눌러도 반대쪽이 들썩거리지 않아 이대로 채용해도 충분하다.

 다음은 케이블을 선정한다. 8가닥이 건너가야 하고 떼고 붙이는게 가능해야 한다. 위쪽 공간이 조금 있지만 넉넉하지 않으니 부피가 너무 커서는 안된다. 이럴 때 사용하려고 여러 종류의 케이블을 구비해 놨다. 네트워크 케이블이 딱 8핀이라 잭과 공구까지 사 놨는데 이 경우에는 좀 안 맞는 듯 하다.

정확히 8핀인 케이블이 딱 하나 있는데 2월에 알리에서 배송비까지 5100원에 산거다. 딱 맞긴 한데 너무 비싸고 하나밖에 없어 아껴 두기로 하고 이번에는 42개를 쓰기로 한다. 크기가 다른 두 종류라 헷갈리지 않으며 걸쇠는 빼기 어려워 제거했다. 차후 8핀짜리 얇은 걸로 새로 구해 봐야겠다.

펑션 위쪽에 접속부를 받칠 수 있는 하판을 만들고 양쪽으로 접속부를 넣고 뺄 수 있는 구멍도 만들어 넣는다. 펑션의 하판까지는 따로 안 만들어도 될 거 같다. 펑션이 분리되면 Fn+숫자 조합이나 Edit 모드의 펑션을 사용해야하는데 이러면 Fn의 접근성이 더 좋아져야 한다. Win키와 위치를 바꾸는 방안에 대해 진지하게 고민해 봐야겠다.

키홀 테스트

어떤 프린터를 뽑을 것인지를 결정해야 디자인 단계부터 키홀의 크기를 결정할 수 있다. 전에도 여러번 테스트한 적이 있지만 이번에는 모아서 한꺼번에 테스트해 보았다. 13.7~14.2까지 여섯가지 크기로 키홀을 만들고 보유한 각 프린터로 출력했다.

디자인상의 폭과 실제폭을 측정했으며 어떤 구멍에 스위치가 잘 꽂히는지 실제로 끼워 보기도 했다. 무광, 유광 필라멘트가 섞여 있어 차이가 약간씩 있지만 그리 많지는 않다.

 

 

13.7

13.8

13.9

14.0

14.1

14.2

공차

날곰ABS

13.2

13.3

13.4

13.5

13.6

13.7

-0.5

킹룬

13.6

13.7

13.8

13.9

14.0

14.1

-0.1

어드벤처3

13.5

13.6

13.8

13.9

14.0

14.1

-0.2

어드벤처4

13.6

13.7

13.8

13.9

14.0

14.1

-0.1

가이더

13.5

13.6

13.7

13.9

14.0

14.1

-0.2

 

키홀이 13.6~13.8일 때가 적합하다. 스위치의 실제폭도 약간 차이가 있는데 체리는 13.8인데 비해 LP13.9이라 스위치도 미리 고려해야 한다. 흔들리지만 않는다면 너무 빡빡할 필요는 없을 듯 하니 결과폭을 13.8에 맞추면 될 듯하다.

날곰은 공차가 너무 많아 플레이트 제작용으로는 적합치 않고 가이더는 시끄러워 쓰기 어렵다. 킹룬이나 어4가 적합한데 그러면 키홀은 기존대로 13.9를 사용하면 된다. 날곰만 빼고 어떤 프린터에서나 대충 잘 뽑힐만한 크기이다.

25호 플레이트를 만드는 중간에 체리와 LP의 걸쇠 방향이 다름을 알았다. 체리는 걸쇠가 아래위에 있고 LP는 좌우에 있다. 전에도 알았었는데 체리를 쓸 때는 옆으로 눕혀서 꽂았었다. 이러면 납땜이 불편해서 스위치에 상관없이 꽂을 수 있도록 걸쇠를 사방으로 만들어야 한다. 샘플 플레이트를 보면 상하로 걸쇠가 있거나 아니면 그냥 사각 구멍에 막끼우는 방식이다.

  

소젯은 네 방향으로 걸쇠를 만들어 체리와 LP 둘 다 쓸 수 있도록 한다. 다행히 둘 다 폭은 같고 정사각형이라 걸쇠만 만들어 두면 된다. 초안은 13.9 사각형의 사방에 5미리 0.5미리 구멍을 1미리 낮게 배치했다. 걸쇠를 0.8미리 높이로도 만들어 봤는데 이건 좀 헐렁해 1미리는 되어야 한다.

  

초안을 만든 후 보니 GTMX는 걸쇠가 측면 중앙에 있는데 게이트론은 양쪽에 있어 측면 걸쇠를 9미리로 늘린다. 플레이트 높이는 5미리로 했는데 과해서 4미리로 다시 낮춘다. 걸쇠의 깊이는 0.5에서 0.7로 늘린다. 두번째도 약간 문제가 있어 또 수정한다. 게이트론 LP의 걸쇠가 중앙에 있지 않고 위로 치우쳐져 있어 1미리 위로 이동한다. 걸쇠는 브리지 구간이라 폭이 불필요하게 길 필요 없다. 상하는 짧아 0.7 유지하되 좌우는 0.5로 다시 줄인다. 네번째는 게이트론 LP 걸쇠를 위로 올렸더니 아래가 짧아 10미리로 늘렸다.

프린터 처음 도입할 때 만들었던 키홀을 이번에 처음 수정했다. 지금까지 구해 놓은 스위치에는 웬만하면 다 맞지만 이것도 완벽한 것은 아니어서 차후 필요에 따라 수정해 가며 사용하기로 한다.

프린터를 재배치하려고 524일 어드벤처4를 중고로 44만원에 사 왔다. 노즐 3개가 따라와 어3이를 고칠 목적도 있었으며 수리도 완료했다. 새로 구한 프린터로 키캡을 찍어 봤다. 가이더가 시끄러운데 어드벤처가 잘 뽑으면 대체할 생각이다. 날곰이나 킹룬은 키캡 찍기에는 부족하다.

연두색은 가이더로 뽑은 건데 표준이나 우수나 잘 나오며 구분도 잘 안 된다. 검정색은 어4로 찍은건데 표준은 좀 거칠고 0.12로 레이어 줄이면 섬세하지만 조금씩 무너지는 부분이 있다. 갈색이 어30.3 노즐로 뽑은건데 이만한 품질이면 가이더를 대체할만하다. 그러나 여러개 한꺼번에 뽑으면 거미줄이 좀 생기는 편이다. 필라 바꿔서 테스트해 보고 노즐도 바꿔 보면 어드벤처로 가이더를 대체할 수 있을 거 같다.

십자홀은 다 튼튼하고 깔끔하게 잘 나와 체결에 문제없다. 이번에 피치를 늘리고 체리 스위치를 사용할거면 키캡도 새로 뽑아야 하는데 기존 키캡도 틈이 벌어져서 그렇지 사용은 가능하다. 제작 후 기존 키캡 꽂아 본 후 결정하자.

엄지 각도 테스트

24호의 엄지 5도 각도는 너무 과했다. 지금은 그냥 익숙해서 쓰고 있지만 아래로 쑥 꺼지는 감이 그리 썩 좋지는 않다. 23호를 쳐 보면 각도를 주는 거 자체는 괜찮은 거 같다. 3도 더 줄인 2도와 평평한 0도 두 가지를 더 테스트해 보기로 한다.

막상 뽑아 보니 높이도 고려해야 할 거 같다. 0도는 아래로 쑥 꺼져 위로 1미리 올리고 2도는 약간 튀어 나와 아래로 1미리 내려야 평평해진다. 0, 2도와 1미리 위, 플레이트와 연속의 4가지 조합이 나온다.

 

넷 중 하나를 골라야 하는데 참 어렵다. 확실한 건 23호처럼 일자형(-7)24호의 5도 각도는 확실히 불편하다는 것이다. 그 중간의 어느 각도를 골라야 하는데 0도나 2도나 차이가 크지 않아 헷갈린다. 실사용해 봐도 감이 비슷해 뭘 고르나 그게 그거다. 아주 미세한 감 차이가 있는데 이번에는 2도를 선택해 보기로 한다. Han키가 조금이라도 내려가 있는게 더 나아 보인다. 2도라고 해 봤자 EditHan키의 높이차가 불과 1.1미리밖에 안된다.

다음은 높이를 결정해야 하는데 1미리 차이를 구분하기도 쉽지 않다. 과거의 기록을 보니 엄지 중앙이 T보다 2미리 정도 더 높게 만들었는데 손을 자연스럽게 키보드에 얹어 보면 엄지가 약간 더 높은게 자연스럽다. 최소한 같거나 1~2미리 정도 엄지를 더 높게 만드는게 좋다. 비교 지점도 정확히 할 필요가 있는데 T의 아래변 중앙보다 Shift의 위쪽 중앙이 약간(1~2) 높게 만들도록 하자. 이렇게 보면 사진상의 왼쪽 위 모델이 제일 맞고 이보다 살짝 더 높아야 한다.

그 외 이 테스트를 수행하며 체리키를 꽂아 봤는데 LP보다는 높을 뿐만 아니라 몸체도 아래로 길어 키홀 높이를 5미리로 해야 스위치 바닥이 닿지 않는다. 다행히 걸쇠가 걸리는 부분은 LP와 비슷하다. 플레이트 위쪽에 걸치는 팔도 조금 더 커 여유를 두어야 걸리지 않는다.

25호 제작

기획

소젯 25호 제작을 위한 준비 작업이 완료되었다. 굵직한 새로운게 많아 꽤 오랜 시간을 투자했다. 시도한 걸 다 한건 아니지만 꽤 많은 것을 테스트했으며 다음 사항을 결정했다.

 

- 처음으로 프마칩 2개를 사용한다. C 타입으로 제작하여 양쪽 어디서건 연결 가능하게 한다. 케이블은 3가닥짜리를 쓰되 핫도킹은 지원하지 않는다.

- 펑션열을 분리하고 4가닥 핀 2개로 연결한다. 좌우는 동형이되 오른쪽에는 펑션열 접속부만 제거한다.

- 소켓 먼저 납땜하고 스위치를 끼워 핫 스왑으로 제작한다. 소켓과 다이오드, 칩은 재활용 가능하며 스위치도 원하는 것으로 끼운다.

- 팜레스트 자석 시도는 실패했으며 휠을 붙이는 것도 테스트만 해 보고 문제가 있어 이번에는 적용하지 않는다. 브리지는 똑같되 두께를 10미리로 늘린다.

- 탭키의 폭이 좁은데 3미리 더 넓히고 Caps18에서 16으로 2미리 줄인다. 쿼티의 Tab1.5U 인데 1U로 만드니 새끼 손가락이 자꾸 밖으로 삐져 나가는 불편함이 있어 사각틀을 포기하더라도 여기에 맞춘다.

- 엄지 각도는 수평에서 -2도 기울이고 ShiftT보다 1미리 이상 더 위에 있도록 들어올린다.

- 자판은 24호와 같은 3도 유지하고 수평 수직은 1도씩 더 추가하여 8도로 기울인다. 8도가 좋아서 그런게 아니고 그냥 시도해 보는 것이다.

 

아직 스위치를 뭘 쓸지 결정하지 않았다. LP를 계속 써 왔는데 보급을 위해 체리 스위치도 써 봐야 한다. 쓰긴 쓸건데 LP를 먼저 만들고 25.1을 체리로 다시 만들지 아니면 25호를 아예 체리로 만들지 순서를 선택해야 한다. 좀 생각해 봤는데 이번에는 체리로 만들기로 한다. 사실 LP는 내가 좋아하는 것이지 일반인들은 존재 자체를 모르는 경우가 많고 고속 입력에는 유리해도 보급에는 걸림돌이다. 또 최근 싸고 좋은 스위치가 많이 나와 바꿔 끼는 재미도 있다.

피치는 18*17 정도의 중간 크기를 쓸 수도 있지만 보급을 위한 버전이므로 아예 쿼티와 똑같은 19*19로 만들자. 숫자행이 멀어서 접근성 떨어지겠지만 일반 키캡도 쓸 수 있고 어차피 한번은 만들어 봐야 하는 피치이다. 이게 불편하다면 근거가 되는 버전일 수도 있다.

25호를 만든 후 적당히 사용해 보고 치명적인 결함이 없으면 25.1호는 LP 버전으로 다시 만들어 비교해 보자. 이것 저것 손볼게 많다면 아예 26호로 넘어가도 된다. 로타리 엔코더를 아직 붙이지 않아 이번 버전도 완성이라고 보기는 어렵고 그 외 몇 가지 더 시도해볼만한게 있을 듯 하다.

이후 기능 안정화되면 숫자행 빼고 70, 편집과 매크로 빼고 54키로도 만들어 보기로 한다. 펑션은 분리 가능하니 필요하면 더 붙일 수 있다. 25.2가 될지, 26.1이 될지는 아직 모르지만 다양한 버전을 만들 필요가 있다.

플레이트 제작

25호는 체리 스위치를 쓰고 피치가 1924호와는 제작방법이 다르다. 제작 절차는 비슷하므로 24호의 순서대로 하되 완전히 새로 만든다. 키홀은 13.9를 쓰고 킹룬으로 출력한다. 중간의 시행착오는 굳이 기록할 필요 없고 수정한 결과만 기록하여 다음에 참고하기 쉽도록 작성한다. 파란색은 25.1 제작 방법이며 구조는 같되 피치가 가로 1, 세로 2미리 좁아 치수가 조금씩 다르다. 초록색은 은 25.2호에서 수정한 부분이다. 분홍색은 26호에서 적용한 부분이다.

 

▶ 키홀은 설계 단계에서 준비한 것을 사용한다. 키홀은 13.9*13.9*4 크기이며 좌우에 0.5*10, 상하에 0.7*5의 두께 1미리 걸쇠홀을 배치한다. 그룹핑시 전체 크기는 14.9*15.3*4.2이되 회전 에러 방지를 위해 아래 위로 0.1미리 여유를 두었다. 플레이트는 20*22*4(25.1 : 19*20*4)이며 문자영역 회전시 V 계곡이 생기지 않는 크기이다.

26: 벽면에 붙은 키는 스위치 아랫부분이 걸린다. 키홀 몸체를 음수영역으로 2미리 확장하여 두께 6미리에 맞추어 체리키캡도 잘 들어갈 수 있도록 한다. , 회전할 때는 플레이트와 그룹핑하여 4미리 두께 상태로 회전하는 것이 바람직하다. 체리 스위치는 걸리는 부분이 1미리가 넘어 흔들리므로 상하 걸쇠홀은 높이를 2미리 낮추어 1.2미리 두께의 걸쇠로 만든다.

▶키홀 6개를 19미리(25.1 : 18) 간격으로 나열한다. 안밖열은 tan7 * 11.8(플레이트에서 키캡까지의 높이) = 1.5 더 띄운후 그룹 일시 해제 후 플레이트 안쪽폭을 1.5만큼 확장한다. 안밖열 7도 기울여 바닥에 내리고 중지2미리 위,새끼3미리 아래로 내린다.

20.75미리 간격으로 4행을 만든다. 키캡간 19미리에 맞추기 위해 경사에 의해 좁아지는 거리 tan10*11.5=1.75을 더했다 0행은 너무 벌어져 1미리 아래로 내려 좁힌다.

25.1 : 25호의 계산에 에러가 있었다. 키캡까지의 높이가 11.8이며 tan10*11.8=2.08이다. 19미리 간격으로 4행을 배치하여 키캡간 17미리에 맞춘다. 0행은 1.5미리 아래로 내려 좁히되 공식을 적용하긴 어렵고 회전 후 눈대중으로 아래쪽의 수평바와 비슷한 폭으로 맞춰야 한다. 밑면에서 두 행이 겹친 부분을 똑같이 맞추면 되는데 25.1호는 숫자행을 약간 더 밀착시켰다.

25.2 : 탭 위에 사각 구멍을 얹어 스위치 내려올 공간을 확보한다.

1,3행은 10, 0행은 20도 기울인다. 키홀간의 수직 위치를 눈대중으로 맞추어 열내에서 둥그런 모양이 되도록 한다. 스냅 0.1미리 상태에서 파랑, 빨강이 반쯤 섞이는 위치에 맞춘다.

Tab3미리 더 커 1.5만큼 왼쪽으로 이동한다. 왼쪽면에 평면을 놓고 -1.5미리 내린 후 그룹 일시 해제하고 플레이트 높이를 1.5미리 높인다. 전체 선택시 회전에 의해 약간 내려간 부분이 있어 -0.15~0.2 정도에 있는데 -4만큼 더 내려(-4.15) 2행 윗면의 Z 좌표가 0이 되도록 한다. 플레이트 표면 4미리 아래이다.

26: 탭폭 1.5미리 확장은 하지 않기로 한다. 이유는 있지만 한손 자판에는 맞지 않고 심미적으로 틀어져 까일만한 부분이다. 시도해 봤으니 됐고 필요하면 차후 다시 도입할 수도 있다.

사방을 4미리 두께의 플레이트로 두르고 모든 부분을 메꾼다. 이전 모델 수정시 복사한 후 위치만 조금 조정하면 된다. 엄지 영역은 비워두되 C 자리의 절반 또는 2/3 지점까지만 가면 된다. 아래로 겹쳐지는 부분이라 틈만 벌어지지 않으면 된다.

▶ 안쪽 조합키 2개를 배치한다. Fn은 키홀을 V옆 약간 아래인 1/3 지점에 놓고 V와 수평으로 4미리 정도 띄운다. 경사진 Num 키홀을 위해 아래 위로 구멍을 넓힌 경사용 키홀을 준비한다. 플레이트를 17*17로 줄인다. 스위치 팔을 걸칠 영역이 양쪽으로 1.5미리는 되어야 하며 너무 크면 돌출이 심해 보기 좋지 않고 주변키를 방해한다.

그 위에 17*17*6 구멍을 중앙 정렬하여 플레이트 아래로 잠기는 부분도 스위치 들어갈 공간을 둔다. 키홀 몸체를 아래로 5미리 더 확장하여 플레이트에 가려도 배선할 공간이 막히지 않도록 한다. 이 스위치는 별도 부품으로 따로 백업해 두었다. 수직으로 10도 기울여 Fn아래에 놓는다. Fn 보다는 약간 위로 올라간 상태며 차후 전체 그룹핑시 공간 확보를 위해 그룹 해제 상태를 유지한다.

 

여기까지의 문자영역의 중간본을 백업해 둔다. 엄지 부분이나 조합키의 디자인을 변경하더라도 백업한 중간본에서 시작하면 된다.

25.1 : 키캡을 눌렀을 때의 공간도 확보해야 하므로 위쪽 구멍이 18*17*6이어야 한다. FN 회전 후 1미리 더 위로 올린다.

▶ 엄지 키홀은 위에 팔걸이 영역 확보를 위해 Num키에서 만든 높이 6미리 구멍을 위에 얹으며 아래쪽은 확장할 필요 없다. Num키를 가져와 경사용 키홀을 양쪽에 배치한다. 좌우를 수직 10도씩 안쪽으로 기울이고 회전에 의해 중앙이 내려 가므로 1.5미리 위로 올려 중앙키와 높이를 맞춘다. 중앙은 15, 오른쪽은 30도 수평 회전한다. 하단 모서리를 3.5미리 간격으로 맞춘다. 평면도 상태에서 봐야 하며 플레이트간이 아닌 키홀간의 간격을 맞춰야 한다.

25.1 : 회전후 0.5미리만 올려 중앙보다 양쪽키가 약간 아래에 있도록 한다. 엄지와 양쪽키의 하단 모서리를 5.5미리 간격으로 맞춘다. 기울어진 키캡 간격이 0.5미리 정도가 된다.

엄지 아래키는 엄지키와의 간섭을 최소화해야 하며 아래로 내린 상태에서 플레이트와 연결해야 한다. 경사용 키홀을 가져와 플레이트를 21*21로 상하좌우 2미리 더 늘리고 높이를 5.1로 키워 플레이트와의 접합지점을 만든다.키홀의 아래부분은 확장할 필요 없으므로 높이 4로 다시 줄인다. 전체를 -5.1 위치로 내려 플레이트 아래 잠기도록 한다. 양쪽으로 복사하여 10, 20도 기울이고 중앙키 아래 등거리로 놓는다. 모니터상의 길이로 측정하면 된다.

25.2 : 엄지 아래키의 위쪽 구멍 아래쪽 길이 0.5만큼 키운다.

플레이트로 덮고 왼쪽 모서리를 5*5 크기의 둥근 구멍으로 깍는다. 이 부분은 회전 후 돌출되는 부분이다. 상단은 바짝 붙이고 오른쪽, 아래쪽은 자를 것이므로 충분히 길게 빼 놓는다.

테스트를 뽑아 본 후 각 키의 간격을 미세 조정한다. 스위치와 키캡까지 끼워 봐야 거리를 정확히 알 수 있으며 스위치 종류에 따라 간격을 조정해야 한다. 여기까지 만든 엄지키는 중간본을 백업해 둔다.

▶ 엄지 그룹핑 해제하여 플레이트를 충분히 늘리고 다시 그룹핑하여 메인 하단으로 가져가 수평각도+2도 기울인다. 수평이 8도이면 10도 기울여 최종적으로 바닥에서 2도 오른쪽으로 기울어진다. EditM의 키홀 거리를 6미리로 하고 위로 프레임끼리 겹칠만큼 밀착한다. 이 단계에서는 키홀 일부가 막혀도 구멍이 살아 있어 상관 없다.

25.1 : 수평각도와 같이 반대로 기울여 나중에 수평이 되도록 한다. 엄지 좌측키의 각도, 엄지 전체의 각도로 인해 키홀끼리 6미리 띄우면 키캡은 2미리밖에 차이가 나지 않는다. 키캡간 6미리가 되도록 키홀끼리는 10미리 띄운다.

Z축으로 -3도 회전하여 자판을 수평으로 기울인다. 자판의 기본 기울기에 해당하며 여기에 브리지 각도가 더해져 양손의 각도가 된다.

편집키를 (10, 10) 좌표에 19*19피치로 6개 배치한다. 그 위에 상하좌우 1.5미리 더 넓은 구멍을 얹어 스위치 팔 올릴 영역을 만든다. 걸쇠 영역만큼 확장되어 있어 6홀 전체 면적에서 수직으로 1.6, 수평으로 2미리 더 넓은 높이 4의 구멍을 만들고 6홀 좌하단에서 -1, -0.8 위치인 (9, 9.2)에 놓는다. 스위치 팔 영역 1.5를 사방에 확보하는 것이다. 그 구멍을 복제하여 솔리드로 만들고 상하좌우를 2미리씩 확장하여 플레이트와의 접합점을 만든다. 전체 2미리 내려 키홀 상단 높이를 플레이트 2미리 아래로 맞춘다. 부품 백업해 두고 회전없이 좌하단 문자키(*) 수직 8미리 아래에 배치한다.

25.1 : 18*17피치, 위쪽 구멍은 키캡까지 커버할 수 있도록 상하좌우 2미리 넓게.

▶조합키를 배치한다. Alt를 좌하단 모서리에 놓고 수직 21 간격으로 4개를 놓는다. CapsTab에 의해 1.5미리 밀려나 키홀을 2미리 왼쪽으로 뺀다. Esc20이고 Caps16이어서 2미리 차이면 왼쪽변으로 정렬된다.

25.1 : 수직 피치 19 간격으로 놓는다.

25.2 : Cap, Alt의 키캡폭이 2미리 짧은 18미리이므로 키홀은 Esc, Ctrl보다 1미리 바깥으로 뺀다.

수평 8, 수직 8도 기울이되 순서에 따라 결과가 달라지므로 반드시 수평 먼저 기울인다. D를 눌러 바닥에 앉힌다. 각도를 모두 적용한 상태에서 엄지영역의 높이를 조정하여 Shift의 위쪽 중앙이 T 아래 중앙보다 2미리 더 높게 한다. 바닥에서의 높이가 아니라 기울어진 경사면에 대한 높이를 측정해야 하므로 엄지키를 놓을 때가 아니라 회전을 마친 단계에서 해야 한다. T에 평면을 대고 엄지 영역의 높이를 조정하면 된다.

엄지와 플레이트 사이의 빈 공간에 삼각형을 채워 넣는다. 각도가 많이 틀어져 있어 평면을 쓰기는 어렵고 두께 4미리 삼각형을 적당히 크기 조정하고 각도 틀어 메꿔야 한다.

전체 그룹화한다. 엄지 그룹 해제 후 경사면 라운드 먼저 그룹핑한다. 미리 그룹핑된 키홀은 위나 아랫부분이 침범당할 위험이 있어 그룹핑을 풀어 구멍을 유지해야 한다. 엄지 위쪽의 2, 엄지키 전체와 Num은 그룹을 푼 상태여야 한다. 벽면에 붙어 있는 Fn, Caps 등은 벽에 의해 스위치 하단부가 막히므로 키홀을 풀어 몸체를 아래로 2미리 확장해 놓는다. 전체 그룹핑하여 키홀이 제대로 다 뚫려 있는지 확인한다.

25.1 : 수평 5, 수직 6도 기울인다. 키홀 몸체 확장은 벽을 두른 후에 한다.

26: 수평 6, 수직 7도 기울인다.

▶사방에 수직 구멍을 대 잘라낸다. 팜레스트를 위해 가급적 아랫면을 많이 남기는 것이 좋고 이후의 배치 편의를 위해 크기를 정수로 맞춘다. 25호는 154*132이다.

25.1 : 150*124에 맞춘다. 소켓을 사용할 예정이라면 벽에 너무 붙지 않아아 한다.

26: 155 * 125이다.

▶원점에 배치하고 바닥에서 2미리 위에 둔다. 좌하단 편집키가 바닥에 닿지 않아야 하는데 1미리만 해도 닿지 않지만 펑션열 제일 아래 키가 닿아 2미리로 했다. 4미리 두께의 수직벽을 두르고 하판 아래 평편에 위쪽으로 사각 구멍을 댄 후 1미리 위로 들어 일부 겹치도록 한 상태에서 벽 윗부분을 잘라낸다.엄지 부분도 같이 잘라내되 엄지 영역만 자른다. 엄지 꺽이는 부분이 두 구멍에 의해 뚫릴 수 있는데 자를 영역을 조정하든가 아니면 뜬 부분을 따로 채워 넣는다.

25.1 : 기둥과 키홀이 겹치는 곳이 있다. FnNum이 겹치는데 플레이트와 기둥을 그룹 해제해 놓고 겹치는 키도 그룹 해제하고 아래 몸통 높이를 6으로 늘린 후 전체 재그룹화한다. 숫자행도 일부 겹치는 키가 있는데 살펴 보고 그룹을 풀어 둔다.

▶아래쪽에 편집영역의 2열과 3열 사이에 팜레스트 접합부를 배치한다. 구멍 길이는 2.7이며 구멍 바깥쪽을 벽 바깥쪽에 정렬하면 된다. 안쪽에 21*5.5*11의 사각형을 대 돌기가 들어갈 구멍을 만든다. 사각형 크기는 상황에 따라 조정하되 키에 방해되지 않고 홀이 막히지 않으면 된다.

▶왼쪽에 펑션 접합부를 하단 34미리(25.1 : 30미리) 위에 배치한다. 펑션의 걸쇠는 이보다 0.2미리 더 위에 놓을 예정이다. 케이블 통과홀은 14*7크기로 상단 4미리 아래, 바닥에서 4미리 위에 배치한다.

▶상단에 칩홀을 왼쪽 10미리 안쪽에 배치하고 오른쪽에 케이블 구멍, 매크로 포트홀을 배치한다. 이상의 장치는 이미 만들어 둔 것이 있어 전 버전의 템플릿을 그대로 재활용하면 된다.

25.1 : 매크로 포트는 제거했다. 필요시 펑션홀쪽으로 다시 뺄 수도 있다.

▶오른쪽에 브리지 접합부를 배치한다. 수직벽을 기준으로 박으면 된다. 수직 각도와 같은 8도로(25.1 : 6) 기울인 후 플레이트에 평면 배치하여 0위치, 상단 30미리 아래쪽으로 이동하고오른쪽 벽에 정렬한다. 평면 해제하고 11~12미리 아래로 수직으로 내려 걸쇠가 안으로 들어가도록 한다. 안쪽 홀 공간 확보 사각형도 같은 각도로 기울여 플레이트 위까지 붙인다.

▶수평과 안착을 위해 아래쪽 벽에 두께4, 7의 날개를 만들어 곳곳에 붙인다. 기둥과 1미리씩 겹쳐 너비 10으로 만든다. 아래쪽면은 위쪽 플레이트까지 확장하여 무게도 받치도록 한다. 펑션접합부 옆과 반대쪽에 하판 연결 나사 구멍을 배치한다. 이 작업은 정확한 치수를 잴 필요 없이 눈대중으로 배치한 후 하판을 이 구멍에 맞춘다.

25.2 : 왼쪽 위 모서리에는 나사 구멍이 없어 하판이 아래로 쳐진다. 4*4*1크기의 사각형을 아래쪽에 대 3*3 영역으로 하판을 받치도록 한다.

▶모서리 4면을 9미리짜리 라운드로 처리한다. 모서리 정렬후 1미리씩 밖으로 빼면 된다. 여기까지 작업 모습이다. 전체 그룹핑하여 완성한다.

26: 인코더를 수납부를 우상단에 붙인다. 수납부 위에 2미리 구멍과 바깥쪽에 7미리 휠 공간 구멍을 배치해 둔다. 휠공간은 아래쪽으로도 더 내려가야 한다. 이 부품을 플레이트와 똑같이 수평 6, 수직 7도 기울여 우상단에 배치한다. 인코더 수납부가 플레이트 벽에 붙도록 윗면을 최대한 늘려준다.  

 

▶펑션 역역을 만든다. 원점에 19*19피치(25.1:18*17)26열을 배치하고 그룹간은 4미리 더 띄운다. 42*140*4(25.1:45*140*4) 플레이트를 -4,-5(25.1:-6,-5)에 배치한다. 수직으로 8(25.1:6) 기울이고 바닥에서 2미리 띄운다. 아래 위에 구멍을 대고 132(25.1:124) 길이로 맞춘후 전체 그룹화한다. 사방에 4미리 벽을 두르고 윗부분 잘라낸다. 윗면 바닥에 42*20*4의 날개를 붙이고 2미리 두께의 벽을 만들어 케이블 접합부를 수납할 공간을 만든다.

 

홀이 하단 34미리(25.1:30) 위치에 있으므로 걸쇠는 34.2(25.1:30.2)미리에 놓아 중앙 정렬한다. 본체쪽 구멍 길이는 2.7이며 펑션 영역의 팔길이는 3에 맞추어 0.3 여유를 둔다. 부품의 팔길이가 3.1로 되어 있으므로 플레이트폭-0.1 위치에 놓는다. 걸쇠 높이는 상황에 따라 조정하되 25호는 충분히 높아 10미리 높이로 했다. 케이블 통과홀은 14*7크기로 플레이트와 같은 위치에 뚫는다. 상단에 엠블렘 얹는다. 모서리 네 변 둥글게 깍아 전체 그룹화한다.

▶하판은 플레이트에 맞춰 제작한다. 칩 케이스는 왼쪽변에서 10미리 떨어져 있고 팔 영역을 피해 수평, 수직 공차 0.5 적용하고 나사 구멍 두 개만 잘 맞추면 된다. 플레이트 폭 154(25.1:150)에서 벽과 공차 4.5 양쪽을 빼면 폭은 145(25.1:141)이고 높이는 하단까지 덮을 필요 없으므로 100으로 한다. 플레이트를 투명하게 한 후 4.5, 32에 하판을 놓으면 딱 맞다.

이 상태에서 플레이트랑 겹친 부분을 파고 나사 구멍을 같은 위치에 만들면 된다. 하판과 플레이트를 겹쳐 나사 구멍 일치 여부를 확인한다. 케이블 고정 장치는 나사 빼고 4미리 원통의 V자 형태로 홈을 판다. 높이는 3미리이면 케이블을 힘으로 눌러 끼울 수 있고 잘 고정된다. 사용할 케이블 두께에 따라 홈의 폭과 깊이를 적당히 조정한다.

25.1 : V자 꺽이는 부분이 좁아 약간 더 확장했다.

▶플레이트가 커졌고 각도도 바뀌었으므로 팜레스트도 새로 만든다. 좌우폭은 5미리씩 늘리고 길이는 5미리 축소한다. 하판은 6미리에서 12미리로 늘리고 오른쪽은 6도 기울여 tan6*95=9.98만큼 위로 기울인다. 버전 관리를 위해 시제품 호수와 안밖 높이를 기록해 둔다.

오른쪽은 대칭으로 만들되 그룹 해제하여 문자는 다시 대칭한 후 재그룹화한다.

25.1 : 플레이트 각도 변화로 인해 8/18 크기도 하나 더 만들었다.

플레이트 수정

처음부터 완벽하게 될 리는 없고 수정할 사항이 무쟈게 많이 나오기 마련이다. 황당한 실수도 있고 설계상의 문제도 있다. 첫 출력물이다. 플레이트는 고속으로 10시간에 뽑았고 나머지는 표준으로 뽑았다.

여기서는 수정사항을 간략히 요약만 하여 이런 점을 주의해야 함을 기록할 뿐이며 제작 기록에 다 반영해 두었다. 차후 버전에서 참고할 때는 제작편만 보면 된다. 먼저 플레이트측이다.

 

- 칩 나사 구멍 하나 누락

- 케이블 통과선 4핀에 맞게 작게 제작. 5*5 사각형이면 충분함

- 문자영역의 32(L자리)를 덜 덮어 틈이 있음

- Shift 위쪽이 덮여 스위치 안 꽂힘

- Fn, Num, Cap 자리 기둥에 막힘. 키홀 그룹 해제 후 홀 몸통 높이를 6으로 늘림

- 브리지는 잘 들어가나 짧아 보여 아래로 10미리 늘리기로 한다.

 

수평은 잘 맞으며 키 피치도 19미리로 딱 맞게 나왔다. 다음은 펑션영역이다. 황당한 실수가 좀 있었다.

 

- 팔길이를 3으로 해야 하는데 2.7로 착각해서 안 들어간다.

- 케이블이 통과는 하는데 좁아서 접속부를 본체쪽에 두어야겠다.

- 하단키가 살짝 바닥에 닿는데 기둥 약간 깍고 스위치 정방향으로 끼우기로 한다.

- 오른쪽열은 잘 들어가는데 왼쪽열은 벽에 걸림. 41에서 42로 늘림.

 

하판은 플레이트랑 겹쳐 놓고 만들었는데도 택도 아닌 실수를 했다.

 

- 펑션 접합부 튀어 나온 부분을 깍지 않아 안 들어감.

- 칩 케이스는 잘 맞으나 C 타입 한정이며 마이크로는 다시 만들어야 함

- 나사 구멍이 너무 바깥쪽이라 안쪽으로 약간씩 이동함. 본체도.

 

여기까지 수정한 후 2차분을 뽑았다. 0.2 레이어에 인필 20%, 서포트 10%18시간 조금 더 걸렸다. 왼쪽 출력후 하판, 펑션, 브리지를 연결해 보니 모두 잘 맞아 연이어 오른쪽 플레이트와 하판을 걸었다. 내일 오후 2시에 출력 완료되니 그 전에 문서 정리하고 키캡 제작 등의 작업을 하기로 한다.

이래 놓고 책 좀 읽다가 왼쪽 먼저 살살 납땜 시작했는데 오른쪽 나오기 전에 완료하지 못해 결국 계속 납땜만 했다. 킹룬이 분발하여 18시간이나 걸리는 양쪽 플레이트를 아무 사고없이 무사히 잘 뽑아 작업이 원활하게 진행되었다.

납땜

61: (여기서부터 25호로 타이핑). 30일 저녁에 왼쪽 플레이트 뽑고 몸푼다는 기분으로 납땜을 시작했다. 먼저 소켓을 쓸 것인가부터 결정해야 하는데 피치가 바뀌면 다이오드간의 거리가 달라 재활용에는 문제가 있다. 그러나 스위치를 교체할 수 있는 이점은 분명히 있어 사용하기로 결정했다. 이 결정에 2만원이 더 든다.

소켓이 스위치보다 폭이 넓어 좁은 공간에는 안 들어간다. 어쩔 수 없이 가장자리의 스위치는 90도 돌려 꽂았는데 방향성이 없어 별 상관은 없다. 납땜할 때 열과 행도 굳이 구분하지 않아도 된다. 다이오드 고리를 말 필요가 없다. 소켓의 구멍에 꽂을 수도 있지만 저번에 해 보니 이게 더 귀찮아 다리만 살짝 걸쳐 놓고 납을 먹이는게 더 낫다. 납이 예상보다 강해 붙여 놓기만 하면 떨어지진 않는다. 저녁에 3줄 정도 작업해 보고 다음날 아침에 나머지 납땜했다.

직결보다는 손이 더 가지만 많이는 아니어서 시간은 약간 더 들어간다. 칩이 제대로 동작하는지 테스트한 후 납땜했다. 행렬뿐만 아니라 펑션, 시리얼 통신선이 더 들어가 약간 복잡하다.

열납땜은 조금 더 복잡하다. 소켓에 틈이 있어 점프선도 고리를 말 필요는 없어졌지만 제 위치에 끼우는게 시간이 오래 걸리고 눈이 피곤하다. 펑션, 시리얼 통신선까지 다 연결했다. 이 작업이 대략 2시간 이상 걸린다.

펑션은 건너 오는 선 붙여 납땜한다. 접합부를 본체쪽에 놓을 예정이라 위쪽의 방은 굳이 안 만들었어도 된다. 여기도 공간이 좁아 소켓 배치가 어려워 양쪽 핀을 구부려 겨우 집어 넣었다. 소켓을 쓸려면 폭을 조금 더 여유있게 만들거나 아니면 스위치를 돌려서 끼워야 한다.

오른쪽 플레이트 나온 후 바로 이어서 작업했다. 이미 한번 했던 작업이고 펑션이 없어 조금 쉽다. 부지런히 땜만 하면 된다. 소켓은 카일 남은 거 다 써 먹었는데 게이트론 소켓에 비해 가운데 구멍이 없어 조금 귀찮다. 오른쪽은 점프선 없이 철사만으로 다 연결했다.

칩은 펑션이 빠지니 C0, C1을 연결할 필요가 없다. 구조는 똑같되 C2가 가장 가까운쪽이 아니라 가장 먼쪽임을 유의해야 한다. 좌우 대칭이라 C2가 좌우 끝의 조합키열이다.

열납땜도 부지런히만 하면 된다. 소켓에 구멍이 없으니 열선을 임시 고정하기가 어려운데 틈 사이에 살짝 걸쳐 놓고 납으로 지지는 수밖에 없다.

완료해 테스트해보니 Y가 입력되지 않는다. 뚜껑 까 보니 납땜이 잘못된게 아니고 소켓이 빠졌다. 이게 소켓의 또 다른 단점이다. Win, Save의 순서가 반대로 되어 있는데 이것도 납땜 문제가 아니라 키맵에 실수가 있었다. 중앙 4키의 배선상 위치가 아래쪽이다 보니 헷갈린다.

키맵 수정하고 qmk compile -kb sojett/sj25 -km sj25로 다시 컴파일하여 집어 넣었다. 다행히 연결된 상태에서도 플래싱 가능하다. 오른쪽만 넣었더니 왼쪽으로 접속할 때는 여전히 반대로 동작한다. 키맵은 마스터가 관장하는 모양이다. 양쪽 다 똑같이 플래싱해 넣었다. 자잘한 문제 수정하고 부속품을 끼우고 조립했다.

브리지는 아직 큰걸 안 뽑았고 팜레스트는 오른쪽만 두 개 뽑는 실수를 해 대충 뒤집어 놓고 쓰고 있다. 키캡이 작아 불편한데 큰걸 뽑을지는 생각해 봐야겠다. 부속품 뽑고 미세 조정을 더 해야 한다.

작업 시간은 따로 측정하지 않았는데 30일 밤 10시에 시작해 1일 새벽 3시에 끝냈다. 이것 저것 테스트도 했고 쉬엄 쉬엄 했는데 작업 시간만 치면 대략 8~10시간 정도 걸린 듯 하다. 소켓을 쓰더라도 시간이 많이 들지는 않고 비슷하다.

부속품 개선

▶브리지없이 잠시 써 보니 양쪽 키보드가 따로 놀아 엄청 불편하다. 타이핑만 한다면 멀찍이 띄워 놓고 쓸 때는 괜찮은데 키보드를 앞뒤로 밀 때 각자 놀아서 번거롭다. 역시 분리형이라고 해도 양쪽 키보드의 위치는 고정하는 게 편하다. 24호에 비해 10미리로 두께 늘리고 길이도 10미리 더 아래로 내렸다. 6d는 원래 18미리 거리인데 25호에서는 좁은 거 같아 6d25로 늘렸고 주로 5d40을 쓸 예정이다. 자꾸 바뀌니 너무 많이 뽑아 두지 말고 한두개만 뽑자.

브리지 인쇄시는 인필 30으로 주어 튼튼하게 만들고 첫 레이어 -0.5 확장하여 칼질하지 않도록 하자. 출력 걸었는데 SD 카드에 복사가 잘못되어 다시 걸었다. SD 카드가 문제인지 새로 산 연장 케이블이 문제인지 모르겠다. 새로 복사해서 다시 뽑았다.

두께와 길이를 늘렸더니 확실히 더 안정되어 보이고 고정도 튼튼하게 잘 된다. 끼우고 빼기도 그리 어렵지 않다. 그런데 sj25라고 찍었는데 sj35인 것처럼 보인다. 킹룬이 작은 글자를 제대로 못 찍는 문제가 있는데 글자를 조금 더 키워야겠다.

4d62 하나 더 뽑고 각도를 왕창 줘 보고자 7d40도 뽑았다. 5d40에 비해 2도를 더 늘려 기본 자판 각도 3도와 더하면 10도이다. 팔을 벌리고 칠 때는 이 각도가 편하고 오므려서 칠 때는 8도가 편하다.

▶케이블 자체는 70센티로 끊었고 양쪽 안쪽에 말려 들어간 부분을 여유있게 잡아 두었다. 중간에 있는 케이블은 현재 22센티인데 이렇게 벌려 놓고 써 보니 색다르긴 한데 편한지는 잘 모르겠다. 거리를 좁혔을 때 케이블이 많이 말려 있어 오히려 불편하다. 어차피 풀어서 조정 가능하니 지금은 12센치 정도로 조정해 두자. 그랬더니 리본 모양으로 예쁘게 말리는게 딱 보기 좋다.

4가닥 케이블을 구해 썼는데 막상 써 보니 이것도 두껍다. 3가닥짜리 와이어가 있으면 딱 좋겠는데 아직 구하지 못했다. 내부 구리선도 너무 두꺼워 납땜하기 번거롭다. 프마로 칩 바꾼 이유가 케이블 얇게 쓰려는건데 그 이점을 충분히 살리지 못하고 있다. 3가닥 와이어 선을 구하면 딱 좋을 거 같은데 그러면 벌렸을 때 탄력 때문에 불편할 거 같다. 그냥 얇고 유연한 3가닥 선을 구해봐야겠다.

▶모든 키가 잘 입력되는데 Home키가 잘 안 먹는다. 아랫 부분에 약간 노출되어 있어 뜯지 않고 볼 수 있는데 손으로 소켓을 만져 주면 되다가 또 안되다가 그런다. 뜯어서 살펴 보니 다이오드쪽에 냉납이 발생했다. 알리에서 주문한 납중 맘에 안드는게 있는데 하나는 버리고 하나는 빨리 소진하려고 쓴게 말썽의 원인이 되었다.

 

즉열 납땜기로 가열하여 냉납을 제거하려고 했는데 잘 안되어 다른 납으로 덧 입혀 버렸다. 조립해 보니 이제 잘 입력된다. 그런데 Y가 입력이 안되어 다시 뜯었다. 0행이 너무 위에 있어 이번에는 2행에 열선을 붙였는데 이게 짧아서 조립중에 칩을 집어 넣다 잘 빠진다. 다음부터 칩을 들어도 안 빠질만큼 행렬 선을 여유있게 만들어야겠다.

지금은 테스트중이니 이래도 상관없지만 배포를 한다면 납땜과 연결성에 대해서도 많은 신경을 써야 한다. 좋은 납 써야 하고 인두기 관리도 잘 해 냉납 생기지 않도록 하고 소켓도 빠지지 않도록 세심하게 점검하고 테스트해야겠다.

▶팜레스트를 오른쪽만 두 개 뽑는 실수를 했다. 충분히 테스트해 보고 수정 사항 반영하려고 오른쪽은 대충 받쳐 놓고 쓰고 있는데 이것도 엄청 불편하다. 왜 오른쪽만 두 번 찍었나 점검해 보니 왼쪽 복제 후 대칭하고 오른쪽으로 이동했는데 드래그한게 왼쪽꺼고 남은게 오른쪽꺼였다. 별별 황당한 실수를 다 한다.

이걸로 잠시 테스트해 보니 높이 5미리 줄이고 좌우 5미리씩 늘린 건 괜찮은 작전인 거 같다. 그런데 바깥쪽이 살짝 낮다는 느낌이 든다. 이왕 다시 뽑을거 오른쪽은 바깥을 높이자. 키보드가 커졌고 경사가 급하니 손목이 좀 더 위에 있는게 좋겠고 자판이 8도라고 해서 팜레스트도 꼭 8도일 필요는 없다.

하판은 12로 하고 안쪽은 6도 기울여 tan6*95=9.98만큼 위로 기울인다. 이러면 바깥쪽 12, 안쪽 22가 된다. 팜레스트에 버전과 함께 아예 밖/안 높이를 명시해 두자. 기록해 두지 않으면 나중에 어떤게 어떤건지 알 수 없다. 왼쪽은 다시 뽑지 않아 10/23인데 비교를 위해 그냥 쓰기로 한다.

▶출력 직후에는 플레이트의 수평이 잘 맞지만 베드에서 분리하면 식으면서 틀어지기 시작하고 서포트 분리하면 더 틀어진다. 출력물을 완벽하게 수펑으로 맞추는 것은 거의 불가능해서 뽑은 후 맞추는 수밖에 없다. 또 플라스틱이 바닥에서 미끌리는 느낌도 그리 좋지 않아 바닥에 뭐라도 대야 한다.

윗면 바닥에 2미리 두께의 부직포 충격 흡수 패드를 깔아 수평을 맞췄다. 한쪽이 잘 안 맞아 흡수 패드를 1미리로 낮게 잘라 붙였더니 괜찮아졌다. 이렇게 되면 아랫면은 그냥 걸쳐 있는 것이고 가운데 만들어둔 기둥도 있으나 마나이다. 좌우의 수평을 맞춘 후 브리지를 끼우면 한쪽이 또 흔들린다. 브리지 홀의 쥐젖이랑 먼지, 출력물 찌꺼기를 청소하면 좀 낫다. 그래도 왼쪽이 좀 끄덕이는데 이건 더 어떻게 할 방법이 없다.

종이 테이프를 4겹 깔아 대충 맞게 맞춰 놨는데 이것도 브리지가 바뀌면 틀어질 거다. 완벽한 방법은 없고 상황에 맞게 대충 수평 맞춰 가며 써야 한다. 펑션 영역도 수평 잘 맞고 틀어지지 않아 이 정도만 해도 나쁘지 않다. 딱딱한 플라스틱 플레이트로 수평까지 완벽하게 맞추는 건 어려우니 뭐라도 붙여야 하고 그렇다면 굳이 수직 각도를 8도나 줄 필요는 없어 보인다.

▶피치는 커졌는데 키캡은 예전 그대로라 벙벙해 보인다. 시범적인 버전이라 굳이 키캡을 만들 필요가 있나 싶지만 한세트 완성하는 의미는 있으니 만들기로 한다. 24호가 16.5 *15.5 피치에 키캡 15*13이니 갭이 1.5인 셈이다. 이 기준대로면 19*19피치에 대해서는 17.5*17.5로 만들어야 하나 차후 18*17 정도 피치도 만들걸 고려하여 키캡은 17*16으로 만들자. 물론 그때 되면 또 새로 만들겠지만 테스트용이라도 재사용은 고려해야 한다.

크기는 그냥 늘리면 되는데 두께가 고민이다. 현재 3미리인데 표면만 살짝 덮고 있는 식이라 가벼워 보인다. 4미리로 늘리되 아래쪽 홈을 0.5미리에서 1.5미리 3층으로 하여 높이는 유지하되 아래로 조금 더 내려가는 것처럼 보이도록 했다. 캡션도 4*6에서 5*8로 시원스럽게 늘렸다.

3이랑 가이더로 각각 뽑아 봤는데 어3이도 노즐을 0.3으로 했더니 충분히 쓸만한 품질을 보여준다. 문자는 가이더 표준 옵션으로 뽑고 숫자는 어3으로 뽑아 보자. 필라멘트 바꾸기 귀찮아 꽂혀 있는걸로 뽑기로 한다. 뽑아 보니 두께를 4로 늘린 건 실제 높이를 증가시키지 않으면서 단단해 보여 좋다.

Tab키는 폭을 3미리 더 늘려 찍었고 숫자, 펑션, 편집 등을 각 색상으로 새로 찍었다. 엄지와 조합은 넓은 피치까지 고려한 것은 아니어서 예전 버전 그대로이다. 피치에 맞게 이들도 적당히 키울 필요가 있다.

25호 제작 과정에서 생성한 파일을 정리했다. 디자인 파일은 틴커캐드에 있고 각 부분별 STL 파일 백업해 두었다. , 키캡은 임시적인 버전이고 필요한 부분만 따로 저장하여 찍어 STL 파일이 별 의미가 없다. 출력 파일도 다시 찍을 필요가 거의 없고 매번 프린터나 재료가 바뀌어 저장해 둘 필요 없다.

펌웨어는 컴파일한 hex파일과 소스 파일을 백업해 두었다. QMK 설치하고 키맵 수정한 후 다시 컴파일하면 된다. 모든 작업은 완료한 25호의 모습이다. 웹에 24, 25 릴리즈 정보를 업데이트했다.

제작 후 이틀동안 써 봤는데 나름 쓸만하다. 그러나 벌써부터 수정할 사항이 눈에 보이는데 드라이버 좀 만든 후 바로 제작할 것인지를 고민해 보기로 한다.

각종 스위치 테스트

돈들여가며 소켓을 쓴 이유가 스위치를 교체해 보자는거다. 과연 교체가 가능한지, 또 어떤 스위치가 좋은지도 점검해 볼겸 빌드 직후에 스위치를 교체해 봤다.

 

무려 16종의 스위치를 박아 넣었다. 배치는 대략 다음과 같다.

 

왼쪽 문자 : 홀리판다, 크리스탈 블라썸, 바다소금, 게이트론 황축

오른쪽 문자 : 바다소금 택타일, 딥루비, 딸기와인, 모래시계

펑션 : 왼쪽 오테뮤, 오른쪽 팬텀

편집 : 왼쪽 체리, 오른쪽 바다소금 저소음

조합 : 왼쪽 삼신흑, 오른쪽 버니 리니어

엄지 : 블라썸, 아래 매크로는 백축

 

모두 체리 호환이라 소켓이랑 구멍이 맞고 높이나 스트록도 일치한다. 대부분 리니어이고 택타일이 하나 들어가 있다. 하판 뜯고 소켓 분리해 보니 잘 되며 완전한 분리도 가능하다.

 

다이오드가 철사 재질이라 분리해도 배치 상태를 기억하며 플레이트를 교체할 수 있다. 원래 소켓은 스위치 교체가 목적이지만 나는 플레이트를 교체함으로써 납땜을 최대한 피하는 목적이 더 크며 이 목적에 부합한다. 이 구조물이 일종의 PCB인 셈이다. 스위치를 다시 끼우는 것도 그리 어렵지 않았지만 플레이트가 좁아 납이 붙어 있는 부분은 분리가 조금 어려워 칼질도 필요했다. 교체 가능하려면 플레이트 공간을 조금 여유있게 만들어야겠다. 설계도에 따라 맞춰서 끼워 넣는데 대략 30분 정도 걸렸다. 스위치 바꿔 끼느라 칩이며 배선이며 막 꼬이고 쳐지고 그랬는데도 납땜이 끊어진 예는 없어 제법 견고하다.

플레이트간에 배선을 바꿔 쓸려면 수평 피치가 일치해야 한다. 수직은 점프선이라 신축성이 있지만 수평은 다이오드 철사라 구부리거나 납땜을 다시 해야 한다. 1미리 정도 차이라면 다른 플레이트에도 쓸 수 있을 거 같다. 이 작전이 잘 맞으면 칩, 다이오드값을 아낄 수 있고 납땜 시간도 절약할 수 있어 테스트에 유리하다.

왼쪽은 이상없이 잘 끼워졌는데 오른쪽의 6, UEnter의 입력이 안된다. 6은 단순한 접촉 불량인거 같은데 나머지 둘은 뭐가 문제인지 모르겠다. 스위치 자체가 불량인가 싶어 통전 테스트해 보면 정상인데 끼우면 안된다. 어찌 어찌 흔들어서 접촉 되게 만들었는데 소켓은 이런 품질 불안정의 문제가 있다. 조립 후 쓰다 보니 Enter가 또 안되어 결국 스위치를 교체했다. 빼는 과정에서 다리가 휘어져 헐거워진 거 같다.

 바꿔 놓고 쳐 보니 여러 스위치를 경험해 보는 건 좋지만 이질적인 키감이 그리 썩 좋지는 않다. 적어도 문자 부분은 같은 스위치를 써야겠다. 이왕 끼웠으니 각 스위치의 키감을 정리해 보자. 이 테스트에서 가성비 좋은 스위치를 주력으로 써야겠다.

 

- 바다소금, 블라썸 : 투탑이다. 바닥치는 맛이 일품이고 경쾌하다. 바다소금은 소리가 조금 둥글어 부드럽고 조용한데 비해 블라썸은 선명하지만 약간 시끄럽다. 우열을 가리기 힘든데 바다소금이 조금 고급같지만 나는 개인적으로 블라썸이 더 취향에 맞다.

- 딸기와인 : 바다소금과 블라썸의 중간쯤이며 절제된 소리를 들려준다. 고급 느낌이 나며 좋긴 한데 가격이 3배나 비싸 메인으로 쓰기는 어렵다. , 가성비가 떨어진다.

- 크리스탈 블라썸, 팬텀 : 싸다고 왕창 샀는데 잘못했다. 소리가 경박하고 뭉툭해 특색없고 심심한 키감이다. 그렇다고 나쁜건 아닌데 메인으로는 적합치 않다. 다시 살 일은 없을 거 같고 테스트용으로 소비해야겠다.

- 바다소금 저소음 : 전형적인 저소음 적축이며 조용하고 키감도 괜찮은 편이나 반발력이 없어 푹푹 꺼지는 느낌이다. 사무실이라면 채용할만하지만 집이라면 굳이 이런 스위치를 쓸 필요는 없다.

- 바다소금 택타일 : 걸리는 느낌보다는 초반의 키압이 높다가 누르면 쑥 들어가는 형식이며 걸리는 소리는 들리지 않는다. 구분감은 있지만 반발력은 약해 별 재미가 없다. 키압도 높고 스템 스치는 소리도 약간 있어 내 취향은 아니다.

- 홀리판다 택타일 : 바다소금 택타일(180)과 유사하되 키압이 약간 더 낮고 소리가 경쾌하다. 구분감도 더 분명해 타자기 찰칵거리는 소리가 난다. 택타일을 꼭 써야 한다면 이게 더 좋지만 310원으로 가격차가 있다.

- 게이트론 황축 : 예전 최애 스위치였는데 지금 쳐 보니 그저 그렇다. 바닥치는 느낌이 분명치 않고 애매하다. 하나는 불량인지 스템 스치는 소리가 심하게 나 교체해야겠다.

- 체리 적축 : 예전의 메인이었는데 최신 스위치에 비해 별다른 특색이 느껴지지 않는다. 사 둔지 오래 되서 그럴 수도 있다.

- 딥루비 : 키감은 바다소금과 유사하되 바닥치는 소리가 로우피치이며 바닥에 아주 얇은 고무를 깔아 놓은 듯 반발력이 부드럽다. 리니어와 저소음의 중간쯤에서 리니어에 약간 더 가깝다.

- 모래시계 : 바다소금, 블라썸과 유사한 키감이되 키압이 45g으로 가볍다. 새끼 손가락이나 집게 안쪽, 새끼 바깥쪽 먼 위치의 저압 스위치로 썩 괜찮은 편이며 반발력도 좋다. 메인으로 쓰기에도 충분해 보인다.

- 버니 리니어 : 키감이나 소리는 딸기 와인이랑 비슷하며 37g 저압이다. 그러나 느낌상 모래시계보다 더 무겁게 느껴지며 60g이랑 별 차이가 없다. 가격도 딸기와인이랑 같은 550원이라 굳이 쓸 이유가 없으며 5개 산거 다 써 먹었다.

- 삼신흑 : 80g의 육중한 무게감이 확실히 느껴진다. 무거워서 바닥치는 소리도 크지 않고 무난하다. 내가 파워타건을 잘 하지 않는 스타일이라 취양에는 맞지 않다.

- 백축 : 사 둔지 오래 되서 기억이 잘 안나는데 게이트론 제품이며 아마 30g일거다. 진짜 가볍고 부드러운 대신 막 치면 오타 속출이다. 아동용으로 적합하며 모래시계와 같이 저압으로 구성하면 괜찮을 듯 하다.

 

테스트 결과 택타일과 저소음은 목적이 달라 굳이 쓸 필요 없고 리니어 중에는 블라썸과 모래시계가 괜찮아 주력으로 쓸만하고 약간 비싸지만 바다소금도 괜찮다. 이 두 가지만 좀 더 주문하여 물량 확보해 놔야겠다.

이번에 일반 스위치를 테스트하면서 사실 좀 놀랬다. 기술이 이렇게나 발전했고 좋은 스위치가 저렴한 가격에 이렇게 많아졌다는게 즐겁다. LP 적축을 쳐 보니 진짜 재미없고 심심한 키감이다. 스트록이 깊은 건 불만이지만 보급에는 더 유리하니 당분간 일반 스위치를 써야겠다.

소젯 개선

맨날 하드웨어만 만들고 있고 소프트웨어를 등한시하고 있는데 25호까지 완성했으니 드라이버도 조금 진척시키자. 중간 중간에 발견한 버그와 개선 사항을 적용한다. 구조상의 큰 변화는 없으므로 버전은 아직까지 1.35이다.

 

▶시작시 모니터 밖에 있으면 보이지 않는 문제가 발견되었다. 평소에는 이런 경우가 없지만 멀티 모니터를 쓰다가 하나를 떼어 내거나 모니터의 위치를 바꾸면 발생한다. 일단 발생하면 INI 파일을 직접 수정하는 것 외에는 정상 위치로 옮기기 어려워 초보자에게는 치명적인 버그이다.

소엔티에도 동일한 문제가 있었는데 같은 방식으로 수정하면 되지 않을까 했는데 조사해 보니 소엔티는 버그 목록만 있고 해결은 아직 하지 않았으며 오히려 소젯의 대화상자에 적용되어 있다. 메인 윈도우도 WinMain에서 윈도우 위치를 읽은 후 EnsureVisible만 호출하면 된다. 문제는 간단히 해결했는데 소엔티를 너무 방치하고 있어 이력 관리가 제대로 안됨을 발견했다. 차후 시간 있을 때 소엔티도 한번 더 업그레이드하자.

▶매크로셋을 써보니 굉장히 편리한 기능이다. 스타 리플레이를 볼 때 원하는 단축키로 금방 설정할 수 있고 다 쓰면 원래대로 돌아올 수 있어 실용적이다. 다만 특정 셋을 쓰다가 해제하지 않고 단축키를 누르면 엉뚱한 동작을 하는 문제가 있다. 일정 시간동안 입력이 없으면 기본셋으로 자동 리셋하는 기능이 필요하다.

shiftTimeout을 구현한 예가 있으니 비슷하게 따라 하면 된다. macroSetTimeout을 추가하되 이번에는 초단위이며 디폴트는 600, 10분으로 지정했다. 0으로 지정하면 적용하지 않는다. 옵션 저장 및 복구 코드를 작성하고 ProcessKey 선두에서 적용한다.

 

     // 매크로셋 타임아웃 적용. 기본셋이 아닌 상태에서 시간 초과시 0번으로 리셋한다.

     if (nowMacroSet != 0 && Opt.macroSetTimeout != 0) {

          if (lastTick > (DWORD)Opt.macroSetTimeout * 1000) {

              nowMacroSet = 0;

              UpdateStatus(8);

          }

     }

 

현재 매크로 집합이 어떤 것인지 상태란 제일 마지막 칸에 표시했다. 키의 정의를 변경하는 중요한 정보이므로 항상 보여야 한다. 대충 제일 마지막에 추가만 해 놨는데 차후 UI 정리시 위치나 형식을 잘 다듬을 필요가 있다.

리셋 기능을 작성한 기념으로 스타 리플레이 한판 봤는데 리셋 잘 된다. 그런데 1분으로 했더니 너무 짧아 10분 이상은 해야 쓸만하다. 매크로 엉뚱한 걸로 바꿔 놓고 잊고 있어도 일정 시간이 지나면 기본으로 돌아오니 안심하고 쓸 수 있다.

▶한글 자판의 여분키에 복모음은 제거한다. 이건 바람직하지도 않고 2벌식과도 배치가 달라 굳이 둘 필요가 없다. 자세를 벗어나는 것보다는 두 번 누르는게 월등히 편해 옵션으로 둘 가치도 없다. 반면 ㅌ, ㅋ은 Shift와 같이 눌러야 하고 배치도 이질적이어서 물리적인 키를 할당하는게 좋다. 복모음이 사라졌으니 집게 2행에 ㅌ, ㅋ을 각각 두자.

ㅆ은 좀 애매한데 자세가 틀어지는 것보다는 Shift와 함께 누르는게 더 좋기는 하다. 그러나 일단 물리키에는 없는 문자이고 빈도도 높아 옵션 정도로는 있어도 무방할 거 같다. 위치는 원래 B 자리였으나 아래쪽보다는 위쪽이 더 낫고 원래 ㅅ이 있던 자리여서 직관적이다.

요렇게 배치했는데 ㅋ의 접근성이 개선되었다. 자좌우모의 원칙을 깬건 조금 아쉽지만 옵션일 뿐이니 나쁘진 않다. 여분키를 권장하지는 않으며 실제 쳐 보면 제자리 Shift가 약간 더 낫지만 단독키가 좋다는 사람도 있으므로 이 배치를 계속 유지하기로 한다.

▶펑션을 분리할 수 있게 됨으로써 FN키에 대한 접근성이 중요해졌다. 상대적으로 잘 쓰지 않는 Win키와 위치를 바꾸는게 어떨까 싶은데 현재의 FN 위치보다는 오른손 엄지로 누를 수 있어 펑션키를 누르기 편하다. 그러나 반대 급부도 있는데 마우스 이동이나 멀티미디어 키가 전부 오른쪽에 있어 같이 누를 때는 왼손이 더 낫다.

바꿔 보는 것도 나쁘지는 않을 거 같은데 일단 보류하기로 한다. 펌웨어를 다시 컴파일해야 하고 19호 이후에 유지하던 키맵이 바뀌는 게 부담스럽다. 또 펑션은 Edit모드의 왼쪽에도 있어 접근성이 그리 나쁘지 않다. 이런 고려가 있었다는 기록만 남겨 두고 다음에 펌웨어를 다시 컴파일할 때 신중하게 고려해 보자.

 

이상, 여기까지 소젯의 자잘한 버그와 사소한 개선 사항 몇 가지를 적용했다. 겨우 2시간만 작업하면 될걸 지금까지 미루어 두었다가 해치웠다. 원래 소프트웨어 개발자인데 맨날 납땜만 해 대고 정작 프로그램에는 별반 신경을 쓰지 않는 꼴이 좀 우습기는 하다. 남은 문제는 다음에 한손 자판과 함께 작업하기로 한다.

25.1호 제작

25호 사용기

사용한지 일주일 정도밖에 안되었지만 벌써 장단점을 대충 파악할 수 있다. 24호와 배치상의 변화는 별로 없고 사용 방법도 똑같지만 기술적인 큰 변화가 몇가지 있다. 바뀐 것과 개선된 점을 정리해 보자.

 

24호에 대한 개선 : 프로마이크로 도입으로 케이블 얇아지고 양쪽 접속 가능. 펑션 분리. 키홀이 체리, LP 겸용. 스위치 핫스왑 가능. 한손 자판 지원

24호에 대한 변화 : 수평, 수직 8도 각도. 19*19 피치에 일반 스위치 사용. 플레이트는 가로, 세로 14미리 커짐.

 

▶좌우 분리형 : 아주 잘 구현되었다. 흔들림도 별로 없고 수평만 잘 맞추면 불편하지 않고 사용감도 좋다. 브리지를 교체하거나 아예 제거해 버리면 원하는 거리와 각도를 맞춰 쓸 수 있다. 접속부도 끼우기 쉽고 고정도 잘 되는 편이라 더 개선하지 않아도 될 듯 하다. 다만 케이블이 4핀으로 조금 두꺼운데 3핀 얇고 잘 휘어지는 것으로 새로 구해 봐야겠다. 자주 구부리므로 단선은 안되고 연선으로 최대한 얇은걸 구하기로 한다.

프로마이크로를 채용하여 좌우 각각 납땜 작업할 수 있고 좌우 어디에 꽂으나 잘 동작하는 것도 큰 장점이다. 핀수가 조금 아쉬운 면이 있고 노브를 붙이기 어려운 단점이 있지만 당분간 이 칩을 계속 사용해야겠다.

▶펑션 분리형 : 조금 끄덕거리지만 본 플레이트에 영향을 주지는 않는다. 분리를 해 보지는 않았지만 분리 가능함은 확실히 알고 있으니 이걸 떼고 좌우 동형으로 쓸 수도 있다. 상황에 따라 일체형으로 만들어도 되지만 케이블 연결 정도만 하면 되니 당분간 분리형으로 만들기로 한다. 이것도 8핀 케이블 얇은걸 아직 구하지 못해 4핀 케이블 2개를 썼는데 천천히 적합한 케이블을 구해 보기로 하자.

▶브리지 : 두께를 10미리로 늘린 건 잘 한 결정인 거 같다. 접속부도 튼튼해서 키보드를 통째로 들어도 빠지지 않는다. 당분간 계속 이 브리지를 쓰되 시제품에 따라 길이와 접속부 위치만 조금씩 조정하면 된다. 장기적으로는 각도와 거리 조정이 가능한 구조물을 기획하고 있는데 쉽지 않을 듯 하다.

▶팜레스트 : 10미리 늘리고 길이 5미리 줄인 것이 주효해 손목이 편안하게 잘 얹힌다. 안밖의 높이는 일단 6도로 맞췄는데 나쁘지 않는 거 같다. 이것도 이대로 쓰다가 차후 한가할 때 더 유선형으로 더 개선해 보자.

▶스위치 핫스왑 : 장단점이 있다. 스위치를 교체해 가며 쓸 수 있다는 큰 장점이 있고 플레이트도 피치만 비슷하면 바꿔 쓸 수 있다. 소켓 비용이 따로 들어가고 납땜이 조금 번거로워지는 단점이 있다. 이후 가급적이면 채용하되 테스트용이거나 스위치가 확정되어 있으면 굳이 안 붙여도 된다.

▶피치 : 이게 제일 불만이다. 쿼티와 똑같이 만들어 본 적은 1호때 딱 한번밖에 없었고 그나마도 실사용은 거의 안 했다 한번은 만들어 볼 필요가 있다고 생각했고 그런 샘플을 만들어 봤다는데 의의가 있다. 그러나 예상한대로 너무 벙벙하고 크기에 불리하다. 일반 사용자의 적응에 유리한 점은 있지만 어차피 직교 배열에 익숙해져야 하니 피치까지 똑같을 필요는 없다. 이걸 치다가 24호를 쳐 보면 조금 답답하다고 느껴지지만 숫자까지 멀지 않아 더 빠른 이점이 분명히 있다.

이번에 숫자를 1미리 더 내렸는데 문자영역간의 수직 간격보다 더 멀다. 이 정도로는 안되고 더 내려서 문자 영역 간격보다 더 줄여야 한다. 20도 기울어져 있다 보니 계산이 잘 안되는데 이번에 계산식 만들어 정확히 계산해 봐야겠다.

19*19가 못칠만큼 벙벙하지는 않고 막상 쳐 보면 이것도 적응할만하다. 키캡 면적이 넓어 대충 쳐도 위치가 맞는 이점도 있다. 그러나 손가락이 아무리 커도 19는 너무 먼 간격이고 수직은 구분만 가능한 정도로 좁아도 상관 없다. 배포와 제자리 고속 입력의 두 가지를 적당히 충족하는 적당한 피치는 18*17 정도가 아닐까 생각된다. 제자리에서 친다면 조금 좁아도 된다.

▶피치를 키우면서도 엄지키의 크기를 키우지 않은 것은 미처 예상하지 못했던 실수이다. 엄지키끼리 인접해 있어야 하지만 문자키와 비율은 맞아야 하고 SpaceShift는 조금 더 커져도 상관 없다. EnterBS도 빈도에 비해 너무 작아 보인다. 문자키와 최소한 같은 크기나 약간 더 크게 늘리고 간격도 조금 더 늘리는게 좋겠다.

조합키간의 간격도 문자에 비해 별로 크지 않아 크기 조정이 필요하다. Tab키를 3미리 더 늘린 것은 아직까지는 효과를 잘 모르겠다. 새끼 손가락을 뻗을 때 Tab 왼쪽 끝에 걸치는걸로 봐서 괜찮은 거 같다. 더 실사용해 봐야겠다.

▶키감은 예상했던 것보다는 대만족이다. 스트록이 깊어 불편할 줄 알았는데 피치가 커지니 쑥쑥 들어가는 느낌이 좋고 속도에도 큰 영향을 미치지 않는다. 싸고 좋은 최신 스위치가 많이 발표되어 선택의 폭이 넓어진 점도 좋다. 이 정도 품질이라면 굳이 LP 스위치를 고집할 필요없이 당분간 일반 스위치로 시제품을 만드는게 좋겠다. LP 스위치는 오히려 소형이나 미니 배열에 적용하는게 적당하다.

▶키캡을 너무 넓게 만들어 조금 답답해 보인다. 15*1317*16으로 너무 많이 키워 꽉 차 보인다. 기성품의 크기를 재 보면 아래쪽은 거의 18*18로 꽉 채워 키캡간 간격이 0.5에 불과하다. 손가락 닿는 면적은 13*15로 세로로 긴 형태이며 무각 키캡은 12*12로 좁다. 이 기준으로 보면 17*16의 크기는 맞고 표면 면적은 14*12로 사실 그렇게 넓지 않다. 이대로도 나쁘지는 않은 듯 하다.

문제는 너무 납작하다는건데 이번에 두께를 1미리 더 늘리고 옆면을 아래로 더 내려 측면 두께를 키웠어도 납작해 보인다. 측면을 좀 더 아래로 내리고 경사를 더 급하게 만드는 방안을 고려해 봐야겠다.  

▶수평, 수직 각도 : 23호부터 1도씩 높여 가며 6, 7, 8도를 모두 만들어 봤다. 셋을 나란히 놓고 쳐보면 별다른 차이가 크게 느껴지지 않는다. 그냥 각도에 맞게 손이 적응할 뿐이다. 각도가 커지면 조금 편한 거 같은 느낌이 살짝 들지만 그만큼 부피가 커지는 반대 급부가 있다. 각도별 최대 높이가 31-37-48인데 높으면 필라멘트를 많이 쓰고 출력 시간도 오래 걸린다.

지금까지 수많은 각도를 만들어 봤는데 2도로 만든 9호도 딱히 불편하지 않았고 10도로 만든 11호는 조금 과하다는 느낌이 들었다. 각도가 너무 낮으면 칩 수납 공간이 좁은 문제는 있다. 수평 각도는 4~6도 사이면 어느 각도나 괜찮고 수직 각도는 그보다는 조금 더 높게 6~10도까지도 괜찮다.

25호의 8/8도는 사용상의 불편함은 없으나 부피감이 과다해 조금 줄이는게 좋겠다. 플레이트의 수직 각도를 과다하게 줄 필요 없고 웨지나 신발로 추가 각도를 만들어 쓰는게 합리적이다. 플레이트 가운데 기둥 박아 놨는데 수평 맞추느라 뒷면에 쿠션을 대면 아무짝에도 쓸모없는 짓이었다. 플레이트의 두께만으로도 반발력은 충분해 중앙 기둥은 필요 없다.

▶엄지 각도 : 24호가 5, 25호가 2도였고 23호는 플레이트와 같아 -6도였다. 플레이트의 연장선에 있는건 엄지가 안쪽으로 올라가 확실히 불편하다. 5도와 2도 중에는 2도가 더 낫다. 플레이트와 똑같은 각도인 것은 맞지 않은 거 같고 최소한 그보다는 안쪽으로 경사를 주어야 한다. 차라리 평평한게 더 나을지도 모르겠다.

 

 잘 만든 부분도 있고 아쉬운 부분도 있다. 실사용을 충분히 해 보고 문제점을 모아 두고 개선사항도 같이 적용하여 26호를 만들지 아니면 지금 당장 파악한 문제점만 해결하여 25.1호를 만들지가 고민이다. 25호의 품질이 나쁘지 않아 실사용을 더 하면서 한손 자판, 노브 등을 더 연구하는 것도 괜찮겠지만 19피치가 불편할 뿐만 아니라 딱히 의미가 있는 것도 아니어서 원하는 피치로 빨라 넘어가 안착하는게 나을 거 같다.

다행히 소켓으로 되어 있어 플레이트만 새로 뽑으면 납땜하는 수고를 하지 않아도 25.1호로는 금방 넘어갈 거 같다. 수평 피치가 1미리 좁아 납땜을 살짝 풀어야 할지도 모르겠지만 새로 납땜하는 것보다는 낫다. 또 지금 주문해 놓은 소켓이 오지 않아 당장은 소켓을 쓸 수도 없다. 일반 스위치의 키감에 상당히 만족하고 있어 25.1호로 스위치 테스트도 많이 진행하고주 한다. 결정했으니 2~3일만 더 투자하자.

25.1호 기획

25호의 개선 버전이며 딱히 더 들어가는 기능은 없다. 피치가 넓어 적응이 잘 안되어 체리 스위치에 적절한 피치를 확정하는 것이 주목적이다. 이걸로 스위치 테스트하고 한손 자판을 만들 계획이다. 대부분의 특성은 25호와 같되 다음 사항을 변경한다.

 

- 18*17 피치를 적용하고 숫자행도 동일한 간격으로 띄운다. 엄지도 아랫변을 2미리 더 키우고 좌우키와의 간격을 더 벌린다. 엄지 아래 매크로는 18피치 적용하지 않고 현 상태를 유지한다.

- 키캡은 17*16이되 좌우하단에 2미리 경사를 주어 표면은 13*14이다. 엄지키는 폭을 2미리 늘리고 좌우키는 문자키보다 2미리 더 크게 만든다.

- 수평은 5도만 주어 부피를 줄인다. 수직도 6도이되 웨지나 쿠션으로 추가 각도를 더 줄 수 있도록 한다.

- 엄지의 각도는 0도로 바닥에 평평하게 만든다. Num, Win1미리 위로 올린다.

- 25호의 스위치와 키캡은 차후의 비교를 위해 그대로 두고 블라썸, 모래시계, 바다소금 스위치로 구성한다.

 

25호의 과다한 피치를 적당한 수준으로 조정하고 문자와 엄지의 피치 불일치를 해소하여 사용성을 향상시킨다. 수평, 수직 각도와 엄지의 각도를 조정하여 작고 예쁘게 만든다.

체리 키캡

피치는 스위치간의 간격이지만 겉으로 보기에는 키캡간의 간격이 더 잘 보여 키캡부터 새로 만들어 봐야 한다. 이번에도 몇가지 변화를 줬는데 체리 키캡은 높이가 최소 8이어서 4미리는 납작해 보인다. 6미리로 늘리고 벽을 1미리로 했다. 체리 스위치는 사용자에게 직접 보이지 않는 뒷면이 수직으로 내려가므로 뒷면이 바닥이 되도록 했다. 측면을 바닥으로 썼더니 잘 넘어지고 보기에도 좋지 않다.

옆면은 상관없지만 윗면은 오버행이 심하면 처짐이 발생할 수 있어 각도를 잘 맞춰야 한다. 스위치에 따라 역방향으로 꽂으면 몸체에 걸릴 수도 있다. 스템은 중앙 정렬하되 아래 벽면 때문에 서포트를 수직으로 받칠 수 없어 비스듬하게 받쳤다. 이 작전이 과연 성공할지는 뽑아 봐야 안다.

 

 

윗면은 무너지지 않고 나왔지만 서포트가 바닥에서 떨어져 버려 안착면을 넓혔다. 측면이 곱게 나오지 않고 울통불퉁하게 나오는데 조사해 보니 접합면이 겹치지 않으면 연속되지 않는 틴커캐드의 버그이다. 안쪽 경사면을 구성하는 삼각형을 0.1미리씩 겹치게 하여 해결했다.

잘 들어가고 모양도 나쁘지 않은데 결 방향이 세로에서 가로로 바뀌어 촉감이 달라질거다. 특정 스위치에서 아래, 위가 좁아 약간 걸리는 감이 있어 높이를 16.2로 조금 키웠는데 이러면 수직 간격이 0.8밖에 안된다. 차후 문제가 되면 앞면 삐죽 튀어 나온 끝부분만 약간 자르기로 한다. 아래면 안팎의 경사가 달라 안쪽이 조금 두꺼운데 경사를 대충 일치시켜 안쪽 두께를 1미리에 맞춘다. 서포트가 잘 안 떨어지는데 원통 아래부분을 덜 깍고 간격을 더 두었다. 모서리가 뾰족해 아래위로 1미리 삼각형 구멍을 댔다.  

세번째는 꽤 괜찮게 나왔다. 서포트도 깔끔하게 잘 떨어지고 라운드가 약하지만 뽀죡하지는 않다. 더 개선할 게 있겠지만 이번에는 이 키캡을 사용해 보기로 한다. 어차피 매 버전마다 새로 만드는 편이라 확정까지 지을 필요는 없다. 이 키캡은 LP 스위치에는 쓸 수 없다. 높이를 낮춰 다시 만들어야 한다.

문자 한 행을 출력하니 0.3 노즐로 3.50시간 걸린다. 거미줄이 약간 있지만 품질은 괜찮게 나오는 편이다. 서포트는 기분좋게 잘 떨어지지만 안착면이 좁아 떨어지는 경우가 가끔 있고 받침대가 중앙이 아니라 마주 보고 세워 놓으면 맞지 않다. 서포트 조금 더 넓히고 중앙 정렬한다. 서포트 윗쪽 간극은 0.35이고 아래쪽 간극은 0.5이다. 각인은 8*5를 기본으로 문자에 따라 조금씩 조정한다. 가이더 표준으로 뽑으니 2.14시간 걸린다.

 

서포트 안 무너지고 잘 나왔으며 분리도 잘 되는 편이다. 이번에 도입한 경사진 서포트는 썩 괜찮아 보인다. 쿼티 키캡이랑 유사해져 이질감이 덜하다. 무광으로 뽑았더니 표면에 세로줄이 생기는 부작용이 있다.

여러 장비로 뽑아 보니 어30.3 노즐에 유광 필라멘트가 잘 나온다. , 서포트 안착면이 일부 무너지는데 더 크게 확장했다. 이미 뽑은 건 가급적 그냥 쓰기로 하고 다음 수정시 셋트를 다시 만들기로 한다. Copy키의 서포트가 현재 최신 버전이다.

조합키도 새로 만들었다. EscCtrl20*18이고 CapsAlt18*18이다. 키캡 크기에 따라 키홀 위치도 수정해야 하는데 다음 버전에서 Caps1미리 안쪽으로, Alt1미리 바깥으로 빼 왼쪽변을 가지런히 맞추기로 한다. 엄지키도 새로 뽑되 엄지 양쪽키의 폭을 2미리 더 큰 19로 했다.

이번 키캡에도 확실히 진전이 있었다. 모양은 좋은데 다만 층이 세로에서 가로로 바뀌어 손톱으로 긁을 때의 느낌이 별로라는 단점이 있다. 윗면은 라운드를 줬는데 아래쪽은 뾰족하고 스위치 몸체에 걸려 높이가 16.2인데 전면 아래쪽을 0.2만큼 깍아 16에 맞추는 것도 괜찮을 거 같다.

플레이트 테스트

간격을 점검해 보기 위해 키홀 만들어 배치하고 수평, 수직으로 각각 테스트 플레이트를 뽑았다.

 

수평으로 5미리 줄어들고 수직으로는 거의 10미리 줄어든다. 중앙 상단 높이는 32이며 25호의 48에 비해 대폭 줄었다. 숫자행을 회전한 채로 1.5미리 내렸더니 조금 밀착했다. 정확한 공식을 찾아 보려 했는데 1행 아랫면에 평면을 대면 기울어진 평면이라 맞추기 어렵다. 이번에도 그냥 눈대중으로 1.5미리 내린 후 회전한 상태에서 간격을 맞췄다.

이번에는 가이더에 연분홍 매트로 플레이트를 뽑았다. 딱히 이유가 있는 건 아니고 많이 남은 필라를 활용했다. 킹룬으로 검정 매트를 같이 뽑아 봤는데 팜레스트 접합부에 들뜸이 발생해 쓰기는 어려울 듯 하다. 한쪽에 12.30시간 걸려 양쪽을 다 뽑는게 꼬박 하루가 걸린다. 그동안 부속품 뽑고 키캡도 하나 둘 뽑아 두었다.

팜레스트는 디자인 수정없이 어4ABS 아이보리색을 썼는데 이것도 남아서 그냥 쓴거다. 막상 뽑아서 끼워 보니 너무 높다. T 아래 중앙점의 높이가 25호는 24.7, 25.1호는 18.16.6만큼 차이가 나니 안쪽 2216으로 맞춘다. 수평 각도가 5도로 조정되어 바깥쪽이 8.7만큼 낮으면 되는데 8만큼 낮추면 안쪽은 8이 된다. 이 계산에 의해 8/16으로 새로 만든다.

하판은 빨간색으로 왼쪽을 먼저 뽑았는데 본체의 하단 팔 길이를 줄이면서 하판은 조정하지 않아 긴 부분이 있어 니퍼로 조금 잘라 내고 그냥 쓰기로 한다. 오른쪽 하판은 치수 조정해서 ABS 아이보리로 뽑았다. 그랬더니 쪼그라들어 칩이 잘 안 들어가 결국 빨간색 PLA로 다시 뽑았다. 길이나 폭은 거의 비슷하지만 나사 구멍이나 칩 수납 공간 등 갇힌 구멍이 0.4미리 정도 좁게 나온다.

브리지는 따로 만들지 않고 25호걸 공유한다. 길이도 잘 맞고 홈도 맞다. 다음은 만들면서 실수한 내용이며 다음 작업시 참고한다.

 

- Tab의 키캡 이동 공간이 덮여 칼로 잘랐다. 위쪽 구멍을 배치해야 한다.

- 하판 치수를 잘못 디자인해 왼쪽을 일부 칼로 잘랐다.

- 펑션에 엠블렘 얹는 걸 깜박했다. 이번에는 매직펜으로 쓰기로 한다.

- ABSPLA 보다 수축이 심해 전반적으로 작아 구멍이 잘 안 맞다. 칩 수납 어려움

- 키캡의 ET 자리에 돌기를 만드는 걸 자꾸 깜빡한다.

 

남는 재료 소진한답시고 매트와 ABS를 썼는데 별로 좋지 않다. ABS는 출력도 어렵고 크기가 줄어드는 단점이 있다. 매트는 연약해 접속부가 헐겁다. 브리지가 끄덕거리며 위로 들면 빠질려고 한다. 가급적 같은 재료, 같은 프린터로 찍는게 편하다.

배선 이전

부품값도 아끼고 납땜 시간도 절약하기 위해 25호의 부품을 떼어내 재활용한다. 25호는 피치 테스트용으로 남겨는 두되 굳이 칩에 연결되어 있을 필요는 없다. 이전 작업을 위해 24호를 잠시 다시 연결했는데 그 짧은 시간에 벌써 넓은 피치에 익숙해져 불편하다. 그리고 LP 스위치의 키감이 이렇게 심심한지 미처 몰랐다.

이러니 이대로 시제품 만들었으면 외면받기 십상이었을 거 같다. 내가 좋아하는 방식으로 만들게 아니라 대중이 익숙한 방식으로 먼저 만들어야 한다. 일반 스위치로 다시 돌아온건 참 잘한 결정인 거 같다.

(여기서부터 25.1호로 타이핑) 납땜을 옮기는 건 어렵지 않다. 막상 25호를 뜯어 보니 황당한 실수가 보이는데 두 군데나 납땜을 하지 않고 점프선을 감아 놓기만 했다. 이래도 접촉불량없이 잘 된 거 보면 신기하다. 분리하다 납땜이 떨어진 예도 있다.

 

25호 플레이트에서 소켓을 분리하는 데 별 문제는 없다. 납이 벽면에 붙어 있는 경우가 있는데 힘으로 떼 주면 된다. 새 플레이트에 소켔을 끼울 때는 간격을 잘 조정해야 한다. 세로는 간격의 문제가 없지만 가로는 1미리씩 점점 좁아지니 3칸까지는 다이오드를 휘어서 넣을 수 있지만 그 이상은 차이가 누적되어 어렵다.

중간쯤에 납땜을 끊어주고 소켓 끼운 후 다시 연결하면 된다. 문자키의 중간쯤에 4군데 정도만 끊었다가 다시 연결했다. 왼쪽 먼저 연결한 후 이 이 상태로 테스트해 보니 잘 되며 오른쪽은 25호와 통신한다.

오른쪽은 분리한 직후에 아예 납땜을 끊어 반으로 갈라 놓았다. 세 칸 정도는 구겨 넣어도 잘 들어간다. 피치가 같다면 이 짓을 안해도 바로 들어갈 거 같다.

이어서 펑션도 소켓 분리하여 새 플레이트로 옮기고 접속부도 2개 본체쪽으로 넘겨 8핀을 연결했다. 접속부가 2개라 번거로운데 하나짜리 빨리 구해봐야겠다. 이전 후 몇 가지 이상 증세가 있다. 세로 피치가 2미리나 차이가 나다 보니 다이오드끼리 겹치는 경우가 종종 있는데 보일 때마다 분리시켜 주었다.

개별 플레이트를 완전히 테스트하고 다 연결했는데 왼쪽 0, 1행에 합선이 발생했는지 3을 누르면 3h가 동시에 입력되고 h를 눌러도 마찬가지이다. 이때가 새벽 4시경이었는데 아무리 봐도 어디가 붙었는지 모르겠고 테스트기로 찍어 봐도 찾을 수 없다. 스위치 안이 망가졌나 의심도 해 봤는데 아마 엉뚱한 곳에서 문제가 발생했을 거다. 너무 피곤해서 일단 자고 아침에 다시 점검해 봤는데 역시 원인은 엉뚱한 곳에 있다.

왼쪽 플레이트는 정상인데 펑션의 0행과 1행에 합선이 발생했다. 원래는 수직 2미리 차라 떨어져 있어야 하는데 간격이 좁혀지니 붙어 버린걸 미처 보지 못했다. 납땜을 뜯지는 않고 아래 위로 철사를 구부려 분리시키니 일단 문제가 해결되었다.

46이 잘 안 눌러지는데 이건 소켓과 스위치의 접촉 불량이다. 소켓의 핀 접점은 구리인데 탄력이 약해 핀을 몇번 끼웠다 빼면 벌어져 힘이 떨어진다. 처음 끼울 때는 괜찮은데 몇번 넣었다 빼면 상태가 안 좋아진다. 별다른 방법은 없고 빼서 후후 불어 먼지 털어 내고 다시 꾹 끼워 잘 붙어 있게 만드는 수밖에 없다.

Y키도 입력이 잘 안되는데 이건 25호 때와 마찬가지로 조립중에 열 점프선이 짧아 소켓을 당겨서 그렇다. 끼워만 주면 잘 동작한다. 소켓과 스위치의 접점부가 계속 말썽인데 이러면 차후 배포시 품질에 심각한 문제가 될 수도 있어 배포용으로는 채용하기 꺼려진다. 테스트용 소켓도 몇 번 쓰면 끼운 후 납땜을 해 버려야겠다.

납땜을 이전하는데 소요되는 시간은 1시간 30분 정도로 추측된다. 소켓 분리하고 다시 끼우는데 각 20분 정도 걸리니 한쪽에 40, 펑션에 10분 정도인데 피치가 일치한다면 대략 1시간이면 될 거 같다. 플레이트를 바꿔치는데 치명적인 큰 문제는 없으며 바꿀만하다. 시제품 만드는 시간과 재료를 대폭 절약할 수 있어 종종 사용해야겠다.

스위치 배치

납땜 이전 후 이걸로 타이핑하고 있는데 불과 일주일 사이지만 25호의 기존 피치에 익숙해져 오타가 자꾸 발생한다. 1행의 Y를 치면 0행과의 중간쯤으로 손가락이 가 7Y를 같이 누르는 식이며 생각보다 이런 현상이 꽤 잦다. E7 상단의 차이가 원래 38이었는데 32로 줄었으니 손가락이 헷갈릴만도 하다.

피치를 바꾸면 손가락이 제자리를 찾기 어려움을 알 수 있다. 다행히 바뀐 피치에 적응하는데는 예상보다 시간이 많이 걸리지 않아 몇 시간만 쳐 보면 금방 익숙해진다. 그러나 원래 피치로 다시 돌아가면 또 헷갈려한다. 적정 피치를 일찍 확정하는게 그만큼 중요하다는 뜻이다.

스위치 종류가 바뀜으로 인해 키감의 변화도 있다. 이번에는 많은 스위치를 섞어 쓰지 않고 리니어 계열로만 싸게 구성했다. 사 놓은 걸 다 쓰기도 해야 하고 이것 저것 테스트도 더 필요하기 때문이다.

 

문자 : 블라썸. 새끼쪽 2열은 모래시계

숫자 : 딥루비, 엄지 : 딸기와인, 엄지 아래 : 딥루비, 바다소금 택타일

편집 : 왼쪽 크리스탈 블라썸, 오른쪽 바다소금

조합 : 크리스탈 블라썸, 펑션 : 팬텀

 

252행의 딸기 와인, 바다소금이 비싼 스위치라 감이 더 좋게 느껴지는데 미세하지만 분명 키감의 차이가 있다. 25호의 도각도각한 느낌보다는 25.1호의 키감이 살짝 떨어지는 기분이다. 그래도 24호의 LP보다는 더 좋다. 플레이트 재질에 따른 차이도 있는데 무른 재질에 비해 딱딱한 재질이 반발력이 경쾌하다.

68일 문자 영역의 블라썸을 바다소금으로 바꾸고 커서 이동키를 블라썸으로 바꾼다. 암만 쳐봐도 바다소금의 반발력과 하이피치가 더 감이 좋다. 블라썸도 감은 좋은데 바닥치는 소리가 낮아 경쾌함이 떨어진다. 원래 바다소금이 250원이었는데 어제 200원으로 세일해서 150개나 더 주문해 놨기 때문에 바꿔도 된다. 어차피 스위치를 소켓에 끼우면 돌려가며 쓰는거라 굳이 아낄 필요 없다. 새끼 손가락의 모래시계는 키압도 낮고 반발력도 좋아 그냥 유지한다. 블라썸은 굳이 추가 주문을 더 안해도 되겠다.

하판 뚜껑 까고 소켓 분리 후 키캡, 스위치 빼고 다른 스위치로 바꿔 끼고 키캡 다시 끼우고 소켓 결합 후 하판을 닫으면 된다. 왼쪽, 오른쪽 각각 12분씩 총 24분만에 스위치 교체 완료했으며 별다른 사고나 이상 증상은 없었다. 소켓 달아 놓으니 여러모로 좋다. 키감이 좋아졌는지 당장 확 느껴지지는 않으며 편집쪽으로 옮긴 블라썸이 또 괜찮아 보인다. 이건 아마 플레이트의 문제같은데 중앙쪽이 약간의 울렁임이 있어 반발력이 잘 안 느껴지는 면이 있다.

25.2호 제작

25.1호 평가

플레이트 디자인에 하루, 출력에 하루 꼬박 걸렸지만 이전 및 부속품을 갖추는데까지 다 해서 사흘 정도 걸렸다. 이번에는 키캡을 새로 만드느라 시간이 좀 걸렸지만 출력은 프린터가 알아서 한다 치고 디자인 및 이전에 이틀이면 충분하다. 완성 모습이다.

자잘한 오류가 있지만 피치를 적당히 줄이는데는 성공했으며 새로 만든 키캡도 괜찮아 보인다. 키캡이나 팜레스트 색상이 안 맞는데 남는 필라 대충 긁어서 쓰다 보니 그렇고 굳이 맞출려고 하지도 않았다. 키감도 꽤 좋은 편이라 이 정도면 오래 실사용해도 될 듯 하다. 문제점 및 아쉬운 점을 정리했다.

 

- 조합키열 정렬이 안 맞아 1미리씩 넣고 빼야 함

- Tab키의 스위치 닿는 부분이 막혀 있어 칼로 잘라 냄

- 숫자행이 너무 밀착해 있어 균일하게 간격 맞출 것

- 엄지 아래키 키캡 들어가는 면적 조금 더 늘릴 것. 키캡이 끼어서 안나옴.

- 하판 위 바깥쪽에는 나사가 없어 아래로 쳐지는 감이 있는데 걸쇠라도 걸어야겠음

- 키캡 결이 가로 방향이라 손톱 긁힐 때 감이 안 좋은데 더 써 보고 결정

- ET 키캡에 돌기 빼 먹음

- 펑션위에 엠블렘 빼 먹음

- 매트 필라의 강도가 별로 좋지 않음. 이후 유광 필라 쓸 것

 

문제점을 해결하여 25.2호를 만들 수도 있지만 중복 투자가 많아 여기까지만 하고 차후 개선 사항을 더 모아 26호를 만드는게 좋을 거 같다. 그랬는데 어차피 출력은 프린터가 하는거고 소켓까지 만들어 놨으니 그냥 문제 없을 때까지 만들어 보기로 한다.

플레이트 수정

처음부터 새로 만든건 시간이 너무 많이 걸리니 25.1호 플레이트를 수정했다. 각도가 기울어져 있는 상태에서 수정하려니 까다롭다. 조합키열은 Caps1미리 안쪽으로, Alt1미리 바깥쪽으로 뺐다. 플레이트에 평면을 놓으면 직교가 아니어서 원하는만큼 정확히 조정할 수 없다. 플레이트를 자르는 아래쪽 구멍에도 평면을 대고 키홀의 Z 높이를 조정했는데 대충 조정된다. 플레이트가 수평, 수직으로 다 기울어 있어 이것도 정확한 조정은 아니다.

 

탭키 위에 평면을 배치하고 사각 구멍을 하나 얹었다. 이것도 직교 좌표계는 아니어서 적당히 회전해야 한다. 차후 탭키는 위에 미리 구멍을 얹어 두어야겠다.

0행은 아랫면 구멍에 평면을 대고 Z 높이를 0.3미리 위로 올렸다. 중지쪽은 스위치 들어갈 아래쪽 구멍이 막힐 거 같아 키홀 높이를 6미리로 늘리고 그룹 해제해 두었다. 엄지 아래키는 스위치 들어갈 공간을 위해 0.5미리 아래쪽으로 높이를 키웠다. 왼쪽 위 모서리에 4*4*1미리 사각형을 대어 하판을 걸도록 했다.

플레이트의 문제 다섯 가지를 해결하는데 불과 30분밖에 걸리지 않았다. 물론 처음부터 이렇게 만드는 것에 비해 정확도는 떨어지지만 지금 그 작업을 할 수는 없으니 대충 수정해 두고 제작 방법에 문서화하여 반영해 놓기로 한다.

어제 건강한 3D 필라멘트를 10900원에 3개 구입했는데 이걸로 출력해 보자. 검증되지 않은 필라멘트지만 그래도 매트보다는 더 품질이 낫지 않을까 기대된다. 남색으로 걸었는데 13.19 걸린다. 뽑아 보니 색상이 너무 짙은 감이 있지만 중요한 건 아니고 수정한 사항은 다 제대로 반영된 거 같다. 오른쪽은 대칭해서 뽑되 이번에는 여기다 엠블렘을 새기기로 한다. 공간이 좁아 펑션 접합부와 케이블 구멍은 뺐다. 펑션은 다시 뽑지 말고 그냥 쓴다.

세로결 키캡 디자인

25.1호에서 새로 만든 키캡이 디자인은 예쁜데 사용하는데는 상당한 문제가 있다. 지금까지 출력한 키캡과는 달리 결이 가로 방향이다 보니 손톱으로 누를 때 긁히는 느낌이 나고 잡음도 있는 편이다. 아무리 예뻐도 사용성이 나쁘면 곤란하다. 뒷면이 평평해 거꾸로 찍었는데 이러면 안되고 좌우측을 바닥으로 놓고 디자인해야 한다. 조합이나 펑션은 상관 없을 듯 한데 문자는 어쩔 수 없다.

수치가 복잡해 제작 절차를 상세히 정리했다. 16*17*6 사각형을 놓고 좌우는 3*2쐐기로, 앞은 6*2, 뒤는 1*1쐐기로 깍는다. 왼쪽의 안착면 넓이를 3으로 잡고 오른쪽도 대칭으로 설계했다. 앞쪽은 끝까지 내려 비스듬하게 하고 뒷면은 모서리만 약간 깍는다. 이 도형을 복제하여 두께를 3.5로 줄이고 위치를 2.5에 놓고 폭, 높이는 2미리씩 줄인다. 뒷면 쐐기는 필요치 않아 삭제하고 구멍으로 만들고 그룹핑하여 안쪽을 비운다.

 

뒷면의 키캡면 두께는 1미리이되 안으로 들어가면 조금씩 넓어지는 구조인데 스위치 윗면에 닿지 않을까 싶지만 이 정도는 괜찮을 거 같다. 균일하게 1미리 두께로 하고 싶은데 그건 쉽지 않고 강도도 걱정된다. 키캡 표면 두께는 2.5미리이다.

스템홀 중앙 정렬하고 서포트 아래는 폭10으로, 위는 2로 하고 본체와는 0.6미리, 스템기둥과는 0.4미리 띄웠다. 전면에는 13*15*2 타원 기둥을 0.5미리 묻히도록 하고 글자는 2미리 두께에 키캡 표면에서 1미리 묻히게 했다. 곡면이 0.5 먼저 깍이니 각인 두께도 0.5 정도 된다. 글자 크기는 8*5로 하되 상황에 따라 조정한다.

 

첫 출력은 서포트만 남고 본체가 안착 실패하여 개박살났다. 3미리 안착면이 좁기도 하고 오버행도 심해 제대로 나오기 어려울 거 같다. 두번째 출력은 헤어젤 발라 잘 나왔으며 스위치 몸체에 닿지 않아 대충 성공이다. 그러나 대량 생산이 어려울 거 같다.

왼쪽은 안착면 4미리로 좁히고 오른쪽은 경사면을 4미리로 하여 비대칭으로 만든다. 출력물이라 어쩔 수 없다. 앞면은 표면을 1미리 줄여 경사를 더 줬는데 이러면 스위치가 역방향일 때 몸체에 앞면이 살짝 닿는다. 스템 중앙 정렬 포기하고 0.5미리 뒤로 이동한다. 스위치 전체로는 중앙이 아니지만 표면만으로 보면 대충 중앙이다. 그리고 글자가 너무 커 손가락에 걸리적거릴 듯 해 6*4로 줄인다.

세번째는 역방향일 때는 걸리지 않는데 정방향일 때는 뒷면이 걸린다. 사실 쿼티의 키캡이 18미리여서 여백이 있는데 비해 16미리로는 사방으로 다 여유를 주기 어렵다. 높이를 16.5로 높이고 스템은 0.5미리 원위치한다. 이렇게 해도 어차피 중앙은 아니다. 안쪽 구멍의 쐐기 길이를 조정하여 두께를 1미리 균일하게 맞춤으로써 안쪽면을 약간 넓혔다. 또 정면 아랫쪽을 0.3미리 깍아 길이는 16.2에 맞춘다. 25.1호와 같은 길이이다.

네번째는 성공적으로 잘 나왔다. 비대칭인게 조금 걸리긴 하지만 어쩔 수 없다. 3으로 뽑으니 수축이 좀 있었는지 16.2여야할 높이가 15.9로 측정된다. 이제 단체로 찍어 보자. 플레이트가 남색이라 파랑은 쓸 수 없고 노랑으로 일단 찍어 보기로 한다. 가이더는 연노랑으로 한 셋트 숫자를 찍어 보자. 25.1호에 먼저 한줄만 끼워 봤다.

 

확실히 세로결이 손가락에 부담이 없고 손끝에 닿는 느낌이 좋다. 비대칭 모양은 예상외로 눈에 그리 거슬리지 않아 이대로 해도 될 거 같다. 키캡을 전부 다 새로 찍을 필요는 없을 거 같고 문자, 숫자와 커서 이동키 정도만 바꾸고 나머지는 25.1호껄 쓰기로 한다. 필요할 때 만들어야지 미리 다 만들 필요는 없다.

오늘 가이더2를 팔아 치웠다. 키캡 뽑는건 가이더가 딱 맞긴 하지만 시끄럽기도 하고 부피가 커 더 유지하기 어렵다. 어드벤처30.3 노즐로 찍으니 아쉬운대로 키캡 품질이 잘 나오고 어드벤처4도 있어 프린터를 정리해도 될 거 같았다.

630: Esc, PgUp의 키캡이 쪼개져 흔들거리며 키감이 좋지 않다. 딴 키캡보다 스템 기둥이 6미리로 높은데다 스템이 결방향이다 보니 잘 쪼개진다. 스위치를 2미리 높이고 키캡 높이는 다른 것과 같게 만들까 하다가 플레이트를 손대는 것보다는 구멍만 6미리에서 4미리로 낮추면 될 거 같아 두 키만 새로 뽑았다. 대충 잘 맞아 들어가는 거 같은데 25호 키캡만 수정했고 25.2는 아직 만들지 않았다. 다음에 이 두 키캡을 만들 때는 깊이를 4미리로 만들도록 해야겠다.

스위치 배치, 배선 이전

아직도 스위치는 계속 구입해서 테스트하고 있는데 거의 다 사 봤다. 어차피 소켓에 끼워서 쓰고 차후 회수 가능하니 굳이 돈 너무 아끼려고 하지 말고 필요할 때 그냥 쓰자. 25.1호의 스위치는 그대로 두고 25.2호는 다음과 같이 스위치를 배치했다.

 

문자 전체 : 딸기와인 - 제일 비싸지만 품질이 좋다.

숫자 : 박하레몬 - 새로 샀는데 키압이 가볍다.

엄지 3: 바다소금

엄지 아래 2 : 네온 - 비싼데 바닥치는 소리가 경쾌하다.

조합 : 바깥쪽 4개는 런던포그, 안쪽 2개는 블라썸 리니어

펑션 : 25.1호 그대로 사용하므로 팬텀

편집 : 오른쪽 커서 이동키는 딸기 밀크쉐이크, 왼쪽은 크리스탈 블라썸

 

9종이다. 이렇게 쓰다가 다음에 회수하고 다른 싼 걸로 끼워 넣으면 되고 중간에라도 키감이 마음에 안들면 바꿔칠 수도 있다. 지금까지 써 본 바로는 딸기와인이 가장 좋고 바다소금,모래시계,박하레몬,블라썸 리니어가 가성비가 좋다.

양쪽 플레이트가 무사히 완성되어 스위치와 키캡을 끼우고 배선 이전했다. 저렴한 필라멘트라 품질이 그리 썩 좋지는 않고 키홀도 약간 작게 나왔지만 큰 문제는 없다. 배선을 옮기는 과정에서 납땜이 떨어지거나 조정하지는 않았지만 몇가지 이상이 있었다. 1, 2행이 또 합선되었는데 이번에는 본체쪽이다. 피치를 조정하다 보니 이 두 행이 잘 붙는다. 다음 납땜할 때는 이 두 행을 멀찍이 띄워놔야겠다.

하판 고정 돌기는 잘 만들어졌는데 펑션 접합부가 세로로 서는 바람에 하판이 불룩해져 억지로 눕혀서 조립했다. 접합부를 가급적 작은걸로 써야 하며 8핀 딱 맞는걸로 쓰면 좋은데 아직도 그런걸 찾지 못했다. 벽면에 소켓이 닿아 안 들어가는 곳이 두 군데 정도 있었는데 칼질해서 집어 넣었다. 너무 작은거에 집착하지 말고 시제품은 여유있게 만들어야겠다.

배선 이전에는 1시간이 안걸렸지만 스위치, 키캡 끼우고, 범퍼 끼우고 하는것까지 다 해서 대략 1시간 반 정도 걸렸다. 이 정도면 납땜을 다시 하는 것에 비해서는 월등히 시간이 절약되지만 그래도 꽤 시간이 걸린 셈이다. 배포용은 소켓이 종종 빠져 소켓을 쓰기 어렵지만 테스트용은 가급적 소켓으로 만들어야겠다.

파란 바탕에 노란색이 약간 유치한 감이 있지만 나름 독특해 보이기는 한다. 딸기와인의 키감이 훌륭하고 키캡도 보들보들해서 편하다. 방향키는 아직 결이 수직인데 좀 써 보고 수평으로 바꾸든가 해야겠다. 25호는 여기까지 해서 완성하며 더 만들지 않는다.

 

625: 문자는 박하레몬으로, 숫자는 비썬로로 바꾸었다. 딸기와인의 소리에 비해 둥글둥글한 소리가 나 덜 명랑하지만 키감은 좋으며 압이 조금 더 낮은데 그건 잘 실감이 나지 않는다. 비썬로는 550원짜리 비싼 스위치라 테스트 목적으로 끼워 봤는데 별다른 특징이 없고 무난하며 조용하다. 메인으로 써도 될만큼 품질은 괜찮은 거 같으며 차후 오픈 테스트용으로 사용해도 부족하지 않을 품질이다.

한손자판

설계

25호를 만들기 전에 한손 자판에 대한 배열을 대충이나마 설계할 필요가 있다. 이왕이면 확정까지 하면 좋지만 현재 구조로 한손 자판이 가능한지를 확인하는게 시급하다. 730타 치는 장애인 동영상(https://www.youtube.com/watch?v=YS6U3fdL0r4)이 꽤 인상적이었는데 이런 분들을 위해서라도 한손 자판은 꼭 만들어야 한다.

일단 전에 하던 작업의 상황부터 파악하여 연구 성과를 계승한다. 21년에는 연구한 바가 없고 221월말에 잠시 초안만 만들어 두었다. 그 전에는 2007년도에 끄적거려 본 정도여서 지금이 거의 첫 설계인 셈이다. 기록을 보니 한손을 위해 Esc를 문자영역 밖으로 뺐는데 이건 잘 한거 같고 엄지에 조합키를 배치한 것과 sp, enter, lang2행에 배치한 것도 괜찮은 작전이다.

문자키가 부족하므로 upper의 도입은 불가피한 선택이며 문자 영역에 두었다. 접근성을 위해 0행의 안밖키를 빼고 18개만 문자키로 사용했다. 한글은 18키로도 딱 맞고 영문은 upper8글자를 올린다. 숫자, 기호는 num 모드의 shift, upper에 나누어 넣었다. 당시의 초안 배치는 대충 글자만 갖다 놓았지 효율을 따져 가며 정밀하게 배치한 것은 아니다.

작년 1월의 키배치와 현재의 키배치가 달라 당시의 초안은 참고가 될 뿐 이대로 만들 수 없다. 지금은 완전한 좌우 동형이며 한손 자판의 좌우는 완전한 대칭이어야 하므로 한쪽의 41키 기능을 다 정의해야 한다. , 펑션키는 왼쪽에만 붙어 있고 문자 입력과 직접적인 연관이 없다. 작년 초안에서 다음 사항을 먼저 결정해야 한다.

 

- Upper가 필요한건 분명한데 이게 문자 영역에 있어야 할지, 아니면 엄지의 Edit 자리에 있어야 할지 애매하다. 조합이라는 면에서는 엄지이지만 Shift와 동시에 조합하기는 어려워 Once 방식으로 동작해야 한다. 오토마타까지 완성해 봐야 결정할 수 있다. 이름도 직관적인 걸로 바꾸고 싶은데 당장 마땅히 떠오르는게 없다. Second, Hidden 등도 가능하겠고 아니면 ★이나 ▲같은 기호도 괜찮을 듯 하다.

- 0행 안밖 2키를 미사용으로 해야 할지 아니면 포함시켜야 할지 애매하다. 키가 적으니 빈도가 떨어지는 문자라도 넣어야 맞기도 하고, 장애인용이니 접근성이 너무 떨어지면 빼 버리는게 나을 수도 있다. 이 두 키가 빠지면 Upper의 문자가 더 많아지는 단점이 있어 일단 포함하고 설계해 보되 접근성을 최하위로 잡는다. 모서리 노말보다는 중간 Shift의 접근성이 더 좋다.

- 문자보다 구두점의 빈도가 더 높다. 적어도 마침표와 쉼표는 문자 영역에 들어가야 모드 변환없이 문장을 편리하게 입력할 수 있다. 그러나 기호 때문에 문자 영역이 좁아지는 부작용이 있어 일단은 Num 레이어에 넣기로 한다. 일부 문자를 Upper에 넣는 비용과 마침표, 쉼표를 위해 Num 레이어로 전환하는 비용의 대소를 잘 따져야 한다. 레이어별 분리라는 면에서 빼는 것도 괜찮다.

 

고정키부터 자리를 확정해 보자. 매크로 두 개는 Copy, Paste로 디폴트 설정하고 조합키는 좌우에 4개 배치한다. 두손 자판의 왼쪽과 오른쪽에서 필수적인 키를 적당히 조합했다. esc, caps는 재정의 가능한 매크로키이며 아래쪽 편집키 6개도 재정의 가능하도록 한다. 레이어 전환이 잦다 보니 재정의 가능한 키가 최대한 많아야 한다. 조합키, 엄지 등 7개는 기능 고정이며 변경할 수 없다. num,edit를 교환하거나 ctrl, caps를 바꾸고 싶은 사람도 있을 법한데 이런 걸 다 허용하면 경험이 파편화되어 바람직하지 않다.

41키중 하단 매크로 2개와 편집키는 옵션이며 필수는 아니어서 최소 33키로 한손 자판을 구성할 수 있다. 만약 한손을 위해 별도의 키가 더 필요하다면 추가할 의향도 있는데 이걸 알아 보기 위해 지금 한손 자판을 점검하는 것이다. 당장은 이 구조로도 한손 구현에 큰 무리는 없어 보인다.

배치도는 오른손 기준이며 왼손은 대칭이다. 좌우 손가락이 일치하니 한손만 익숙하면 반대쪽도 적응하기 쉬울걸로 기대된다. , 왼손 집게 위치의 문자가 오른손 집게에도 있어야 한다. 좌우손이 바라보고 있으니 자판도 대칭이어야 하나 만들다 보니 예외가 있다.

 

- 편집키 : 방향이 있어 항상 좌에서 우로여야 한다. 대칭이 아니라 평행이동이다.

- 펑션키 : 1~12까지 좌에서 우로 가는게 자연스럽다. 꼭 그래야 하는건 아니다. 숫자는 굳이 그럴 필요 없다.

- Copy, Paste : 먼저 복사해야 붙여 넣으므로 좌에서 우로이다. 이점은 Undo, Redo도 마찬가지였다.

 

영문 한글은 다음과 같이 배치한다. 영문은 노말 자리에 가급적 많은 문자를 배치하기 위해 모서리키를 다 사용하고 집안열 6개의 키에 해당하는 글자만 이중 배치했다. 한글은 18키면 모든 글자를 다 배치할 수 있어 0행 모서리 두 키는 사용하지 않는다. Shift+=ㄲ이고 Upper+=ㅋ으로 처리한다. 3키 입력예는 없다.

빈도에 비해 enter의 위치가 외진데 sp 아래나 han 아래로 옮기는 것도 괜찮아 보인다. 한글은 좌자우모이되 상자하모도 시도해볼만하다. 지금은 글자가 다 들어가는데까지만 설계하고 결국 실제 만들어 보고 써 봐야 배치를 조정할 수 있다. 필요하다면 통계도 돌려 볼 계획이다.

영문에서 ShiftUpper가 동시에 필요한 상황, 예를 들어 K를 입력할 때 문제가 있는데 upper의 동작 방식에 따라 달라진다.

 

고정키 : Shift를 홀드 하고 up,k를 차례 대로 누른다.

비고정키 : Shift+Upper+K3키를 동시에 눌러야 한다.

 

한손 자판에 3키 동시 입력은 바람직하지 않아 upper는 고정키 방식으로 동작할 수밖에 없다. 이러면 KKKK를 입력할 때 불편해지는데 caps 상태로 입력하는 게 좋겠다. 그렇다고 Upper를 엄지에 두더라도 3키 입력인건 마찬가지라 고정키로 쓰는 수밖에 없을 듯 하다.

일본어, 유럽어에 대해서는 아직 고려하지 않았는데 모든 문자가 이 24키 안에서 입력되어야 하는 건 동일하다. sp, han, enter는 공통이고 upper는 필요 없을 수도 있고 하나 더 필요할 수도 있다. 숫자와 편집은 다음과 같이 배치한다.

모든 키를 다 쓸 수 있어 키가 남는다. 24개 키에 42개의 문자를 배치하니 6개의 키는 Shift가 필요없다. a = b + c;을 입력하려면 영문 상태에서 num을 눌러 기호 하나씩 입력하면 된다. 기호를 연속 입력할 때는 num락 상태로 들어간다.

대량의 숫자 입력시에 Enter를 누를 수 없어 불편한 면이 있고 공백이나 BS도 아쉽다. 원칙적으로는 언어 레이어로 돌아와야 하지만 비효율적이다. 이럴 때 쓰라고 만들어 놓은게 매크로이다. Caps와 엄지 아래 두 키를 잘 활용하는 수밖에 없다.

편집은 이동키와 그외 생략된 키를 모두 배치했다. esc, caps키를 매크로로 등록해 다른 용도로 쓸 수 있어 편집에도 중복되어 있다. pgup, pgdn이 손이 좀 꼬이는 감이 있어 새끼 손가락으로 옮기는 것도 괜찮을 듯 한데 두손과 일치시키는게 나아 보인다. Tab을 초안에서 빼먹어 두손과 같은 위치에 추가했다. 다음은 Fn 레이어이다.

자리가 남아 펑션, 멀티미디어 등의 키까지 다 집어 넣었는데 두손 자판으로 빠져 나가는 키도 넣었다. 두손의 왼쪽 같은 위치(쿼티T)에는 한손으로 전환하는 키를 넣으면 된다.다만 Fn키의 위치가 달라 반복적인 토글은 안되며 그럴 필요도 없다.

여기까지가 초안이되 이것도 몇번 수정을 거쳐 만든 것이다. 이게 적합한지는 구현을 해 봐야 하는데 두손과 한손은 아예 다른 모드로 구분하는 것이 구현하기 편하다. 예전에는 자판을 바꾸는 식으로 구현했었는데 지금은 상황이 다르다. 두손은 차맷을 선택할 수 있지만 한손은 차맷이 고정이라 통합하기 어려울 거 같다. 공유할 수 있는 기능도 있겠지만 당장은 분리하는게 구현하기 쉬울 걸로 생각된다.

자판 분리

한손을 전에 어떻게 구현했는지 이력을 뒤져 보니 놀랍게도 078월에 잠시 구현해 본게 다이다. 15년전 춘천 살 때인 2012년에 아너림을 개발할 때 아예 한손을 지워 놓고 개발했으며 21년 소젯을 개발할 때도 마찬가지였다. 대략 보름 정도 테스트해 본게 다이며 실행 파일은 남아 있다. 070910이 마지막 버전이다.

그럭저럭 동작은 하는데 쳐보니 쉽지는 않지만 적어도 두손 왔다 하는 것보다는 나은 거 같다. 키 개수를 과도하게 줄여 기호는 더블어퍼로 입력해야 하니 과히 쉽지 않다. 16키로는 도저히 편의성을 확보할 수 없으며 지금은 무려 두 배나 되는 키를 사용하니 3키 입력은 최소화할 수 있다.

소스를 보니 sKeyMap구조체안에 키 하나에 대한 입력 정보가 있고 이걸 배열로 가지는 sKeyboard 구조체로 키보드 하나를 표현한다. 그런 키보드를 배열로 선언하여 두손, 한손, 한칸씩 올린 두손, 31, 25, 16키 등 여러 키보드를 정의하고 정수 첨자 하나로 현재 키보드를 선택하여 적용한다. 한 구조체안에 한손, 두손 정보를 다 넣어 일반화하며 한쪽 키보드에는 안쓰는 정보도 포함되어 있다.

이 구조가 나쁜건 아닌데 한손과 두손이 차이가 많아 소젯은 자료구조와 흐름을 완전히 분리하기로 한다. oneHand 변수로 자판에 따라 분기하며 자료 구조도 sOneHandKey, sOneHandKeyboard로 따로 작성한다. 좌우 대칭이라 양쪽의 vk를 같이 가져야 하며 upper 모드의 문자를 따로 기록해야 한다. 일단 자판 종류에 따라 분리해 보고 차후 가능하면 합치는 시도를 해 보자.

520일 하루 종일 코딩해서 일단 영문만 겨우 입력되도록 했다. 현재 구조가 한손을 전혀 고려치 않고 만든 것이어서 두 종류의 자판을 동시에 지원하려면 고칠게 많고 두손 자체에도 이미 논리적인 문제가 있었다. 하나씩 뜯어 고치고 있는데 주요 수정 사항만 간략히 정리해 둔다.

 

- kdb 변수 삭제 : 원래 계획은 키보드 구조체 여러 개를 바꿔 가며 쓰기 위한 포인터였는데 현재는 duson만 가리킨다. 두손은 하위 개념인 차맷을 바꿔 가며 쓰도록 되어 있어 kbd는 불필요하다. 흐름에 따라 hanson, duson을 참조한다.

- 실행중에도 디버그 버전을 테스트할 수 있도록 디버그의 뮤텍스 이름을 다르게 주었다. 소젯을 실행해 놓은 상태에서도 한손을 테스트할 수 있어 나름 편리다. 둘 다 후킹중이어도 동작하는데 어떻게 된건지 잘 모르겠다.

- 한손과 두손의 매크로는 별개이며 공유하지 않는다. 한손의 Copy에 다른 기능을 등록해도 두손이 영향을 받을 필요는 없다. 한손 매크로는 따로 저장하고 따로 실행해야 한다.

- OnKeyHook에서 가상키를 조작할 때부터 흐름이 갈린다. 함수 호출 구조는 그대로 유지하되 공유할 코드도 많아 필요할 때 자판에 따라 분기하는 구조로 만든다. 꼭 필요하면 함수를 따로 만들되 가급적 합치고 안에서 분기한다.

 - 누름 상태를 저장하는 arKeyState의 첨자가 두손은 vk이지만 한손은 순서값이어야 한다. 양쪽에 같은 키가 두 개 있어 좌우 구분이 중요치 않고 둘 다 같은 상태로 취급해야 하니 순서값을 첨자로 쓰는게 옮다.

- 눌러진 키 판별을 위해 지금까지 kidx 순서값을 사용했는데 이건 두손 자판 기준이라 한손과는 맞지 않다. 함수나 자료구조에서 참조하는 순서값이 정확히 뭔지 명칭을 정리할 필요가 있다. 한손은 hx, 두손은 dx로 순서값을 칭하고 경우에 따라 둘 다 가능한 경우는 hdx로 칭한다. 이렇게 바꿨더니 덜 헷갈린다.

- 자판의 순서값을 K_ 열거형으로 정의해 두었는데 한손은 OH_ 열거형으로 정의했다. 이랬더니 이름이 불일치해 엄청 불편하여 K_BH_로 모두 바꾸어 통일 시켰다. OH_CTRLBH_CTRL은 논리적으로 같은 키를 가리키지만 실제값은 다르며 매핑된 키도 다르다. 이 둘을 통합하는 중간값도 정의했다.

- 한손은 SpaceShift인데 이 처리가 골때린다. 공백을 Shift로 바꿔 누르면 둘 다 눌러진 셈이라 키보드 종류3에서는 한영 전환이 일어나 막아야 하는데 이 논리가 무척 복잡하다. 후킹이 엄청나게 정교해야 하며 정밀한 테스트가 필요하다.

 

한손 키맵을 정의하고 영문부터 입력 받았다. 알파벳을 구하는 맵이 다르고 shift 뿐만 아니라 upper도 참조한다는 정도가 다를 뿐 논리상의 큰 차이는 없다. 공백, 개행은 ProcessKey에서 직접 처리했다. OnPaint에서 키보드를 그리는 코드가 복잡해 손이 많이 갔다. 한글도 현재 언어만 바꿔 주고 자모를 구하는 맵만 잘 선택하면 기존의 오타마타를 바로 사용할 수 있어 예상외로 쉽게 구현했다.

이어서 숫자, 편집, Fn을 차례대로 구현하고 오토 리피트 속성을 부여했다. 두손 자판의 장치가 잘 만들어져 있어 별 어려움이 없다. 한손/두손 자판을 전환하는 Fn 단축키를 정의하여 실행중에 변경 가능하며 최후 사용 자판을 INI 파일에 저장한다.

521일 일요일 새벽 편집, 조합키, 매크로를 모두 처리했다. 조합키는 훅킹에서 키를 바꿔 넣어야 하며 편집키는 매크로를 통해 구현한다. 매크로는 각각 따로 저장하고 대상키도 달라 한손, 두손의 차이가 많지만 명령문을 구하는 과정만 다를 뿐 파싱부터는 같아 그래도 통합이 가능했다.

두손의 매크로 루틴이 잘 짜여져 있어 편집도 무리없이 구현했는데 Shift+이동시 블록이 잡히지 않고 Shift가 풀어지는 문제가 있다. 로그 찍어가며 한참 디버깅해 보니 두손을 만들 때 이미 겪었던 문제이며 해결하는 코드가 두손에 이미 있다. 이 코드를 훅킹 선두로 빼니 문제가 해결되었다. 내 코드에 대한 기억력이 좋아야 헛수고를 안하게 된다.

여기까지 한손 자판에 대한 초안 개발을 완료했다. 기본 입력만 가능할 뿐이지만 사용해 보니 한손으로 그럭저럭 쓸만하다. 더 필요한 키는 없는거 같은데 만약 있다면 두손 자판에 영향을 주지 말고 별도로 한손 자판용 키보드를 따로 만들어야겠다. 여기까지 해 두고 25호 만든 후에 계속 수정하기로 한다.

소스 정리

위 내용은 25호를 만들기 전 5월말에 작성한 것이며 한손에 대한 초기 구현을 완료한 것이다. 25.2호까지 만든 후 26호를 만들기 전에 배치와 프로그램 수정까지 확정하기 위해 주제별로 모으기 위해 이 위치로 이동시켰다.

619: 저번주에 노브, 블루투스 등을 연구해 봤으니 26호를 만들기 위한 하드웨어 준비는 대충 되었다. 지금이라도 당장 26호를 만들 수 있지만 이번에는 한손 자판까지 완성해 넣기로 한다. 이건 소프트웨어 작업이 많다. 버전은 아직 1.35이다.

 

▶ 당분간 두손과 한손을 왔다 갔다 해야 하는데 단축키가 마련되어 있지만 양쪽 단축키가 일치하지 않아 어렵고 비효율적이다. 상시적으로 사용하는 명령이 아니라 단독 단축키를 할당할만하지도 않다. 툴바에 자판을 선택하는 버튼을 배치하고 토글하는게 더 낫다. 끝에서 세 번째에 한손 버튼을 배치하고 이걸로 토글한다.

이미지는 WingDing2에서 가져 왔는데 손 모양이 별로 예쁘지는 않다. 테스트중에 이걸로 토글하자.

▶ 현재 키보드는 다음 구조체로 표현한다. 이름과 sKey의 배열로 구성되는데 키보드 이름은 딱히 필요한 정보가 아니다.

 

struct sKeyboard

{

     char name[64];             // 키보드의 이름

     sKey Map[128];             // 키맵 배열

};

 

맵이 구조체 안에 갖혀 있다 보니 참조할 때 매번 duson.Map[dx].vk 식으로 참조해야 하는데 아예 dusonsKey의 배열로 선언해 버리면 소스가 간단해진다. hanson도 마찬가지이다. 소스상의 .Map를 모두 없애 버리되 단 차맷에는 여러 정보가 필요해 아직 Map이 남아 있다.

upper키의 명칭이 아무래도 불합리하다. 영어로 대문자라는 뜻이 있어 오해할 소지가 있고 숨어 있는 문자가 더 위에 있는 것도 아니다. 적당한 이름을 찾아야 하는데 참 마땅한게 없다. 다음은 후보군이다.

 

- second : 두 번째 문자라는 뜻이다.

- hidden : 숨어 있는 문자

- ★▲ : 기호로 표시. 확 달라는 보이는데 부르기 애매함.

- alt, another, aux : 대체, 또 다른 문자

- switch : 잠시 바꾼다는 뜻

- pop : 숨어 있다 불쑥 나타난다는 뜻

- sub : 대체하다는 뜻. substitute

- inner, internal : 내부에 있는 문자

- swap : 교체하다. 일시적이기보다는 영구적이라 부적합

- under, below, behind : 아래에, 속에 숨어 있는

- 땜빵 : 한글로도 붙일 수 있는데 대신한다는 뜻

- : 한글 쎈소리가 들어 있다. 다른 언어에는 맞지 않다.

 

이 중  Pop를 선택했으며 숨어 있던 문자가 나타난다는 뜻이다. 한 음절로 발음이 짧고 철자 3자라 번잡하지도 않다. 다른 후보에 비해 어감이 귀여워서 선택했다.

▶ 생각해 보니 한글은 굳이 Pop키가 필요치 않다. 위에 2개 키가 남아 있어 쎈소리도 두 자 넣을 수 있고 다른 음소의 Shift 자리에 쎈소리를 넣어도 된다. 두손도 ㄷ 밑의 ㅇ 자리에 ㅌ을 넣고 ㄱ 밑의 ㄹ에 ㅋ을 넣어 놨는데 이런 방식으로 하면 한글 음소는 Pop 키가 없어도 되며 그게 더 낫다. 다만 쎈소리의 위치가 직관적으로 이해할 수 있는 자리이면 된다. 영문은 대소문자 구분이 있어 Shift 자리에 다른 문자를 넣을 수 없다.

Pop 키를 쓰건 Shift를 쓰건 음소의 배치는 언어에 따라 선택한다. lang, sp, enter는 고정해 두고 나머지 21개의 키로 각 언어에 따라 문자를 구겨 넣기만 하면 된다.

장애인용 키보드

한손 키보드는 장애인용으로 만드는건데 정작 장애인에 대한 연구는 해 본 바가 없다. 국내에 왼손, 오른손 장애인이 얼마나 되는지도 모르고 그 사람들은 키보드를 뭘 쓰는지도 알아본 바가 없어 조사해 봤다. 기존 제품이 있기는 있다.

 

https://www.ablelife.co.kr/shop/shopdetail.html?branduid=361&xcode=013&mcode=003&scode=&type=Y&sort=manual&cur_code=013003&GfDT=bml6W1w%3D

 

이름은 MALTRON인데 어디서 만든건지는 모르겠고 가격은 한쪽에 83만원이다. 조합키 고정 기능이 있고 LED로 고정 여부를 알려 준다. 별도의 디바이스 드라이버는 필요 없는 듯 하다. 원래 영문 자판인데 한글 키캡도 제공하며 일부 시스템에서 한영 전환에 문제가 있다. 대충 세 보니 한쪽에 114키인데 장애인용이 키가 이렇게 많아서야 어떻게 쓰나 싶다. 사진이 흐릿해 키 배치는 잘 보이지 않는다.

지피전자에서 2009년에 만든 한손 키보드도 있는데 차라리 이게 아이디어는 더 괜찮은 거 같다. 전에도 본적 있는데 그때 느낌으로는 괜찮았던 거 같다. 지금은 판매하지 않으며 가격도 문의하라고 되어 있는걸로 봐서 판매량이 극히 미미한 듯 하다. 하긴 단독 제품으로 나와서는 충분한 수요가 없다.

우리나라 장애인은 265만명이며 5.2% 비율이다. 중증이 98만 정도니 50명중에 한명 정도다. 지체가 44%로 가장 많고 청각, 시각 순,, 지적 순인데 지역, 성별, 나이 순으로 상세하게 나와 있지만 오른손 없는, 왼손 없는 기준으로는 되어 있지 않다. 심한 지체가 22만명이라고 하는데 이 중에 팔이 불편한 사람은 많이 잡아아 5만이 안되겠고 적게 잡으면 만명 정도 있다고 보면 되겠다.

64세 이후의 거동 불편자는 자연스러운 노화로 보고 장애로 분류하지 않는다. 국가 예산상 그럴 필요까지는 없다고 한다. 대상 장애인 수를 대충이라도 가늠하기 어렵다. 그런데 꼭 장애인 아니라도 터널 증후군 등으로 일시적으로 한손을 못 쓰는 사람도 있고 마우스와 함께 쓸 때는 일시적으로 한손이 되는 경우도 있어 만들어 두면 쓸 데는 많을 거 같다.

이 자료를 조사하다가 키보드 관련 여러 용어를 같이 조사해 봤다. 도터 보드는 마더 보드의 반대말로 USB 컨넥터만 따로 분리한 보드이다. 이걸 검색하다가 dcinside에서 잘 작성된 키보드 강좌를 만났다.

 

https://gall.dcinside.com/mgallery/board/view/?id=mechanicalkeyboard&no=1208615

 

23편으로 되어 있는데 하나 하나 정성스럽게 잘 썼으며 그동안 몰랐거나 궁금해 했던 내용도 알게 되었다. 다 읽는데 오후 내도록 시간을 할애했는데 한번 더 읽어볼만큼 내용이 괜찮다. 글이 거의 분당 하나씩 올라올 정도로 활성화되어 좋은데 반말 모드라 적응하기가 좀 어렵다. 일단 회원 가입해 두었고 분위기나 좀 파악해 봐야겠다.

영문 통계 작성

영문은 여러 조건을 동시에 점검해야 하므로 수작업으로 배치하기는 어렵고 통계를 내야 한다. 2행의 E, T, Pop은 아예 자리를 고정해 버리고 Pop 문자 6개도 두손과 같은 위치에 맞춘다. 그러면 18개의 알파벳을 어디에 놓을 것인가를 결정하는 문제가 된다.

18! = 6400조개이며 ET까지 순회에 포함하면 20! = 243경이다. 두손은 11해중 23조개를 채점하는데 dist546일이 걸렸는데 6400조를 순회하는 정도라면 일주일 안에 끝날 듯 하니 그냥 돌려 보자. 그만큼은 돌린 후 결정해야 근거도 내세울 수 있고 신뢰성도 확보할 수 있다. 통계를 돌리려면 각 위치별로 부담도와 순서를 정해야 한다.

방식은 두손일 때와 비슷하다. 가장 좋은 홈 포지션이 10이고 멀어질수록 부담도가 증가한다. 집안새밖열은 두칸 위의 0행보다 부담도가 높다. 정밀한 측정보다는 상대적인 부담의 정도를 대충 수치화 했다. 알파벳 빈도는 두손에서와 같은 통계를 사용한다.

 

etaonishrdlumcwygfpbvkjxqz

 

앞의 두 문자, 뒤의 여섯 문자는 통계 대상이 아니며 자리는 고정한 채 항목을 측정하는데만 사용한다. 통계 평가 항목중 좌우비율, 손연타율은 의미가 없고 다음 항목을 평가한다. 초안 구현으로 dist4 ET 포함 598억개 중 베스트 만개를 뽑아 통계 분포를 보고 조정한 것이다.

 

- 부담도 : 낮을수록 좋지만 한손은 어차피 힘들므로 두손에 비해 비중을 낮춘다. 택도 아닌 곳에만 배치하지 않으면 되는데 어차피 빈도순에서 많이 멀어지지 않아 변별력이 떨어진다. 19.7738 ~ 19.8922까지 분포하니 19.7을 만점으로 50배 곱한다. 3.69 ~ 9.61점까지 감점 범위가 걸치니 최고 6점 정도 차이난다.

- 손가락 비율 : 균등하게 분배하되 새끼는 조금 덜 치는게 좋다. 33:25:24:18을 만점으로 하고 +-1을 초과하면 제곱으로 감점하여 멀어질수록 많이 감점한다. 1 이하의 제곱은 오히려 값이 작아지므로 0으로 치고 손가락당 2이상 초과해야 4점 이상 감점되고 비율이 3만큼 멀어지면 9점 감점이다. 집게와 새끼에 공백, Pop, Ent 등이 있어 비율을 많이 낮출 수 없다. 샘플상 앞부분은 만점도 꽤 있고 최고 감점은 35:22:23:185.48점인데 집게에 비해 중지가 일을 좀 덜한다.

- 행 비율 : 0행에 너무 쏠리지만 않으면 된다. 2행은 고정되어 있으니 1, 3행에 골고루 분산되어야 한다. 12:24:40:24 비율에서 +-1 초과시 제곱 감점한다. 샘플은 대부분 만점이며 최고 감점은 14:24:39:213.78이다. 0행 비율이 높고 3행 비율이 낮다.

- 손가락 연타 : 낮을수록 좋되 2연타는 흔하게 발생할 듯 하다. 이걸 최소화하는게 통계의 주목적이다. dist315~18에 분포하는데 dist4에서는 12.47%~14.44% 범위에 분포하여 샘플이 커지면 연타율이 낮은 배치가 나온다. 12를 만점으로 5배수 곱해 감점했다. 14%10점 감점이라 비중이 꽤 높다.

- 연철 : 가급적 없어야 하는데 통계를 내 보면 그 좁은 공간에서도 0점 감점이 많고 어쩌다 한 두개 연철이 나온다. dist4에서는 모두 만점이라 10대 연철을 다 피할 수 있는 셈이다. 감점 정도가 너무 작아 두손에 비해 두 배 정도 높였다.  er, th는 개당 5점 감점이라 이 두 개의 연철이 있으면 웬만하면 순위안에 들 수 없다.

 

채점 기준에 따라 결과가 많이 달라질 수 있고 미세한 차이에도 민감하게 반응하기 때문에 잘 정해야 하는데 그게 쉽지 않다. 일단 초안을 이렇게 잡고 통계 돌려 본 후 다시 미세 조정하기로 한다.

통계 프로젝트를 1년반만에 열어 봤는데 정확히 2800줄 단일 소스로 되어 있다. 두손 영문 통계에만 국한되어 있는데 한손 영문, 한손 한글 통계에도 활용할 수 있도록 구조를 바꿔야 한다. 통계 모드를 도입하여 한손 영문 통계도 뽑을 수 있도록 하고 한손 한글도 일단 옵션에 포함했다. 위에 40픽셀이 추가되어 모든 컨트롤과 그래픽을 그만큼 내렸는데 하드 코딩된 부분이 있어 조금 애를 먹었다.

한글 빈도 조사를 두 번째 하면 다운되는 문제가 있어 수정했는데 통계 구조체 배열을 정렬해 버려 두번째부터는 순서가 맞지 않아 발생하는 문제였다. 통계를 한번만 내면 된다고 그랬던 모양인데 1년 후에 내가 보면 왜 그랬는지 알 수 없으니 최소한 죽지는 말아야 한다. 자음, 모음 통계는 기능도 없이 버튼만 있어 제거했다. 한번 통계만 내고 말 프로그램이 아니라 지속적으로 관리해야 하니 좀 신경써서 만들 필요가 있다.

한손과 두손은 채점 기준이 다르고 키 배치도 달라 대부분의 자료 구조가 호환되지 않는다. 문자 정보에 손(Hand)는 필요 없으며 대신 pop키 여부가 달라진다. 문자 정보도 ,.=;'/ 등의 기호가 다 빠지고 sp, enter만 남는다. 기존 자료 구조가 다르니 평가 항목도 다르고 평가 구조체도 다르다. 두손은 sEvaluate 구조체를 쓰지만 한손은 멤버가 달라 sOHEvaluate 구조체를 새로 만들었다.

자료 구조가 다르니 채점하는 함수도 다 달라진다. C++이라면 상속을 통해 코드는 공유할 수 있지만 C에서는 어렵고 가능하다 하더라도 속도 때문에 불리하다. 어쩔 수 없이 함수도 다 새로 한벌 더 만들어야 한다. 채점 함수를 새로 한벌 더 만들되 논리는 똑같고 사용하는 구조체만 조금 다르다.

 

void PreprocessOH();

double EvaluateLayoutOH(sEvaluateOH* pEv);

void PrintLayoutScoreDatailOH(sEvaluateOH* pEv);

int CompareOH(const void* a, const void* b);

 

두손에 비해 자료형이 모두 달라 섞어 쓰지 않도록 주의해야 한다. 논리도 약간씩 빠지고 더 들어가는게 있다. 엄지는 통계에서 완전 제외하므로 Shift 횟수는 고려할 필요 없고 pop 문자는 타수를 두 번으로 쳐야 한다. 작업양은 조금 많지만 흐름은 변화없어 오타만 주의하면 큰 문제는 없다.

스레드 관리 논리도 똑같아 수정할 부분이 없다. 자료형과 호출하는 함수만 다를 뿐이어서 if문으로 모드에 따라 분기만 잘 하면 된다. 순회 함수도 논리는 같되 앞쪽 두 개를 뺄 수 있어 PER_START, PER_END 변수로 순회 범위를 지정하도록 했다. 여기까지 만든 후 테스트해 보니 잘 동작하고 정확한 거 같다.

장시간 통계는 별도의 노트북에서 돌리는게 좋고 그럴려면 결과를 파일로 저장해야 한다. 기존의 저장 코드는 모드에 대한 구분이 없어 버전을 103으로 높이고 mode 변수를 저장하였으며 현재 모드에 따라 arBest 또는 arBestOH를 저장하고 읽어온다. 이전 버전과 호환성은 없어졌지만 두손, 한손 모두 저장할 수 있다.

연타 샘플 비율을 10%로 했더니 가끔 0점으로 계산하고도 다시 순위 안으로 들어오는 경우가 있었다. 비율이 낮아 그런 듯 해 20%로 올렸더니 초반 속도가 조금 굼뜬다. 천만 이상 넘어가면 건너 뛰는게 많을 듯 해 그냥 두기로 한다. 정 속도가 문제가 되면 실행중에도 변경 가능하다. 나머지 유틸리티 코드도 대충 리뷰하여 이상 없음을 확인했다.

통계 시간을 절약하기 위해 ET는 고정했는데 막상 해 보니 예상보다 통계가 빠르다. 두손에 비해 뒤쪽 4개가 아닌 6개를 고정해서 그런데 이 정도 속도라면 ET를 포함해도 될 듯 하다. 실행중에 포함 및 제외하는 옵션을 만들어 두고 순회 시작점을 선택적으로 결정하도록 한다. 이 옵션 선택 여부에 따라 개수는 10배 정도, 시간도 서너배 차이가 난다. ET를 고정하고 dist를 늘리는게 더 낫지 않나 싶다.

통계 튜닝

약 사흘간 통계 코드를 수정했다. 물론 아직 초안이라 미세 튜닝을 더 해야 한다. 각 옵션별로 개수 및 시작, 결과이다. 이 결과를 검토하여 추가 튜닝을 더 진행하고 버그가 있으면 수정하기로 한다.

 

 

ET, TE 고정

ET 포함

dist2

191만개. 3

1042만개 15

dist3

15163만개. 141

14. 439

dist4

41.데탑:2729분초, 노트북:3247

598억 데탑:2h14 노트북:3h07

dist5

570. 3h12

안돌려 봄

dist6

4796. 20h23

10조 일주일 예상

 

dist2는 프로그램 점검용이며 너무 짧아 별 가치는 없다. dist3도 시간이 오래 걸리지 않아 점검용으로 적당하다. ET 고정, 포함 둘 다 결과는 같게 나온다. ET의 자리가 바뀌지 않으면 같을 수밖에 없다.

 

8482,9134     etosainrdhculgwmfpybvkjxqz 감점23.03 19.77(3.33)  손가락35:24:22:18(2.2) 24:39:23(0.0) 지연15%(17.5) 연철0.0

 

10대 연철 하나도 포함되지 않았고 행 비율도 만점이며 손가락 비율은 집게에 약간 몰렸지만 감점이 높지는 않다. 많이 섞지 않다 보니 손가락 연타율이 꽤 높게 나오는데 dist가 증가하면 이 값은 감소한다. 모음이 중지에 다 몰려 있어 크게 나쁘지는 않다. U0행인 건 조금 아쉬운데 N이랑 자리를 바꾸면 좋겠다.

dist4는 데탑과 노트북에서 각각 돌려 보았다. 노트북의 4800H보다 데탑의 5600G가 약간 더 빠르다. 결과는 물론 같다. 데탑은 작업에 써야 하니 장시간 작업을 돌릴 수 없어 1시간이 넘어가는 건 가급적 노트북으로 돌리기로 한다.

 

ET 고정 : 17,7004,4659        etosainrdhculwgmfpybvkjxqz 감점23.03 19.77(3.33)  손가락35:24:22:18(2.2) 24:39:23(0.0) 지연15%(17.5) 연철0.0

ET 포함 : 176,1713,3924      teosnraidhclugwmfpybvkjxqz 감점17.06 19.77(3.69)  손가락35:22:23:18(4.7) 24:39:23(0.0) 지연13%(8.7) 연철0.0

 

 

ET 고정 상태에서는 dist3에 비해 gw의 위치만 바뀌었고 나머지는 똑같다. dist31등은 dist44등에 있어 거의 비슷할 뿐만 아니라 감점이 소수점 4자리까지 동점이다. 사실 이 배열도 dist3에는 있었는데 정렬이 안정적이지 않아 1등을 못했다. 결국 dist4 ET 고정 옵션은 dist3와 다를게 없다.

ET를 포함해서 돌리면 ET 순서가 TE로 바뀌는데 잘 보면 2열과 3열이 통째로 바뀌었고 그 외에는 gw만 바뀌었다. 중지:약지 비율이 25:24로 중지가 더 높아 24:22보다 22:24의 감점이 더 높다. 반면 연타율이 2%나 줄었는데 이건 잘 이해가 안된다. 문자가 수직으로만 이동했고 수평으로 이동한 예가 없는데 어째서 손가락 연타율에 차이가 발생할 수 있다는 말인지, 뭔가 논리에 문제가 있는 듯 하다.

디버깅해 보니 believe 단어에서 문제가 발생했다. v22열의 pop자리로 고정되어 있는데 e2열에 있으면 연타이고 3열로 이동하면 연타가 아니게 된다. 이렇게 되는 이유는 연타 샘플을 취할 때 if (isalpha(c)) 조건으로 알파벳만 연타 점검의 대상으로 했기 때문에 ev를 집게로 연달아 쳤다고 생각하기 때문이다. 실제로는 중간에 Pop이 들어가 연타가 아니다. 두손은 공백, 개행이 모두 엄지에 있어 알파벳만 보도록 했는데 사실 이것도 틀린 통계이다. 집게-엄지-집게이면 이건 연타가 아닌걸로 봐야 한다.

공백, 개행을 연타 점검 대상이 넣었다. 단 숫자 0이 나타나면 popidx를 받는데 이건 대상에서 뺐다. 대신 pop 문자이면 popidx를 먼저 넣고 문자를 넣어 연타가 아니도록 했다. Pop 다음은 중지나 약지로 치게 되므로 연타일 수가 없다. 이렇게 해도 위 두 배열의 연타율이 같지는 않은데 eve에서 ev는 항상 연타가 아니지만 ve는 연타일 수도 있고 아닐 수도 있기 때문이다. 논리를 수정하니 공백, 개행과 알파벳의 연타율도 계산되어 16%로 오히려 높아졌다.

연타 계산의 또 한 가지 문제가 더 발견되었는데 all, look 등 같은 문자가 두 번 이어질 때도 연타로 볼 것인가이다. 상대 평가라 이걸 연타로 봐도 되고 안 봐도 되지만 배열을 어떻게 바꿔도 연타일 수밖에 없어 연타라고 보지 않는게 합리적일 거 같다. 이 처리를 추가했더니 연타율이 14%로 줄어든다. dist4 ET 고정을 뽑아 보니 베스트의 연타율 분포가 10.93~12.31이어서 마이너스 감점이 나오며 감점 범위는 7점 정도로 좁다.

부담도 감점 범위가 7, 손가락 분담률 감점 범위가 0.7, 행 분담률은 2.3이며 연철은 모두 만점이라 변별력이 없다. 결국 부담도와 연타율이 가장 큰 영향을 미치는 셈이다. 연타율 만점을 10.5%로 조정하기로 하되 그래 봐야 평행 이동일 뿐이라 순위에는 영향을 주지 않는다. 베스트 개수를 2000으로 줄여서 그런가 채점 시간은 10분으로 오히려 더 빨라졌다가 20분으로 다시 느려졌다가 편차가 심하다.

 

ET 고정 :  34,5285,9833       etihaonrdscmlupwfgybvkjxqz 감점10.76 19.85(7.46)  손가락34:24:22:19(0.9) 24:39:24(0.0) 지연10%(2.4) 연철0.0

ET 포함 : 193,0298,2230      teihnraodsclmupwfgybvkjxqz 감점9.22 19.86(8.12)  손가락34:22:24:19(3.3) 24:39:24(0.0) 지연10%(-2.2) 연철0.0

 

이 결과로부터 알고리즘을 검증하고 채점 방식을 튜닝한다. 어차피 dist4는 직접 사용할게 아니며 dist56를 채택할 것이다. ET를 고정한 것과 포함한 것의 차이는 ETTE냐 밖에 없으며 2열과 3열의 교체뿐이다. 중지보다 약지에 부담도가 조금 더 많이 매겨져 있어 부담도는 약간 더 올랐고 손가락 비율도 나빠졌다. 그러나 손연타율에서 4.6점이나 차이가 발생했다. 10.06%10.98% 연타율의 차이인데 이것도 사실 거의 차이가 없다. 마이너스 감점이 발생했으니 연타율 만점을 다시 10%로 조정하기로 한다.

둘 다 모음 U가 집안열이라 별로 마음에 들지는 않는다. 빈도상의 차이가 있더라도 nu를 바꾸는게 좋아 보이는데 5.2%2.1%로 두 배가 넘어 별로 바람직하지는 않다. 통계가 산출한 배치가 그래도 더 합리적이기는 하다. T열과 E열이 일정한 걸 보면 연철이나 연타에는 이 구조가 제일 유리한 모양이다. ET보다는 TE가 연타 비율이 약간 낮은데 Pop 문자와의 관계 때문에 그런 듯 하다. 채점 논리상의 큰 문제는 없는 듯 하다.

ET는 딴 자리로 가 봐야 점수에 좋을리 없으니 아예 자리를 고정하되 ET인 경우와 TE인 경우를 각각 뽑아 본다. 이 둘을 바꾸려면 빈도는 그대로 두고 키의 순서를 바꾸면 된다. 사실 빈도는 9%, 7%로 무시할 수 없을만큼 차이가 나지만 중지와 약지의 힘에 별 차이는 없으며 두 위치의 부담도도 같다. ET 보다는 TE가 두손 자판과 순서가 더 비슷하다는 이점이 있다.

ET 위치 고정 체크 박스를 ET, TE 선택으로 용도 변경하고 1, 2 순위의 열 위치만 바꾸도록 했다. 이 옵션으로 두 셋트 돌리면 ET 포함으로 돌리는 것과 사실상 비슷하다. ET3순위 이상으로 내려 가지 않기 때문에 시간을 훨씬 절약할 수 있다. dist5ET 고정시 570억개이며 3시간 정도면 채점 가능하니 두 대로 각각 돌려 보자.

 

ET : 400,8285,2506   etihaonrdscmlpuwgfybvkjxqz 감점13.26 19.85(7.46)  손가락34:24:22:19(0.9) 24:39:24(0.0) 지연10%(4.9) 연철0.0

TE : 407,5798,8981   etihnraodsclmpuwgfybvkjxqz 감점11.72 19.86(8.12)  손가락34:22:24:19(3.3) 24:39:24(0.0) 지연10%(0.3) 연철0.0

  

 

ETTE2, 3열만 바뀔 뿐 다를게 없다. dist4와 비교해 보면 집안열의 up 순서가 다르고 새밖열의 gf 순서가 다르다. 감점은 오히려 더 큰걸로 나왔는데 이는 연타율 만점을 0.5 더 낮춰서 2.5만큼 더 빼야 맞으니 감점은 같은 셈이며 dist4의 배열이 동점의 2등으로 랭크되어 있다. 거리를 늘린다고 해서 더 좋은 배열이 나오지 않는다는 뜻이다.

이제 dist6을 돌려 보되 TE만 돌려 보면 ET는 열만 바꿔 생각하면 된다. 여기까지 돌려 보고 수동 조정해 보자. 요건 최소한 하루는 걸리지 않을까 예상된다.

 

TE : 2935,8046,1764 etihnraodsclmpuwgfybvkjxqz 감점11.72 19.86(8.12) 손가락34:22:24:19(3.3) 24:39:24(0.0) 지연10%(0.3) 연철0.0

대략 20시간 반만에 통계가 끝났고 총 개수는 5000억이 안된다. 결과는 dist5와 같으며 감점까지 똑같으며 dist41등도 2등에 똑같이 있다. TE가 같다면 ET도 당연히 같게 나올걸로 예상되며 더 이상 dist를 늘려 봐야 더 좋은 배열이 나올 거 같지는 않다. dist 4, 5, 6이 다 같으며 통계로 찾아낼 수 있는 최선의 배열이다.

결과 배치를 보면 연철없이, 연타율 10.06%로 양호하고 행 비율은 만점이기까지 하다. 그러나 IU가 너무 떨어져 있어 모음끼리 찢어졌다는게 좋지 않다. 베스트의 다른 배치를 봐도 U는 집안열 1, 3행이나 0행 집게 자리를 떠돌 뿐 제자리로 들어오지는 못한다. 2%의 빈도로는 어떻게 해도 가장자리일 수 밖에 없고 연타 목록에 없는 문자라 그렇다.

모음끼리 모으라는 기준 따위는 없으니 이렇게 되는데 이 부분은 수동으로 조금은 조정해야겠다. 미세한 점수차보다는 직관성이 더 중요하다. TE 결과에서 id를 바꾼다. 빈도 5.25i를 빈도 3.59d와 바꿈으로써 새끼의 부담이 늘어난다. 3행은 2.22u를 새끼로 보내고 5.0s1열로, 4.38h0열로 보낸다. 이번에는 새끼의 부담이 오히려 줄어 들어 1행의 교환을 어느 정도 상충한다.

etdsnraoiuclmphwgfybvkjxqz 배치로 바꾼 후의 결과와 점수를 비교해 보고 과연 수긍할만한 변화인지 점검해 보자.

 

부담율 : 19.86 -> 20.02, 8.12-> 16.45

손가락 : 34.2:22.2:24.2:19.2 -> 35.4:22.2:24.2:18.1, 3.3-> 5.08

: 12:24:40:24로 변화 없으며 둘 다 만점

연타율 : 67610.06% -> 108116.09%, 0.31 감점 -> 30.46 감점

연철 : 둘 다 0으로 변화 없으며 만점

총감점 : 11.72 -> 51.98

 

손가락, , 연철은 거의 번화없어 괜찮고 부담도도 점수는 8점이나 깍였지만 수치로 보면 고작 0.2 증가한거라 거의 의미없다. 다만 연타율이 6% 증가했는데 40% 이상 증가한 수치라 이게 좀 안 좋다. sh를 바꿔 봐도 연타율이나 점수에는 별 변화가 없다. iuPop의 연타, cdssp의 연타가 늘어나지 않았나 추측된다. 다른 기본 배열과도 비교해 보자.

 

빈도순 : 손가락 26, 연타 57, 연철 39.5점 총 101점 감점

알파벳 : 부담도 172, 손가락 172, 181, 연타 54, 연철 22.5. 583

1차 배치 : 연타 41, 연철 22.5점 총 59

 

알파벳순으로 늘어 놓은 것에 비해서는 월등히 좋고 빈도순으로 나열한 것보다도 연타와 연철이 개선되어 좋기는 하다. 그러나 수동으로 잡은 초안 배치에 비해서는 별 차이가 없다. 연철이 하나도 없다는 점에서는 통계를 돌린 보람이 있지만 며칠씩 코딩한 결과로는 만족스럽지 않다.

etaonishrd 까지 상위권은 문자가 다 제자리로 들어왔되 h가 집안열로 밀려 났고 u가 들어와 있다. 이 정도면 그리 나쁜 배치는 아닌 거 같고 사실 더 변화를 줄만한 여지도 거의 없다. 일주일 통계까지 짜서 돌린 결과고 그리 썩 마음에 들지 않지만 사실 한손 배치가 이상적으로 나오기는 불가능하다.

일단 이 배열을 선택하되 통계 외에 한가지 더 고민할 게 있다. 한글은 모서리를 비웠는데 영문도 ypop+d, bpop+s에 두는 것도 괜찮다. 가까운 곳 투터치인가, 먼곳 원터치인가의 차이인데 이건 통계로는 수치화하기 어렵다. 실사용하면서 두 방식의 장단점을 따져 보고 미세 조정하자.

통계 프로그램은 2800줄에서 3600줄로 800줄 늘어났는데 논리가 더 들어간게 아니라 한손으로 분기하는 반복 코드가 많아서 그렇다. 이 즈음에서 중간 소스 정리를 했다. ET, TE는 고정 및 가변의 세 가지 조건으로 바꾸어 한손, 두손 모두에 적용할 수 있도록 한다. UI를 재배치하고 디폴트는 전역 변수 초기값으로 바꾸되 한손 ET 고정으로 했다.

dist4 TE 고정으로 다시 한번 돌려 보고 동일성 확인했다. 21분밖에 걸리지 않았다. 이제 두손도 ET를 고정해 놓고 통계를 돌릴 수 있다. 재작년에 이 옵션을 썼다면 두달 걸릴거 일주일만에 끝냈을텐데 그때는 생각하지 못했다. 통계는 다 뽑았지만 코드 정리는 꼭 필요하고 1년 후에 봐도, 남에게 보여 줘도 설명 가능해야 한다.

이왕 수정한 김에 dist6ET 순회해서 돌려 보자. 일주일은 더 걸릴 거 같지만 동일성 확인해야 하고 개수도 조사할 필요가 있다. 710일 통계가 끝났다. 158시간 걸렸으며 84586억개중 하나를 찾았다. 중간에 노트북 중고로 파느라 장비 한번 교체했는데 저장 기능이 잘 되어 있어 별 문제없이 통계 수행했다. 결과는 이렇다.

 

0 2,8208,5472,8900  teihnraodsclmpuwgfybvkjxqz 감점11.72 19.86(8.12)  손가락34:22:24:19(3.3) 24:39:24(0.0) 지연10%(0.3) 연철0.0

 

dist6 TE 고정으로 돌린 것과 같다. 결국 ET는 돌릴 필요가 없었던 셈이다. 이걸 기반으로 수동으로 몇 개 바꾼 것이 현재의 배열이므로 그대로 적용하면 된다. 결국 보름이나 통계를 돌린 결과 더 이상 별거 없다는 것만 확인했다. 샘플이 5000억 개에서 8조개로 늘어나 더 많이 살펴 봤다는 의미만 있을 뿐이다.

한글 배치

623: 영문은 통계 돌리고 있는중이며 이제 한글을 배치할 차례이다. 한글도 통계를 돌릴까 생각했지만 아무래도 의미 없을 거 같다. 빈도에 따른 부담도나 연타율, 손가락 분담율 정도는 체크할 수 있지만 자음과 모음을 흩어 놓는게 비합리적이고 효율보다는 직관성이 더 중요하기 때문이다. 일단 수동으로 배치하기로 한다.

한글은 Pop키가 필요치 않다는 걸 알게 되었다. 초기에 쎈소리 입력을 위해 Pop키를 배치했는데 0행의 두 키와 Pop키 자체를 활용하면 ㅋ만 다른 문자의 Shift 자리에 넣으면 된다. 아니면 0행 모서리 제외하고 3개를 Shift 자리에 넣어도 된다. 영문은 대소문자 구분이 있어 Shift 자리에 알파벳을 넣을 수 없지만 한글은 그렇지 않다.

초안은 좌자우모로 배치했는데 상자하모는 어떨까 생각해 봤다. 시도해 볼만하다고 생각했는데 이러면 손가락 연타율이 높아진다. 같은 손이라도 좌우를 교대로 쳐야 손가락 부담이 분산되는데 상하 배치는 중앙 부분에 빈도 높은 글자가 몰리게 되어 중지, 약지의 부담이 크게 증가하고 리듬감도 떨어진다. 좌자우모를 유지하기로 한다.

문자를 배열하려면 빈도부터 정해야 하는데 통계 프로그램에 이미 잘 작성되어 있다. 문자 빈도는 글자가 나타나는 빈도이고 키 빈도는 키를 누르는 빈도이다. ㅏ는 ㅏ 자신 뿐만 아니라 ㅑ의 2, ㅘ의 빈도를 더해야 하고 ㄱ은 ㄲ의 빈도를 더해야 한다. 따라서 키빈도는 키할당에 따라 달라지는데 두손의 경우 ㅌㅋ이 ㅇㄹ의 Shift 자리에 있어 이 두 키의 빈도에 더해진다.

한손은 Shift자리에 뭐가 들어갈지 아직 결정되지 않았고 복모음만 확정되어 있어 빈도를 정확히 결정하기 어렵다. 복모음, 복자음 등은 제외하고 키를 할당받을 문자에 대해서만 키 통계를 정리해 봤다. 기호는 일단 뺐는데 공백은 11.5이고 마침표는 0.9이다. 완전히 정확하지는 않아도 상대적 빈도는 대충 맞다.

 

7.6

7.2

6.0

5.4

4.6

2.9

1.9

1.5

 

10.4

6.7

6.0

5.6

4.0

3.8

2.9

2.5

2.4

2.2

0.7

0.6

0.6

0.2

 

모음과 자음 앞부분의 배치에는 크게 고민할 부분이 없이 빈도순으로 배치하면 된다. 자음 뒷부분의 ㅁㅂㅎ과 쎈소리가 문제인데 다음 두가지 안이 나온다. 모든 키를 다 쓸 것인가 아니면 모서리 두 키는 빼고 Shift 자리를 활용할 것인가의 차이이다.

ㅂ의 빈도가 더 떨어지지만 중지가 길어 Shift와 함께 누르기 좋은 자리에 배치했다. ㅁ과 ㅎ도 바꿀 수 있는데 ㅎ이 종성에 잘 오지 않으므로 연타가 적어 모음 위에 놓았다. 쎈소리중에 빈도가 제일 높은 ㅊ은 단독키를 주었고 빈도가 제일 낮은 ㅋ은 Shift 자리에 놓았다. 문제는 ㅍㅌ인데 외진곳 단독키가 나을지 Shift 좋은 자리가 나을지를 결정해야 한다.

지금 당장은 외진곳의 자세가 너무 틀어지므로 Shift 자리가 더 나아 보이는데 실사용을 해 봐야 알 수 있다. , 결정하기 어려운 문제이니 둘 다 테스트해 보되 일단은 모서리를 비우는 걸로 채택하자.

한글 통계

한글은 영문과 달리 자음, 모음이 분명히 구분되어 통계를 돌리기 확실히 적절치 않다. 그래서 통계 기능을 빼고 수작업으로 배치했는데 문제는 이 상태가 어떤지 수치적으로 검증할 수 없다는 점이다. 행비율, 손가락 비율 조차도 정확히 알 수 없어 객관적인 수치를 제시할 수 없다. 최소한 현재 배치의 점수라도 산출해야겠다는 생각이 들었다.

소젯이 많이 알려진다면 적게는 수만명, 많게는 수백만명이 쓸 수도 있는데 이렇게 대충 만들 수는 없다. 배치에 대해 이견을 제시하는 사람에게 마땅히 대항할 근거도 없이 그냥 믿고 쓰라고 해야 한다. 이럴 수는 없으니 3~4일 시간을 더 쓰더라도 한글도 배치에 대한 점수를 내 보고 가능하면 통계까지 돌려 보자.

 

- 자좌우모는 유지한다. 2벌식과의 관계나 좌에서 우로 읽는 습성에 맞춰야 자연스럽고 집게, 중지와 약지, 엄지만이라도 좌우가 나뉘어야 직관적이다.

- 모음은 빈도가 너무 명확해 더 손델게 없어 고정한다. 변화를 줄만한 부분이라고 해 봐야 ㅣ와 ㅡ의 위치를 바꾸는 정도인데 '' 입력시 현재는 역방향이지만 둘을 바꾸면 순방향이 된다. 그러나 ㅚ, ㅟ가 연타가 되는 문제가 있어 바람직하지 않다.

- 모음 중 ㅔ,ㅐ는 교체 가능하다. 빈도에 타라 ㅔ를 더 좋은 자리로 옮겼는데 ㅞ, ㅙ가 바로 인접한게 좋다. 또 이 둘을 새밖열에 두느니 ㅗㅜㅡ의 Shift 자리 중 하나로 옮기는 게 어떨지 테스트해 보기로 한다. 직관적으로는 제자리 Shift가 더 나을 거 같으며 이러면 새밖열은 enter만 두고 비운다.

- 자음중 ㅇㄴㄹ과 그 Shift 자리의 ㅋㅌㅍ은 자리를 고정한다. 빈도상으로도 당연히 가장 좋은 자리여야 하고 된소리가 없는 자음이 이 세 글자와 ㅂㅎ밖에 없어 딴 글자의 Shift자리에는 들어갈 수 없다.

- 된소리는 본소리와 분리하지 않는다. ㄱ과 ㄲ을 딴 위치에 두는건 말이 안된다. 이렇게 되면 된소리는 자연히 본소리의 Shift 자리이니 통계에서 배제해 버리면 된다.

- 남은 통계 대상은 ㄱㄷㅁㅂㅅㅈㅊㅎ 8개 뿐이며 8개의 빈칸에 이들을 채우며 채점하면 되니 8!=40320개밖에 안된다. 시간 절약할 필요없이 아낌없이 통계를 돌려도 1분 이내로 끝낼 양이다.

- ㅂ은 된소리가 있어 어쩔 수 없다 치고 ㅁㅎㅊ은 ㅓㅏㅣ의 Shift 자리로도 이동할 수 있다. 직관성은 떨어지지만 자세 유지에는 유리하다. 통계 뽑아본 후 따로 검토해 보자.

 

평가 항목중 부담율, 행비율, 손가락 비율 등은 영문과 같고 만점 기준도 대동소이하다. 연타율은 조금 다른데 Shift는 엄지라 제외하고 공백, 개행은 포함한다. 같은키를 누르는 경우도 연타로 보지 않는다. ㄱㄲ이나 ㅅㅆ이 이어져도 이건 찢을 수 없으니 연타가 아니다. 자음, 모음이 번갈아 나와 영문보다 덜 할걸로 예상된다. 연철의 개념은 없다. 영문은 wh, th, ng 등 자주 나오는 자음 연속이 있지만 한글은 항상 자음, 모음 순이라 자음 연철이 드물고 있어도 골고루 흩어져 있어 배치로는 해결할 수 없다.

한글 채점을 해 보기로 했으므로 옵션을 늘렸다. 원래 한글은 안돌리려고 없앴다가 최소한 점수라도 내 보자 싶어 다시 도입했다. 이제 세 개의 평가 흐름이 만들어지는데 한글은 영문이랑 구조가 달라 완전히 새로 만들어야 한다. 시간이 좀 걸릴 거다.

626: 하루종일 한글 한손 채점 및 통계 코딩을 했다. 영문 한손과 구조가 비슷해 한벌 더 만들면 되니 큰 어려움은 없다. 가장 큰 차이점은 1바이트 알파벳이 아니라 2바이트 한글 음소를 순회한다는 점이다. layout에서 읽을 때 포인터로 순서대로 읽는 것이 아니라 *(WORD *)p 수식으로 읽고 2바이트씩 건너 뛰고 문자열로 다시 조립할 때도 WORD 단위로 읽어야 한다.

, ㅘ 같은 복자음, 복모음이 있어 문자를 누르는 회수와 키를 누르는 회수를 따로 조사해야 한다. 평가 항목중에 연철의 개념은 없다. 순회는 정수 인덱스로 바꿔 처리하도록 해 놓아 같은 논리를 사용하며 PER_START, PER_END 변수를 이미 적용해 놓아 순회 범위를 조정하기도 쉽다. 경우의 수가 고작 8만개밖에 되지 않으니 연타 샘플은 비율 따지지 않고 모두 다 쓰는 걸로 했다.

다만 키, 문자, 평가 구조체가 또 한벌 더 생기는데 완전히 대체하지 않고 일부를 누락하는 바람에 버그가 생겼으며 완전히 찾는데 시간이 걸렸다. 반나절만에 채점 루틴 완성하고 또 반나절만에 통계 루틴까지 완료했다. 딱 하루 걸린 셈이다. 초안 뽑은 후 실 데이터를 보고 채점 기준을 적당히 조정했다. 부담도 비중은 떨어뜨리고 연타 만점 기준을 훨씬 낮추었다. ,행 비율은 이상적인 값을 찾기 어려워 더 튜닝해야 한다. 빈도순 배열과 8만개 통계를 돌린 결과 1등은 다음과 같다. 다 돌리는데 5초도 안 걸리며 베스트 2000의 감점 분포는 41~60점이다.

 

빈도순 배치

부담도 21.6 - 6.05감점

손가락 : 34:29:26:20 - 18.01 감점

: 8:33:40:27 - 66.02 감점

연타 : 33568.26% - 6.32 감점

총 감점 : 96

통계 1

부담도 21.5 - 4.75감점

손가락 : 32:29:27:20 - 13.19 감점

: 12:29:40:28 - 15.30 감점

연타 : 35528.75% - 8.73 감점

총 감점 : 41

 

부담도에 약간 차이가 있지만 무시할만한 수준이고 손가락도 집게 부담이 약지로 분산되어 감점이 덜하다. 이 둘은 바람직한 채점이다. 가장 큰 차이는 행비율인데 빈도순은 0행의 비율이 낮아 감점이 많고 1등은 1행 부담이 줄어 감점이 덜 하다. 행 비율의 만점 기준이 0행에 너무 높은 비율을 지정해서 그렇다. 연타도 약간 늘었지만 가중치가 낮아 감점 정도가 덜하다.

딱 봐도 1등이 빈도순보다 더 좋지는 않고 비직관적이다. 실 통계 분포에 따라 행 비율을 11:25:39:25로 정했는데 0행은 낮을수록 좋다. 9:27:40:24로 조정하고 손가락, 행 비율의 허용치를 2로 늘려 덜 영향을 받도록 했다. 손가락 연타율은 만점 7로 하고 5배수에서 8배수로 가중치를 늘렸다. 그랬더니 1등이 바뀐다.

26점 감점이며 손,행 비율은 범위를 크게 벗어나지 않고 연타는 3424회로 중간 수준에 맞춰진다. 빈도순에 비해 ㄱㅅㅈ은 같고 ㅊㄷㅁㅂ의 위치가 바뀌었다. 이 기준으로 빈도순은 50, 1차 배치는 30점 감점이며 둘 다 손,행 비율의 감점이 줄었다. 점수차는 있지만 어차피 주관적인 기준으로 매긴거라 대동소이다.

통계를 내 본 결과 참고는 할 수 있지만 전적으로 신뢰할 수 없고 만족스럽지도 않다. 대표적인 예가 ㅂ의 위치인데 Shift와 함께 누르니 자세가 틀어지는 것보다 가장 긴 중지를 쭉 뻗는게 낫다. 통계는 이런 것까지 고려하지 않고 기계적으로 채점할 뿐이다. 한글은 빈도순을 기준으로 수동으로 약간씩 배치만 조정하기로 한다.

먼저 ㅐ, ㅔ를 새밖열에서 새끼열 Shift 자리로 이동해 본다. 자세가 틀어지는 것보다는 Shift 투터치가 더 나을 거 같아서이다. 엄지의 유연성을 적극 활용하자는 작전이다. 이건 통계 레이아웃을 수정해서는 안되고 문자 배열의 고정 위치를 수정해야 한다. 부담도가 20.22로 줄고 -35점 감점으로 개선되어 -10점 감점이 된다. 1등은 -29점 감점되어 점수 상황은 좋아진다. , , ㅊ도 Shift 자리로 옮겨 보았다. 이건 가변 음소가 고정 위치로 바뀌므로 코드도 뜯어 고쳐야 하고 레이아웃도 ㄱㅅㅂㄷㅈ만 배치해야 한다.

 

ㅐㅔ 옮김

부담도 20.22 - -35.19감점

손가락 : 33:28:25:19 - 3.78 감점

: 9:32:39:25 - 14.46 감점

연타 : 33047.88% - 7.0 감점

Shift : 2794(옮기기전 1454)

총 감점 : -9.95

ㅁㅎㅊ 옮김

부담도 18.53 - -86감점

손가락 : 29:26:27:17 - 0 감점

: 3:31:39:26 - 23.96 감점

연타 : 35638.02% - 8.15 감점

Shift : 5272

총 감점 : -53

 

ㅐㅔ를 안으로 옮긴건 괜찮은 거 같다. Shift 타수가 2배 이상 늘어나지만 새끼 손가락이 밖으로 벗어나는 것보다는 낫다. ㅁㅎㅊ을 옮기면 Shift 타수는 더 늘어나지만 부담도가 좋아진다. 그러나 모음 안에 자음에 들어가 직관성이 떨어진다는 약점이 있다. 만약 이 구조를 채택한다면 차라리 ㄷ, ㅈ도 0행으로 옮겨 버리는게 낫다. 이러면 0행에서의 순서는 ㄷ,,ㅂ으로 해야 손가락 분담률이 분산된다.

 

부담도 18.18 - -96감점

손가락 : 26:27:29:17 - 7.83 감점

: 10:27:39:23 - 0 감점

연타 : 451810.17% - 25 감점

Shift : 5272

총 감점 : -63

 

집안새밖열이 다 비었다는 점에서 자세 유지에는 좋지만 자음과 모음이 섞여 있다는 면에서 직관성이 떨어진다. 빈도순보다 ㅐ, ㅔ를 옮긴 건 채택하기로 하고 ㅁㅊㅎ을 옮긴 것은 통계치만으로는 판단할 수 없고 실사용해 보면서 검토해 봐야한다. 위 배치에서 1행이 3행보다는 위치가 좋으니 ㅊㅎ과 ㅋㅍ은 서로 바꾸는게 좋겠다. 또 중지가 약지보다 힘이 좋으니 쎈소리를 약지로 보내고 ㅁㅎㅊ을 중지 Shift 자리로 가져온다.

 

부담도 18.13 - -97감점

손가락 : 26:31:25:17 - 16.16 감점

: 10:29:39:21 - 0.65 감점

연타 : 34507.76% - 6.12 감점

Shift : 5272

총 감점 : -74

 

중지 비율이 높아져 감점이 늘어났다. 모음과 겹친 쎈소리 자음이 빈도가 낮아 모음에 빌붙어도 그나마 더 낫다. 연타율은 오히려 더 낮아져 전체 점수는 좋아졌다. Shift 타수가 너무 높아졌는데 Space5286, ㅇ이 5641이라 그보다는 낮으며 전체 타수에 비해 대략 8번에 한번꼴이다.

이 배열로 연습을 좀 해 봤는데 그럭 저럭 쓸만하다. 아직까지 자판을 보고 쳐야 하는데 Shift를 눌렀을 때 자판을 다시 그리지 않는 문제가 있다. 왼쪽의 Shift키는 잘 되는데 오른쪽은 원래 Space를 억지로 Shift로 바꿔 쓰니 다시 그리지 않는데 키보드를 무효화시켜 그리도록 했다. 그리고 한글에서는 Pop키가 없으므로 이 부분도 영문일 때만 Pop으로 표시하도록 했다.

Shift와 함께 누르는 ㄷㅈㅂ은 0행에 있는게 맞는거 같고 ㅁㅎ은 밖으로 빼더라도 집안열쪽이 좋다. 빈도와는 맞지 않지만 Shift를 누르면서 자세까지 틀어지는 것은 불편하다. 이제 배열은 두 가지로 압축되는데 Shift 제자리 또는 빈 키를 활용하는 두 가지이다. 둘 중 어떤게 더 나은지는 장기간 검토해야 하니 두 배치를 옵션으로 만들자.

ㅁㅎㅊ을 단독키 자리로 옮기고 모음에 있던 ㅍㅌㅋ을 자음 Shift자리로 가져온다. ㅐㅔ도 밖으로 같이 뺀다. 자세를 유지하는 투터치냐, 자세가 틀어지는 원터치냐를 선택하는 문제인데 당장은 투터치가 더 나아 보인다. 이 배치를 토글하는 함수를 만들어 뒀는데 호출할 시점이 따로 없다. 툴바를 만들기는 좀 그렇고 해서 키보드 윈도우의 마우스 오른쪽 클릭에 일단 연결해 두었다.

이 상태에서 타이핑을 해 보니 아직은 자리를 다 외우지 못해 애국가를 치는데 분당 36타 정도 나온다. 한손에는 타수 측정 기능을 시작할 수 있는 키가 없어 두손에서 측청 시작하고 한손으로 전환한 후 측정해야 하지만 첫 타수부터 측정을 시작해서 오차는 없다. 자리를 외우고 조금만 연습해도 100타 정도는 쉽게 넘을 수 있을 듯 하다. 한글 배치는 여기까지 해 두고 시간 날 때마다 틈틈이 연습해 보기로 한다.

ShiftCaps 연구

한글 한손 자판을 만들다가 Shift 자리에 음소를 중복해 놔도 자세가 틀어지지 않고 접근성이 굉장히 좋다는 걸 알게 되었다. 제자리 키 범위 내에서도 모든 음소를 다 배치할 수 있어 자세가 틀어지지 않으며 익숙해지면 빠르고 편하게 칠 수 있다. 물론 더 검증해 봐야 하고 직관성이 떨어져 익숙해지는데 시간이 걸리겠지만 말이다.

그렇다면 영문은 이게 왜 안되는가? 그 이유는 영문이 Shift를 대문자로 쓰도록 기능을 고정해 놨기 때문이다. 대문자는 잘 쓰지도 않고 소프트웨어가 자동화된 처리도 할 수 있는데 과연 그 좋은 Shift 레이어를 통째로 갖다 바쳐야 할만큼 중요한가? 대문자는 로마자에만 있는 기능이라 키보드 전역적인 기능이 아님은 예전에도 이미 알고 있었다. Cap은 영문자 내에 들어가야 할 키이지 조합키 자리씩이나 차지할 수 없다.

기록을 보면 07819일에 만든 한손 자판이 Shift를 다른 문자의 의미로 사용하고 있고 대소문자 선택키는 Caps라는 이름으로 따로 존재한다. 문자에 26개 알파벳을 다 넣을 수 없을 때는 사실상 이 방법밖에 없다. 두손 자판으로 넘어가면서 키 개수가 넉넉해지니 Shift를 대문자 선택으로 기능을 바꾼 듯 하다. 논리적 효율성 이전에 호환성을 무시하기 어렵기 때문이다.

Shift가 다른 문자를 선택하는 기능을 하고 Caps를 영문자 배열 안으로 집어 넣어 버리면 영문도 집안열에 문자를 두지 않고 입력 가능하다. 두손 한글의 ㅌ,ㅋ이 별도 자리에 있는 것보다 Shift 자리에 있는게 더 좋음은 나 스스로 이미 경험해 본 바이다. 이 작전대로라면 Pop키는 필요 없고 대신 Cap이 필요하며 외진 곳의 문자를 안으로 넣을 수 있다. 1차 배치한 결과에서 이를 적용해 보면 이렇게 된다.

15개의 키가 있으니 상위 15문자인 etaonishrdlumcw까지는 노멀 자리에 있고 하위 11문자인 ygfpbvkjxqzShift 자리로 들어간다. 공백, 기호까지 다 포함한 통계에서 Shift 자리 문자의 비율이 대략 10%이므로 열번에 한번꼴로 Shift를 눌러야 하니 그리 나쁘지 않다. gpfy 네개만 빼도 3%가 되지만 외진 곳으로 이동하느라 자세가 틀어진다. 0행 모서리 두 개만 빠고 새끼쪽의 3개 키는 더 쓸 수도 있다. 장단점을 잘 따져 보자.

 

- 가장 큰 장점은 자세가 유지되니 속도가 빨라지고 피로도가 감소한다는 것이다. 장애인에게는 물론이고 두손을 다 가진 사람에게도 속도와 피로도는 중요하다.

- Shift가 대문자가 아니라는 것은 비직관적이며 두손과 호환되지 않는다. 안 그래도 생소한데 상식을 어겼다며 까이가 딱 좋다.

- 한 카에 두 개의 문자가 있으니 익숙해지는데도 시간이 오래 걸리며 그 자체가 헷갈리는 요소이다. 그러나 1!, 2@ 처럼 이미 이런 예가 있어 아주 불가능한 정도는 아니다.

- 조합키 입력이 어려워진다. Ctrl+V를 입력하려면 Ctrl+Shift+E를 눌러야 하는데 진짜 Ctrl+Shift+E와 구분할 수 없다. 별도의 복잡한 키 조합을 정의해야 한다.

 

효율상 이점이 있어 한손 영문에 적용하여 점검해 보고 괜찮으면 두손도 Shift의 의미를 바꿀까도 생각해 봤다. 이렇게 되면 소젯의 근본 구조에 지진이 발생한다. 한글은 집안열을 비워 두었는데 영문도 집안열을 비우고 안으로 다 집어 넣어 버리면 제자리 입력이 가능해진다.

그러나 조합키 때문에도 그렇고 습관의 문제 때문에 이 작전을 적용하기는 어려울 듯 하다. 집안열의 키를 없애 버리면 쿼티 호환 배열을 구현할 수 없고 숫자, 기호를 넣을 자리도 부족하다. 한손에는 적용해 봄직하되 당장은 어렵고 Pop키 기반 배치를 더 사용해 보고 다음에 다시 시도해 보자.

당장 내가 Pop 배치를 제대로 점검도 해 보지 않아 Cap 배치를 만들어 비교하는 것도 불가능하다. Cap 배치를 도입하려면 통계부터 다시 작성해야 한다. 한손 한글처럼 두 가지 옵션을 미리 만들어 두고 바꿔가며 테스트해 보는 것도 괜찮을 듯 하나 시간이 많이 걸릴 거 같아 일단은 보류했다.

그나마 다행인 것은 둘 중 어떤 배치를 선택하더라도 물리적인 키가 더 필요한 상황은 없어 하드웨어에는 영향을 주지 않는다는 점이다. 당분간은 현재의 94키를 유지한다. 26호까지 완성하여 현재 구현 상태로 한손 자판을 충분히 테스트해 보고 천천히 결정하자.

오토마타 개선

초안 배치는 대충 만들었고 실사용도 약간 해 봤다. 그러나 아직 불완전한 면이 많은데 소프트웨어를 더 정교하게 만들어야 한다. 배치는 더 조정한다 하더라도 양쪽이 대칭으로 잘 동작하는지, 한글영문외에 숫자, 편집도 잘 동작하는지 점검해야 한다.

 

▶대칭할 키를 정확히 지정해야 한다. 문자는 손가락별로 할당되므로 대칭이 맞다. 왼손의 중지가 T고 약지가 E이므로 오른손도 그래야 한다. 엄지도 중앙이 Shift이고 안쪽이 숫자, 바깥쪽이 편집이다. 좌우가 아니라 안밖이라 대칭이어야 한다. 그러나 모든 키가 다 대칭이어서는 안된다. 엄지 아래의 매크로키가 좀 애매하다.

왼손과 두손자판의 경우 왼쪽이 복사, 오른쪽이 붙이기인데 오른손도 이 순서대로 맞추는게 직관적이다. 사람은 좌에서 우의 순서에 익숙하고 복사 후 붙여 넣으므로 안밖이 아니라 좌우이다. 복사/붙여 넣기는 사실 조금 애매한 면이 있는데 일단 평행하게 배치했다.

방향키는 명백하게 대칭이 아닌 평행이어야 한다. 좌우에 따라 이동 방향이 결정되지 안밖으로 결정되는게 아니다. 오른쪽 자판의 안쪽이 왼쪽 이동인데 왼쪽 자판에 그대로 대칭시켜 안쪽을 왼쪽으로 정의하면 반대 방향이 되어 버린다. 좌우 자판에 상관없이 왼쪽, 오른쪽은 정해져 있다. 매크로와 편집키는 다른 키와 달리 키 맵핑을 평행하게 정의했다.

 

     /*33*/    {KG_MACRO,        VK_F18,       VK_F20,       ...       // Copy

     /*34*/    {KG_MACRO,        VK_F19,       VK_F21,       ...       // Paste

 

     // 편집 - 오른쪽 키보드 순. 다른 키와는 달리 대칭이 아니다.

     /*35*/    {KG_EDIT,        VK_PAUSE,  VK_HOME,   ...},

     /*36*/    {KG_EDIT,        VK_SNAPSHOT,VK_UP,      

     /*37*/    {KG_EDIT,        VK_SCROLL,    VK_END,     

     /*38*/    {KG_EDIT,        VK_APPS,    VK_LEFT,    

     /*39*/    {KG_EDIT,        VK_INSERT, VK_DOWN, 

     /*40*/    {KG_EDIT,        VK_NUMLOCK, VK_RIGHT, 

 

VK_LEFT에 대응되는 오른쪽 키는 안쪽의 VK_NUMLOCK이 아니라 왼쪽의 VK_APPS이다. Home, End도 마찬가지로 안밖이 아니라 좌우순이어야 한다. 편집키는 이런 식으로 맞출 수 있는데 문제는 Edit 레이어의 편집키이다.

PgUp, PgDnBS, Del은 대칭이어도 상관 없다. 페이지 이동은 양손 모두 집게 손가락으로 하면 된다. 그러나 좌우와 Home, End는 대칭이 아닌 평행이어야 한다. 이 문제는 맵을 뜯어 고치면 편집 모드 이외의 레이어가 영향을 받으므로 코드에서 직접 처리한다. hdx를 찾을 때 왼쪽의 편집키는 오른쪽과 평행이 되는 키를 찾는다. Home, End를 바꾸고 좌우를 바꾸는 식이다.

 

          hdx = -1;

          if (layer == LAY_EDIT) {

              if (vk == 'W') hdx = OH_R;

              if (vk == 'R') hdx = OH_W;

              if (vk == 'S') hdx = OH_F;

              if (vk == 'F') hdx = OH_S;

          }

          if (hdx == -1) {

 

이 경우가 아니라면 평소 하던대로 좌우의 VK를 비교해서 한손 키맵의 첨자를 찾으면 된다. OnPaint는 두손 자판 기준으로 루프를 돌므로 dx2hx 함수에서 같은 처리를 해 주면 된다. 대충 해결은 했는데 다른 부작용이 없을까 약간 걱정이 되기는 한다.

펑션키의 순서는 조금 애매한데 왼손 기준으로 좌에서 우로 하고 오른손은 우에서 좌로 간다. , 둘 다 바깥쪽에서 안쪽으로 가는걸로 했다. 이 경우는 좌우보다는 손가락을 일치시키는게 더 낫다고 판단했다. 즉 왼손 약지가 F3이면 오른손 약지도 F3이어야 맞다.

▶한글, 영문은 오래 준비하고 테스트해서 웬만하면 다 입력할 수 있지만 기호는 아직 문제가 있다. 그 중에 특히 마침표가 많이 아쉬운데 다른건 몰라도 마침표는 레이어 전환없이 입력할 수 있었으면 좋겠다. 현재 구조상으로는 아무리 살펴 봐도 Shift+Lang키밖에 쓸만한게 없다.

3행 집안열을 문자에서 비워 두면 쓸 수 있지만 영문은 이 자리가 비어 있지 않아 그럴 수 없고 한글도 옵션상 이 자리에 ㅎ이 있을 수도 있다. SpBS를 겸하고 enterShift 조합을 쓰는 프로그램이 있어 안된다. lang 더블푸시도 가능은 한데 일단 언어를 바꾼 후 점찍고 다시 원래대로 돌려야 한다는 점에서 부작용이 있다. 다른 대안을 찾을 때까지는 일단 Shift+lang에 마침표를 넣어 보기로 하자.

IsShift 조건만 점검하면 되니 구현하기는 쉽다.  OnPaint에서도 Shift 상태이면 마침표를 출력하도록 했다. 같은 자리의 Num 레이어에도 .이 있어 Num과 함께 눌러도 되며 이 경우 홀드하지 않고 순서대로 눌러도 되니 더 편할 수도 있다. 그러나 엄지가 옆으로 약간 이동해야 한다는 면에서는 이게 더 불편할 수도 있다.

Caps키가 단독키로 존재할 필요가 없다. 편집 레이어에도 좋은 자리에 Cap이 있고 차후 영문 자판안에 Cap이 들어갈 수도 있으며 그렇지 않다 하더라도 이 좁은 공간에 Cap이 한 자리 차지할 필요는 전혀 없다. Tab으로 바꾸는게 합리적이며 아니며 Win키를 가져와 조합키를 모으고 안쪽 조합키는 다른 용도로 쓰는게 낫다.

일단 Tab키로 바꾸어 두었으며 이 자리의 키는 매크로에서 제외했다. 매크로 목록에 Caps도 들어가 있지만 쓰지 않는 셈이다. 이후 매크로 목록을 정리할 때 Caps 매크로는 제외하기로 한다.

Caps 상태에 대해 버그 하나를 발견하여 수정했다. Caps를 매크로로 실행하면 괜찮은데 편집 레이어의 Caps키를 누르면 키보드 상태가 대문자로 바뀌어 표시되며 실제 상태와 일치하지 않는 문제가 있었다. 이는 두손에서도 마찬가지였는데 execvk에 기록되어 있는 VK_CAPITAL 가상키를 타겟으로 보내 버려 발생하는 문제이다.

소젯은 훅킹을 시작할 때 무조건 소문자 상태로 시작하고 키보드의 Caps는 강제로 꺼 버린다. 이후 capLock 변수로 대소문자를 판별한다. 매크로는 caps 명령에 대해 caplock 변수만 변경하는데 비해 편집 레이어의 키는 가상키를 진짜로 보내 버리기 때문에 상태가 맞지 않았던 것이다. 타겟으로 가상키를 보내는 함수에 다음 처리를 추가했다.

 

void KeyEventWithOnce(BYTE vk)

{

     ....

     if (vk == VK_CAPITAL) {

          capLock = !capLock;

          InvalidateRect(hKeyboard, NULL, TRUE);

          return;

     }

 

VK_CAPITAL만큼은 타겟으로 보내지 않고 내부적인 변수만 변경하도록 수정했다. 이전에도 이 버그를 목격한 적이 있는데 지금에서야 원인을 파악하여 수정했다. 이제 편집 레이어의 Caps키를 눌러도 키보드 상태가 잘 동기화된다.

▶ 한글, 영문은 Shift를 누르는 횟수가 많아도 같은 레이어에 오래 머물기 때문에 별 문제가 되지 않으며 편집, Fn레이어는 Shift 상태가 따로 없다. 반면 Num 레이어는 잠시 전환해서 쓰는데도 Shift 상태가 있어 불편하다. 42개의 문자를 다 집어 넣다 보니 24개는 노말 위치이지만 18개나 되는 기호가 Shift 상태에 있다. 아무리 빈도순으로 배치해도 기호는 골고루 다 쓰니 빈도가 잦다. :"?%#& 등이 그렇다.

이러다 보니 문장 입력중에 :을 입력하려면 Num Shift ; 을 세 번 눌러야 한다. 투터치까지는 그렇다 쳐도 기호 하나 입력하는데 3터치는 많이 불편하고 비효율적이다. 실제로 쳐 보면 NumShift의 중간 지점을 엄지로 누르고 새끼 손가락으로 ;을 누르게 되는데 키의 중간 지점을 누른다는 것은 바람직하지 않다. 순서대로 눌러도 불편하기는 마찬가지이다.

이 문제를 해결하려면 Num+Shift 레이어를 한번에 전환할 수 있는 방법이 필요하다. 문자영역에는 남는 키가 당연히 없고 있다 하더라도 동시에 누르기 어려우니 엄지 어딘가에 있어야 한다. 여러 가지 방안으로 생각해 봤다.

 

- 엄지 아래의 Copy(안쪽키)를 레이어 전환키로 사용한다. 공교롭게도 NumShift의 딱 중간에 있는 키이다. 한번만 눌러도 되고 홀드한 상태로 기호를 눌러도 된다. 이렇게 되면 엄지 아래 바깥쪽 키에 Copy;Paste를 같이 넣어야 하고 Cut은 넣기 어려워 클립보드 동작이 불편하고 두손과 일관성도 없다.

- Copy, Paste는 기능을 유지하되 Copy(안쪽키) 홀드 상태에 대해 NumShift 일시 전환 기능을 부여할 수도 있다. Copy 동작은 키를 놓을 때 적용하면 된다. Shift+Copy, Ctrl+Copy의 기능은 그대로 유지할 수 있다. 왼쪽은 안쪽키가 Paste여서 불일치한데 이 작전을 쓰려면 엄지 아래키도 대칭으로 만들어야 한다. 사용자 입장에서는 깔끔하지만 코딩이 복잡하고 지저분해진다.

- Fn 자리를 NumShift 레이어 전환키로 활용한다. 그러려면 Win키가 자리를 비켜 줘야 하는데 현재의 Tab자리로 가는 수밖에 없다. Tab은 편집 레이어에도 있어 큰 문제는 아니며 Fn은 빈도가 높지 않아 한칸 위로 올라가도 크게 불편하지는 않다. 다만 엄지 아래쪽 키보다는 접근성이 조금 떨어진다. 키맵을 대대적으로 수정하는 것도 부담이다.

 

어떤 방법을 쓰든 NumShift 레이어로 한번에 갈 방법인 필요하다. 기능을 만들어 놓기만 하면 외부 발패드를 사용하여 전환하는 것도 가능하다. 장애인의 가용한 모든 신체 자원을 활용하는 방안을 모두 제공해야 한다.

위 세 가지 방법이 다 가능하다 하더라도 자세가 틀어지는 것은 어쩔 수 없다. 엄지 아래키와 새밖열의 "를 같이 누르자면 손이 많이 움직이며 원래 자리로 돌아오기도 어렵다. 차라리 3터치라도 Num+Shift가 더 나을지도 모른다.

필요하다는 것은 인식하고 있지만 변화가 많아 섣불리 구현해 보기는 망설여진다. 시간이 지나면 더 좋은 방법이 떠오를 수도 있으니 당장은 구현하지 말고 신중하게 고민해 보자. 편의 기능보다 지금은 기본 구현과 한손 자판의 유용성을 확인하는게 우선이다.

▶ 현재 좌우가 대칭으로 되어 있어 왼손으로 치나 오른손으로 치나 똑같다. 두손 다 가진 사람은 상황에 따라 편한쪽으로 쓰면 된다. 그러나 진짜 한손만 있는 장애인은 반대편 자판이 전혀 필요 없다. 이 경우 왼손용, 오른손용 키보드를 따로 만들어 제작할 수 있지만 번거롭게 양손용이 전혀 불필요한게 아니다.

왼손만 있더라도 오른손 자판을 매크로로 활용할 수 있다면 이 또한 실용성이 있다. 입력은 주로 왼쪽으로 하고 자주 쓰는 명령을 왼손 가까운 오른쪽 키에 마음껏 할당해 놓고 쓰면 한손으로도 복잡한 동작을 처리할 수 있다. 한손 자판의 사용 유형이 다음 세 가지로 나뉘어진다. OHmode 변수로 한손 모드를 지정한다.

 

0 - 양손 대칭. 어느쪽으로 치나 똑같이 입력됨

1 - 왼손 입력. 오른쪽은 입력은 안되며 매크로로 활용

2- 오른손 입력. 왼쪽은 입력은 안되며 매크로로 활용

 

현재는 0번으로 구현되어 있으며 변수값을 변경하면 동작이 바뀐다. 1, 2번은 한쪽만 동작하되 반대편에 매크로를 할당하려면 반대편 키를 칭할 이름이 필요하다. 이게 쉬울 거 같지만 좌우에 대한 절대 명칭일지, 방향에 따른 반대쪽 명칭일지 등을 결정하기 쉽지 않다. 왼쪽 모드일 때 오른쪽 0키에 대한 매크로와과 오른쪽 모드일 때 왼쪽 1키에 대한 매크로가 같아야 하는지, 구분해야 하는지 조차도 아직 명확하지 않다.

이 기능을 정확히 구현하려면 매크로 기능에 대한 정비가 선행되어야 한다. 당장은 모드만 구분하는 정도까지만 구현해 두었다. 한쪽 전용일 때 반대쪽 입력은 막아 두었는데 이 키에 대해서도 매크로를 실행할 수 있는 구조를 만들어야 한다.

매크로 기능 정비

매크로 기능은 소젯의 핵심이며 실용적이다. Copy, Paste가 한키로 된다는 것만 해도 매력적이고 상황에 따라 매크로셋을 바꿔 가며 쓸 수 있는 것도 굉장히 편하다. 지금까지 잘 써 왔는데 실사용해 본 결과 새로운 요구가 생겼고 한손 자판까지 도입하다 보니 매크로 기능을 대대적으로 정비할 필요가 생겼다.

오랜만에 스타 게임을 했는데 놀랍게도 손가락은 아직 쿼티 배열을 기억한다. SD, BS 등의 단축키를 누르고 있는데 쿼티로 하면 반대편에 있는 키는 멀어서 한손으로 잘 안된다. 히드라 만들어야 하는데 H가 오른쪽에 있어 빨리 안 만들어진다. 소젯으로 해 보니 SD, SH, BH 등이 모두 왼쪽이라 할만하다. 다만 공격 A와 버로우 U가 오른쪽이라 불편하다. GA, WU로 바꿀 수 있으면 좋을 거 같다.

문자 맵핑은 안 할려고 했는데 용도가 발견되었으니 메인은 아니더라도 매크로셋에서라도 변경할 수 있어야 한다. 스타용 매크로셋 만들어 두고 게임할 때만 잠시 바꿔서 쓰면 오히려 게임에 유리하다. 또 한손 자판의 반대쪽 문자키를 매크로로 쓸려면 문자키도 결국 다른 키로 맵핑할 수 있어야 한다.

한손 자판에도 펑션행은 따로 두기로 한다. 어차피 펑션은 한손으로 눌러야 하는 문자키가 아니라 가끔 누르는거니 손가락 닿는 곳에 분리되어 있어도 상관 없다. 12개나 매크로로 쓸 수 있으면 편집키는 굳이 매크로가 아니어도 될 거 같다. 왼손 전용은 오른쪽만 잘라 버리면 되고 오른손 전용 키보드를 만든다면 펑션영역을 왼쪽에 붙여 제작한다.

매크로 집합은 한손에서 구현하지 않았는데 써 보니 오히려 한손에 더 필요한 기능이다. 양손과 단축키는 달라지겠지만 작업에 따라 키를 효율적으로 쓸 수 있는 방법을 제공해야 한다. 양손과는 다른 집합이라 따로 관리해야 하는 부담이 있다. 이런 여러 가지 사정이 생겼고 한손도 웬만큼 기본 구조를 확립했으니 매크로 기능을 대대적으로 정비하기로 한다.

 

▶ 재정의 가능 키를 대폭 늘린다. 일부 키에 대해서만 재정의하도록 제한을 두었는데 이제 그럴 필요가 없다. 일부 몇 가지 특수한 키를 빼고 모두 재정의 가능하다.

 

Ctrl, Alt, Win, Fn, 엄지 6, Num

 

두손은 이 11개만 빼고 모두 재정의 가능하다. 이들은 재정의하면 혼란이 커질 거 같고 기술적으로도 문제가 있어 재정의를 금지한다. 매크로 좌변 명칭을 정의하지 않으면 된다. 문자, 숫자, 펑션, 편집 등 임의의 키에 매크로를 할당할 수 있으며 각 매크로당 Shift, Ctrl 조합도 허용한다.

한손은 재정의 가능한 키가 제한적이다. 안그래도 복잡한 문자키를 재정의하는 것은 혼란스러울 뿐만 아니라 Shift, Pop 등의 상태까지 얽혀 있어 기술적으로도 어렵다. 키를 단순히 다른 키로 대체해 봐야 문맥에 따라 정의가 달라져 실용성이 없다. 반대편 키까지 제대로 활용하려면 문자열 입력 기능까지 구현해야 실용적이다. 문자키는 제외하고 다음 키만 매크로를 할당한다.

 

left, right, up, down, home, end : 편집 6

esc, tab : 조합키 2

u1, u2 : 엄지 아래 2

f1 ~ f12 : 펑션키

 

문자는 물론이고 문자 영역 안에 있는 lang, sp, pop, enter 등의 키는 매크로 대상이 아니다. 이게 바뀌면 오히려 더 불편해진다. 매크로를 지정할 수 있는 키가 부족하지만 펑션키가 있어 아쉬운대로 쓸만은 하다.

▶임의의 키에 매크로를 할당하려면 각 키를 칭하는 유일한 이름이 필요하다. 직관적인 이름이어야 하는데 이게 참 애매하다. 문자는 쿼티 기준으로 ASDF로 붙일지 아니면 소젯 기준으로 RSDT로 붙일지를 선택해야 하고 숫자나 기호도 앞으로 배치가 바뀔 수 있어 영구적이지 않다.

또 한손 자판에서는 할당되는 알파벳이 달라 문자로 이름을 붙이기 어렵고 쓰지 않는 반대쪽 키도 지정할 수 있어야 한다. 배치에 영향을 받지 않고 모든 키를 일관되게 지정하려면 위치 기반으로 붙이는 수밖에 없다. 물론 이 위치도 차후에 레이아웃이 바뀌면 영향을 받을 수 있지만 배치 상태를 따르는 것보다는 안정적이다. 사용자가 쓸 숫자이므로 모든 숫자는 one base이다.

 

F1~F12 : 펑션키

L11 ~ L46 : 왼쪽 문자 4624

R11 ~ R46 : 오른쪽 문자 4624

U1~U16 : 하단키 16. 좌상에서 우하순으로. CopyU7

Esc, Caps, Save, PgUp, PgDn, Find, Del

P1 ~ P3 : 외부 매크로 패드

 

본체에 83, 외부에 3키가 있고 고정키 11개로 총 97키이되 외부는 가능성일 뿐이라 스펙에만 있다. 키 이름을 그림으로 잘 정리해 놔야겠으며 차후 그래픽 환경에서 키를 선택하도록 하면 사용자가 이름을 굳이 기억할 필요는 없다.

한손은 재정의 가능한 키에 이름을 붙여 두었다. 좌우 대칭이라 위치를 기준으로 할 수 없고 이름을 주어야 한다. 재정의 불가한 키는 이름을 주지 않으면 매크로 대입문의 좌변에 쓸 수 없으니 자연스럽다.

▶키를 정의했으면 실행할 명령도 정의해야 한다. 매크로는 결국 다른 키를 입력하는 것이므로 기본 목록은 윈도우의 가상키이되 VK_ 접두를 붙일 수는 없으니 뒤쪽의 명칭만으로 키를 정의한다. 알파벳은 a~z까지 이름을 붙이되 쿼티 배열이 아닌 소젯 배열 기준이다. , 쿼티 자리의 Q키는 매크로상에서는 G이다. 차맷을 쿼티로 쓰면 이 부분은 맞지 않게 되는데 어쩔 수 없다.

숫자 1~0까지는 그냥 쓰면 될 거 같고 F1~F24까지도 이대로 쓰면 된다. 키에 대한 명칭이므로 Shift 위치의 문자는 직접 입력할 수 없다. , +는 되지만 #은 안된다. 이건 문자 입력 기능을 만들어야 입력할 수 있다. 편집키나 특수키는 고유한 명칭을 부여하되 기존에 정의해 놓은 명칭을 쓰고 약간씩 조정하기로 한다.

 

A~Z:알파벳, 0~9 : 숫자, F1 ~F12 : 펑션키

left, right, up, down, home, end

prtsc, pause, menu, numlock, scrlock, ins

esc, caps, pgup, pgdn, del

space, bs, tab, enter

 

semi, equal, star : 예약어 기호키

colon, caret, sharp, at, exclam : 예약어이지만 키가 아닌 것

$%-'/.,+* : 기호키

 

n0 ~n9 : 넘패드의 숫자, n*, n+ , n- , n., n/ , nenter : 넘패드의 연산자

f13~f24 : 추가 펑션키

br-home, br-forward, br-back, br-stop, br-search, br-fav : 브라우저키

vol-mute, vol-up, vol-down : 볼륨조절키

med-play, med-prev, med-next, med-stop : 멀티미디어키

lau-mail, lau-media, lau-app1, lau-app2 : 론치키

 

대소문자는 구분하지 않는다. 매크로 명령간, 조합키가 구분하는 :;과 대입하는 =과 조합키를 정의하는 ^#@!와 오토 리피트를 허용하는 *는 명칭을 따로 부여했다. 예약어가 더 필요하면 늘리기로 한다.

▶기존에는 대화상자의 에디트 컨트롤에 각 키의 기능을 정의했는데 이제는 수가 많아져 그럴 수가 없고 스크립트를 정의해야 한다. 한줄에 키 하나씩을 정의하며 K=M 포맷이되 명령간은 :으로, 조합키간은 ;으로 구분한다. 디폴트와 같은 명령은 굳이 정의할 필요 없고 변경할 키에 대해서만 지정하면 된다. 현재 기본셋은 다음과 같이 정의된다.

 

U7=^C;^X;^A:^C

U8=*^V;*textonly:^V;^A:^V

U9=*^Z

U10=*^Y

E3=^S

E6=^F

 

펑션이나 편집키는 디폴트와 같으니 굳이 정의할 필요 없다. 구문 해석을 위한 엔진이 정교해야 하고 에러도 우아하게 잘 처리해야 한다. 대소문자 무시하고 공백도 다 없앤 후 읽어야 하며 이것도 일종의 언어이니 주석도 달 수 있어야 한다. 기록은 남기되 잠시 무시하고 싶은 명령도 있을 수 있다.

실행중에 이 스크립트를 일일이 읽을 수 없으니 컴파일한 결과를 가지고 있어야 하며 매크로셋간의 상속 관계까지 고려하여 신속하게 명령을 찾을 수 있도록 해야 한다. 키를 입력받은 후부터 해석, 실행하는 전체 과정을 완전히 다시 작성해야 하는 대공사이다.

사용자가 편집할 때는 한줄당 하나씩이지만 INI 파일에 저장할 때는 여러줄로 저장할 수 없어 _-_ 구분자로 저장했다.

▶매크로셋 단축키를 정의한다. 두 손은 Fn3행 아래쪽의 *blc 4개의 키를 사용하는데 좀 더 접근성이 좋은 5jvq로 바꿀려고 했다가 취소했다. vq가 마우스 클릭으로 정의되어 있는데 이걸 바꿀 수는 없기 때문이다. 한손은 Fn과 결합할 문자키를 다 써 먹어 할당할 키가 없다.

한손, 두손을 통일하기 위해 펑션열을 써 볼까 했는데 펑션은 항상 있는게 아니다 보니 좀 애매하다. 그래서 한손은 Home, Up, Left, Down 네 키를 쓰되 펑션키 f1~f4까지도 OR로 연결하여 한손, 두손 모두 같은 키를 쓸 수 있도록 한다. OR 연산자로 두 개의 방법을 제공하고 한손, 두손 일관성을 확보하는 것은 좋은 아이디어인 듯 하다. 펑션키를 활용하면 매크로 집합을 12개까지 만들 수 있다.

▶매크로 수정 대화상자를 완전히 다시 작성한다. 각 매크로 별로 에디트 컨트롤을 사용했는데 이러니 너무 복잡하고 빈칸도 많다. 스크립트 방식으로 바꾸었으니 이제 스크립트를 적고 편집하면 된다. 핫 셋트를 멀티라인 에디트 하나로 표현할 수 있으니 화면이 단순해진다.

현재 자판의 매크로 목록만 표시한다. , 두손 자판 모드에서 한손 자판의 매크로를 편집할 수는 없다. 키 구조가 달라 어차피 대화상자 내에서 반대쪽 스크립트를 편집하기 어렵다. 장애인이라면 두손 매크로를 정의할 일이 없고 두손 다 쓰는 사람이 한손 매크로를 한손 키보드로 정의할 일도 없다.

셋은 손당 4개씩만 정의할 수 있도록 했는데 차후 필요하면 더 늘리도록 하자. 당장은 이 정도만 해도 충분하다. 도움말은 간략하게 줄이고 키 명칭이나 명령의 명칭 안내는 삭제했다. 워낙 내용이 많아 어차피 이건 별도의 문서를 읽어야 한다. 도움말 버튼 배치하고 홈페이지로 링크를 걸어 두는 방식이 좋을 듯 하다.

지금은 이렇게 만들어 실행중에 스크립트를 바로 편집할 수 있는 정도이되 차후에는 그래픽으로 구현하는게 좋겠다. 로지텍 마우스 옵션처럼 키보드 그림 보여 주고 할당할 명령을 목록에서 고르도록 하면 사용자가 굳이 키 명칭이나 스크립트 문법을 몰라도 된다.

▶이전 매크로 관련 코드 삭제

재정의 가능한 키가 대폭 늘어나고 스크립트를 도입하여 UI가 간단해졌다. 이전의 매크로 코드는 이제 필요 없어 제거한다. 재정의 가능 키의 목록을 arMidx 배열로 정의하고 빠른 검색을 위해 lkMidx 룩업 테이블을 초기화했으며 한손도 마찬가지이다. 이제 이것들은 필요가 없어 제거했다.

IsMacroKey, GetMacroCommand, FindMacroFromKey 함수도 불필요하다. 이 함수의 코드 중 일부는 새로 작성한 코드로 흡수되었다. FetchCommand, ExecCommand 명령도 제거했다. KEYFLAG_MACRO 플래그도 이제 필요 없으며 키맵에 이 플래그가 지정된 것도 제거한다.

▶매크로 정보 표시

매크로의 구조가 왕창 바뀌었으니 정보를 표시하는 코드도 같이 바뀌어야 한다. 사용자가 배치를 다 외울 수 없으니 화면에 매크로 내용을 정확히 표시하는게 중요하다. 문자 부분은 코드가 잘 되어 있지만 조합, 편집은 다 고정 캡션이었는데 이제는 매크로 또는 기본 가상키를 찾아 표시해야 한다. ShiftFn을 누를 때도 정확한 캡션을 보여 주도록 했다.

매크로 앞에 *가 붙으면 자동 반복이 가능하고 그렇지 않으면 계속 눌러도 반응하지 않는다. 매크로를 읽을 때 이 기호는 빼고 읽어야 하며 후킹 함수는 반복 여부를 위해 매번 눌러진 키의 매크로를 읽고 *가 있는지 점검해야 한다. 이 처리를 위해 매크로를 읽는 함수와 실행하는 함수의 역할을 조정하고 여러 가지 잔버그를 잡았다. 조합키와 함께 누를 때의 동작에서 복잡도가 높아 시간이 많이 걸렸다.

단독 조합키는 기본셋에만 둘 수 있도록 했으며 조합키 외의 문자가 있어서는 안된다. 하위셋에는 단독 조합키를 둘 이유가 없어 제외했다. 오늘은 코딩 양도 많고 다 복잡해서 힘 좀 들었다. 아직 버그가 더 있을 것이고 효율도 생각해야 하며 코드 리뷰도 다시 해야 한다. 피곤하니 내일 하자.

▶종류1에서 한손 테스트

한손은 SpaceShift로 쓰기 때문에 이 처리가 복잡하다. 공백은 Shift로 바꾸고 놓을 때 오는 VK_HANGUL은 건너 뛰도록 해야 한다. 지금은 잘 되지만 키보드 종류를 바꾸면 어찌될지 모른다. 종류2는 무시하더라도 종류1은 반드시 되어야 하며 이 테스트를 위해 재부팅이 필요하다.

오랜만에 재부팅하면서 업데이트도 받고 풀백업도 떠 두었다. 재부팅 후 점검해 보니 그냥 잘 된다. 언어 전환도 잘 되고 양쪽의 Shift도 정상적으로 잘 동작하며 별다른 이상 동작이 발견되지 않았다. 골치 좀 아플거라고 생각했는데 한방에 잘 되어 버리니 약간 허무하기도 하고 시원하기도 하다. 당장은 큰 문제 없으니 점검만 하고 넘어가기로 한다.

▶한손/두손 전환 단축키가 따로 있으면 좋다. 장애인 아니라도 전환해 가며 쓸 일이 있을텐데 양쪽의 전환키가 달라 불편하다. Fn키의 위치도 다르고 조합하는 키도 각 자판의 상황에 따라 달라져 일관성도 없다. 양쪽 모두에 있는 키는 Ctrl, Alt, 펑션키 정도인데 조합키를 이런 용도로 쓰는 건 말이 안되고 펑션키는 구성에 따라 없을 수도 있다.

결국 현재의 전환키를 유지할 수 밖에 없는데 대신 Fn+F12OR로 연결해 두면 괜찮을 거 같다. 이걸로 전환하다가 펑션이 없을 때는 내부의 전환키를 쓰면 된다. 이 방법도 그리 깔끔하지는 않지만 차후 단축키를 일체 정비할 때 좀 더 손보기로 하고 일단은 적용하자. 막상 적용해 보니 Fn+TFn+5보다는 편한데 Fn키가 달라져 일관성은 없다. 역시 툴바의 버튼이 제일 나온 거 같다.

이 기능을 추가하며 손 변경시 한글 모드가 동기화되지 않는 버그를 수정했다. A에서 두손 한글을 쓰다 B에서 한손으로 바꿨다가 두손 영문에 맞춰 두고 한손으로 다시 바꾼다. 이 상태에서 A로 돌아와 두손으로 바꾸면 프로그램은 B의 두손 영문 상태이되 A는 한글 입력 모드라 맞지 않게 된다. 상황이 좀 복잡한데 손을 바꿀 때 현재 활성창 기준으로 한글 입력 모드와 차맷을 강제로 맞추면 된다. 이전 활성창 무효화하고 타이머 100번 강제 실행하여 해결했다.

▶여기까지가 1.35이며 릴리즈하여 소스와 실행 파일을 백업해 두었다.

26호 기획

노브 테스트

5월말 가능성 점검

요즘 커스텀 키보드는 노브를 달고 나오는 경우가 많고 실용적이기도 하다. 볼륨조절이 기본이고 이전/다음곡, 언두/리두, 줌 등 달아만 놓으면 용도는 무궁무진하다. 소젯도 노브를 달면 어필할 요소가 늘어나 매력적이고 재정의까지 가능하면 다른 키보드와 차별화되는 요소이다. 안쪽 조합키 위쪽에 공간이 조금 남으니 여기다 달면 딱 맞다.

디바이스마트에서 엔코더 세 종류를 주문했다. 절대 위치를 가지는 가변 저항과는 달리 상대적 위치에 따라 신호를 보낸다. 가격은 1500원부터 3000원까지 다양하며 크기도 제각각이다. 마우스 휠처럼 수직으로 배치할 수 있으면 좋겠는데 그런 부품은 찾지 못했다. 돌리는 것 뿐만 아니라 클릭도 된다.

크기 때문에 제일 작은 걸 써야겠다. 다리가 최소 다섯 개인데 핀이 부족해 꽂을 수 있을런지 모르겠다. 검색해 보니 https://m.blog.naver.com/emperonics/222108739792 여기에 그림까지 곁들여서 동작 원리를 잘 설명해 놓았으며 예제도 있다. 안내대로 배선해서 코드 실행해 보니 잘 된다.

VCC, GND는 공유한다 치더라도 세 개의 핀이 더 필요한데 프마에 현재 97열로 16핀 썼고 통신용으로 하나 더 쓰고 있어 남은 핀이 D3 딱 하나 밖에 없다. TX, RX LED의 납땜을 제거하면(https://golem.hu/guide/pro-micro-upgrade) 2개 더 쓸 수 있다니 가능은 하겠지만 납땜 난이도가 높아 보인다. 왼쪽이 B0, 오른쪽이 D5이다.

QMK 문서(https://docs.qmk.fm/#/feature_encoders)를 보니 A, BMCU의 핀에 각각 직접 물리고 GND도 연결하라고 되어 있는데 VCC에 대한 언급은 없다. 클릭은 빼고 회전만 지원하며 핀 2개만 있으면 된다. ENCODER_ENABLE = yes를 선언하고 ENCODERS_PAD_A { B12 } 매크로로 A, B에 대한 핀을 설정한 후 키맵에 ENCODER_CCW_CW(KC_VOLD, KC_VOLU) 시계, 반시계에 대한 키를 선언한다.

어찌 어찌 해 보면 될 거 같기는 한데 일단 핀이 부족하고 클릭 처리와 배선에 대한 정보도 더 알아봐야 한다. 핀을 넉넉하게 쓰려면 틴지를 다시 도입할 수도 있는데 가격 부담도 있고 시리얼 통신도 다시 연구해야 한다. 이번에는 시간도 없고 아두이노에 대한 공부도 부족해 이정도까지만 연구한 후 일단 접기로 한다. 25호 만든 후 천천히 연구해 보자.

615일 테스트

위 내용은 5월말에 25호를 만들기 전에 연구했던 것이다. 당시에는 어려울 거 같아 접어 놨는데 어려워도 붙여 보는게 나을 거 같다. 안그래도 대중화가 어려운데 이런거라도 하나 없으면 어필할게 별로 없다. 게다가 노브를 달면 플레이트 배치도 조정해야 하니 풀셋을 확정하려면 지금 붙여 봐야 한다.

25호도 무사히 만들었겠다 다시 시간내서 연구해 보려고 알아 보다가 알리에서 우연히 마우스 휠 방식의 인코더를 찾았다. 어찌나 반가운지 종류별로 몇 개 주문해 놨는데 언제 올지는 알 수 없다. 쌩판 혼자라 어떤 부품이 있는지 다 모르니 개발에 어려움이 많다. 디바이스 마트에서는 검색되지 않는데 정확한 명칭이 뭔지도 모르겠다.

`  

공통적으로 다리가 세 개씩 달렸는데 그럼 클릭 기능은 없는 모양이다. 프로그래밍하는 방법까지는 잘 모르겠고 일단 노브 엔코더랑 같다고 보고 프마에 붙여 봐야겠다. 아두이노용은 다리가 다섯개인데 호환이 될지 모르겠다.

노브를 지원하는 sj26 펌웨어를 만들어야 하는데 보름밖에 안 지났건만 벌써 기억이 가물가물하다. QMK MSYS를 실행하고 qmk compile -kb sojett/sj25 -km sj25 명령으로 sj25를 컴파일해 보니 잘 된다. 소스 코드와 컴파일 환경이 건재하다는 것을 확인한 후 sj25를 복제, 수정하여 sj26 펌웨어를 만든다. 중간에 거친 시행 착오를 먼저 기록하고 최종 제작 절차는 따로 정리한다.

 

1.프로젝트 사본 제작하고 QMK 문서의 안내에 따라 매크로, 핀맵, 키맵 등을 수정하였다. D1, D0 핀에 대해 확인하기 가장 쉬운 볼륨 업, 다운을 맵핑했다. 컴파일 및 플래싱은 무난히 성공해 잘 될 거 같은 예감이 들었다. 배선을 어떻게 할지 모르겠는데 안내에 따라 GND를 연결하고 D0, D1에 핀을 연결했는데 키입력은 잘 되지만 노브는 동작하지 않는다. -> 나중에 알고 보니 멀티미디어 기능이 off상태였다.

2.오른쪽 칩이 D0, D1 핀을 안 쓰지만 핀맵에는 등록되어 있어 노브에 못 쓸 수도 있다. A 패드만 하나 남은 D3로 연결했는데 역시 안된다. 칩의 핀은 다음과 같이 연결했다. 칩에 GND가 세 개 있는데 왼쪽 위 4핀을 사용했고 D0, D3를 각각 A, B에 연결했다. 노브에는 S1, S2로 표기되어 있다.

3.처음 만든 소스가 한방에 될리는 만무하다. 소스 여기 저기를 수정하며 테스트 해 봤다. 이 조치를 취한 후 패드가 동작하기 시작했다. 문제는 멀티미디어 키 코드가 동작하지 않아서인데 좌우키로 바꾼 후 좌우로 돌리면 캐럿이 움직인다. 동작을 확인한 후 각 조치별로 어떤 의미가 있는지도 일일이 테스트해 봤다.

 

- ENCODER_RESOLUTIONS_RIGHT4로 지정했다. 이 값의 디폴트가 없을 수도 있을 듯 해 지정했는데 이 문장이 없으면 한번 돌릴 때 4번 키입력이 발생한다. 4로 해야 한번 돌릴 때 한번 키 입력으로 인식하는데 이 값이 제일 무난할 듯 하다.

- ENCODERS_PAD_A { } 식으로 왼쪽은 인코더가 없음을 명시했다. 이건 있으나 없으나 당장 차이는 없는데 왼쪽과 연결할 때는 달라질 수 있다.

- keymap.c의 키맵에 조건부 컴파일 지시가 붙어 있는데 이것 때문에 키맵의 정의되지 않을 수도 있어 제거했다. 넣고 다시 해 보니 있어도 상관 없다. 조건은 잘 걸리는데 sj26은 노브를 달기로 했으니 사실 굳이 조건부 컴파일할 필요는 없다.

- KC_VOLD, KC_VOLU보다 더 확인이 쉬운 KC_RIGHT, KC_LEFT로 바꾸었더니 비로소 동작한다. KC_A, KC_B도 잘 동작하고 KC_1, KC_2도 잘 동작하는데 멀티미디어 키는 안된다. KC_F24, KC_F23으로 일단 맵핑해 두고 소젯에서 받아 설정에 따라 키를 바꾸기로 한다. 외부 매크로 패드의 키맵핑을 쓰는 셈인데 차후 조정이 필요하다.

 

 핀은 3개 꽂혀 있는데 AB중 하나만 빠져도 둘 다 동작하지 않는다. 원리상 두 핀의 상태를 다 확인해야 방향을 알 수 있어서 그렇다. 전원 들어온 상태에서 핀을 뺐다 꽂으면 될 때도 있고 안될 때도 있는데 단순히 통전 테스트만 하니 핫 플러깅해도 될 거 같지만 위험하니 자재하자. 어쨌거나 동작에는 성공했다.

4.핀을 D0, D1으로 다시 복원해 보았다. 핀 바꿔 끼니 이 조합도 잘 된다. 그러나 왼쪽 키보드가 영향을 받을 거 같은데 둘 다 플래싱하여 연결해 봐야 정확히 알 수 있다. 왼쪽의 D0, D1은 펑션열에 연결되어 있어 당연히 못쓴다.

왼쪽이 영향을 받지 않는다면 오른쪽에 노브 하나만 두면 되지만 이러면 또 좌우 대칭이 아니라서 아쉽다. 굳이 두 개나 둘 필요는 없지만 한손 자판 때문에 좌우 대칭을 맞춰야 한다. 아니면 장애 종류에 따라 차별하게 된다. 공간이 남는다면 좌우에 하나씩 두고 볼륨, 이전/다음곡으로 기능 맵핑해서 쓰면 편리하고 활용성도 증가한다.

5.프마 아래쪽 LED 두 개의 납땜을 풀어 B0, D5 핀까지 활용해 보자.  Atmega32u칩은 26개의 핀이 있는데 프마는 18개만 제공하며 더 많은 핀을 쓰려면 틴지를 쓰면 되지만 돈이 더 든다. 프마는 두 핀을 LED 용으로 쓰는데 이걸 때면 핀 두 개 더 쓸 수 있다.

이게 되면 양쪽에 각각 노브를 달 수 있다. 칩을 인위적으로 건드린다는 면에서 추가 작업이 필요하고 납땜이 워낙 고난이도라 선뜻 내키지 않지만 시도는 해 봤다. 칩 묶어 놓고 저항을 떼 냈는데 열만 살짝 가하면 밀려서 잘 떨어진다. 여기에 선 두 개를 납땜한다.