SlideShare una empresa de Scribd logo
1 de 30
Descargar para leer sin conexión
用 Open Source 改造鍵盤
Kuo-tung Kao
簡介
● inwinstack
● Speaker in Taiwan
community
● OpenStack contributor
● kjellytw at gmail dot com
● http://kjelly.tw
鍵盤是什麼
鍵盤是什麼
改造鍵盤的目標
● CapLocs + hjkl => Left, Down, Up, Right
● 減少手臂的移動
鍵盤組成
● 鍵帽
● 鍵盤軸
○ cherry 紅軸
● 外殼
● 電路板
鍵盤觸發訊號的方法
● 薄膜:三層薄膜組成,中間為絕緣體。當上層薄
膜觸發下層薄膜時,產生訊號
● 機械:透過機械構造來觸發訊號
● 電容:壓下按鍵時,會改2片變電極間的距離,
藉此產生電容值的變化,進而觸發鍵盤訊號。
● 100%: 一般鍵盤
● 80%: 少掉右側的數字按鍵
● 60%: 少掉右側的數字按鍵和上下左右與
home end 等按鍵
● 其他:
今日要介紹的鍵盤
● Open source
○ 電路板
○ 韌體
● Custom programmable mechanical keyboard
今日要介紹的鍵盤
● GH60 (AMJ60)
● ergodox(-ez)
GH60
● http://blog.komar.be/projects/gh60-progra
mmable-keyboard/
● 60% 鍵盤
http://blog.komar.be/wp-content/uploads
/2016/05/gh60_revC_plain.zip
● 衍生版:AMJ60
● https://github.com/komar007/gh60
GH60
license:
CC-BY-SA 3.0
AMJ60
● GH60的衍生版
● 在台灣比較好買?
● https://github.com/kjelly/AMJ60
左側的 shift 長
鍵被我切成兩
個按鍵
右側的 shift 長
鍵被我切成兩
個按鍵
右側的
backspace 長
鍵被我切成兩
個按鍵
AMJ60 Keymap 程式碼 KC_7 是常數,若
用變數代替,則可
以動態按鍵
兩個 layer ,可用
特殊按鍵將鍵盤切
到這個 keymap
FN1 用來切換
layer
AMJ60 Keymap 程式碼
定義 FN1 功能為
暫時切到 layer 1
Ergodox(-ez)
● https://github.com/Ergodox-io/ErgoDox
● 我現在使用的鍵盤
● 開放電路圖與韌體
可程式化鍵盤的特殊功能
● Layer
○ 暫時切換 layer ACTION_LAYER_MOMENTARY(layer)
○ 永久切換 layer ACTION_LAYER_TOGGLE(layer)
○ 共 32 layers
● 長按是 shift ,按一下是 ~
○ ACTION_MODS_TAP_KEY(MOD_RSFT, KC_GRV)
● 長按是暫時切到 layer 2 ,按一下是 ;
○ ACTION_LAYER_TAP_KEY(2, KC_SCLN)
可程式化鍵盤的特殊功能
● 按一下與按住有不同意思
○ ACTION_MODS_TAP_KEY(MOD_RCTL, KC_ENT)
○ ACTION_LAYER_TAP_KEY(layer, key)
● 送出組合鍵
○ ACTION_MODS_KEY(MOD_LALT | MOD_LSFT,
KC_TAB)
○ ACTION_MODS(MOD_ALT | MOD_LSFT)
可程式化鍵盤的特殊功能
● 按住是暫時切換,按一下是永久切換 layer
○ ACTION_LAYER_TAP_TOGGLE(1)
● 一指神功
○ ACTION_MODS_ONESHOT(MOD_LSFT)
如何組裝一把鍵盤
● 外殼
● 電路板
● 選軸:紅青黑白
● 選鍵帽
● 焊接組裝
● 燒韌體
● Enjoy
燒韌體步驟
● 安裝編譯軟體的 library
○ gcc-avr
○ avr-libc
● 編譯
● 燒韌體(不同鍵盤燒韌體方法可能不一樣)
改造鍵盤 - 軟體解
● 目標:讓 Caps 變成類似 fn鍵,如 caps + f =>
PgDn; caps + hjkl => left, down, up, right;
caps + u => minus
● AutoHotkey
● Xmodmap + xbindings + xvkbd
● Linux keyboard driver
AutoHotkey
● The ultimate automation scripting language
for Windows.
xmodmap + xbindkeys + xdotools
● xmodmap is a utility for modifying keymaps
and pointer button mappings in Xorg.
● Xbindkeys is a program that allows to bind
commands to certain keys or key
combinations on the keyboard.
xmodmap
讓 Caps Lock
按鍵對應到
Hyper_L
讓 Hyper_L 對
應到 mod3
xbindkeysrc
改造鍵盤 - 驅動程式解
● http://elixir.free-electrons.com/linux/late
st/source/drivers/hid/usbhid/usbkbd.c
● http://elixir.free-electrons.com/linux/late
st/source/drivers/input/keyboard/atkbd.c
● 還沒成功
Q & A

Más contenido relacionado

Más de kao kuo-tung (9)

Async: ways to store state
Async:  ways to store stateAsync:  ways to store state
Async: ways to store state
 
Openstack 簡介
Openstack 簡介Openstack 簡介
Openstack 簡介
 
Docker 原理與實作
Docker 原理與實作Docker 原理與實作
Docker 原理與實作
 
那些年,我們一起看的例外
那些年,我們一起看的例外那些年,我們一起看的例外
那些年,我們一起看的例外
 
Python 中 += 與 join比較
Python 中 += 與 join比較Python 中 += 與 join比較
Python 中 += 與 join比較
 
Garbage collection 介紹
Garbage collection 介紹Garbage collection 介紹
Garbage collection 介紹
 
Python 如何執行
Python 如何執行Python 如何執行
Python 如何執行
 
C python 原始碼解析 投影片
C python 原始碼解析 投影片C python 原始碼解析 投影片
C python 原始碼解析 投影片
 
recover_pdb 原理與介紹
recover_pdb 原理與介紹recover_pdb 原理與介紹
recover_pdb 原理與介紹
 

用 Open source 改造鍵盤