📄 us_qwerty_scalable_clean6.kbs
字号:
## Keyboard source for the US 'qwerty' layout. This is a fairly generic# keyboard that should work at any screen resolution. It draws the keyboard# with vector graphics, using gropnode coordinate mapping to have the server# scale the keyboard to fit the screen## This keyboard works nicely at 320x240 and 240x320. It is a little tight# but still fully usable at 160x240. At 160x160 is is quite mushed and probably# not very fun to use.## Keyboard source is in the form of a perl script that uses functions# built into kbcompile.pl to generate the keyboard data.## This code is released into the public domain. Feel free to use it in whole# or in part for your own keyboard layouts.## -- Micah Dowty <micahjd@users.sourceforge.net>#$option{'side'} = PG_S_BOTTOM;$option{'size'} = 25;$option{'sizemode'} = PG_SZMODE_PERCENT;$option{'path'} = './img/';####################################### Subroutinessub initpattern { newpattern; clear; setmapping(0,0,$width = 50,4,PG_MAP_SCALE); setcolor(0xFFFFFF); rect(0,0,$width,4); setcolor(0); font("Clean", 6, PG_FSTYLE_FIXED); frame(0,0,$width,4); $defaultpat = $defaultmods = 0;}sub keyrow { ($num,$start,$end) = @_; slab(0,$num,$width); drawkey(0,$num,$start,$grid[$j++]); for ($i=$start;$i<=$end;$i+=4) { bar($i,$num,1); drawkey($i,$num,4,$grid[$j++]); } bar($i,$num,1); drawkey($i,$num,$width-$end,$grid[$j++]);}sub addkey { my ($pos, $width, $height) = @_; drawkey ($pos, $height, $width, $grid [$j++]); $pos += $width; bar ($pos, $height, 1); return $pos;}sub drawgrid { $j = 0; @grid = @_; keyrow(0,6,42); keyrow(1,7,43); keyrow(2,9,41); # Spacebar messes up the last row slab(0,3,$width); $pos = 0; $pos = addkey ($pos, 6, 3); $pos = addkey ($pos, 4, 3); $pos = addkey ($pos, 4, 3); $pos = addkey ($pos, 13, 3); $pos = addkey ($pos, 5, 3); $pos = addkey ($pos, 5, 3); $pos = addkey ($pos, 5, 3); $pos = addkey ($pos, 8, 3);# drawkey(0,3,6,$grid[$j++]);# bar(6,3,1);# drawkey(6,3,4,$grid[$j++]);# bar(10,3,1);# drawkey(10,3,4,$grid[$j++]);# bar(14,3,1);# drawkey(14,3,20,$grid[$j++]);# bar(34,3,1);# drawkey(34,3,4,$grid[$j++]);# bar(38,3,1);# drawkey(38,3,4,$grid[$j++]);# bar(42,3,1);# drawkey(42,3,4,$grid[$j++]);# bar(46,3,1);# drawkey(46,3,4,$grid[$j++]);}sub drawkey { my ($x,$y,$w,$keycode,$h) = @_; ($name,$key,$pgkey,$mods,$pat) = split /:/,$keycode; $name =~ s/colon/:/; $key =~ s/colon/:/; $key = chr(substr($key,1)) if (length($key) > 1 && $key=~/^#/); $mods = $defaultmods if (!defined $mods); $mods = eval($mods); $pat = $defaultpat if (!defined $pat); $h = 1 if (!defined $h); if (defined $name && $name ne "") { text($x,$y,$name); } hotspot($x,$y,$w,$h,0,ord($key),$pgkey,$mods,$pat);} ####################################### Main pattern (1)initpattern;drawgrid("->|:\t:PGKEY_TAB", "q:q:PGKEY_q", "w:w:PGKEY_w", "e:e:PGKEY_e", "r:r:PGKEY_r", "t:t:PGKEY_t", "y:y:PGKEY_y", "u:u:PGKEY_u", "i:i:PGKEY_i", "o:o:PGKEY_o", "p:p:PGKEY_p", "-:-:PGKEY_MINUS",# "del:\b:PGKEY_BACKSPACE", "cap::::3", "a:a:PGKEY_a", "s:s:PGKEY_s", "d:d:PGKEY_d", "f:f:PGKEY_f", "g:g:PGKEY_g", "h:h:PGKEY_h", "j:j:PGKEY_j", "k:k:PGKEY_k", "l:l:PGKEY_l", ";:;:PGKEY_SEMICOLON", "':':PGKEY_QUOTE",# "ret:\r:PGKEY_RETURN", "shf::::2", "z:z:PGKEY_z", "x:x:PGKEY_x", "c:c:PGKEY_c", "v:v:PGKEY_v", "b:b:PGKEY_b", "n:n:PGKEY_n", "m:m:PGKEY_m", " ,:,:PGKEY_COMMA", " .:.:PGKEY_PERIOD", "/:/:PGKEY_SLASH",# "shf::::2", "ctl::::4", "#::::5", "\@::::6", ": :PGKEY_SPACE",# "/\\::PGKEY_UP",# "\\/::PGKEY_DOWN", "<-::PGKEY_LEFT", "->::PGKEY_RIGHT", "<x|:\b:PGKEY_BACKSPACE", "ret:\r:PGKEY_RETURN");####################################### Shift pattern (2)initpattern;# Jump back to the normal pattern after a keypress$defaultpat = 1;# Shift modifier, of course$defaultmods = PGMOD_SHIFT;drawgrid(" ->|:\t:PGKEY_TAB", " Q:Q:PGKEY_q", " W:W:PGKEY_w", " E:E:PGKEY_e", " R:R:PGKEY_r", " T:T:PGKEY_t", " Y:Y:PGKEY_y", " U:U:PGKEY_u", " I:I:PGKEY_i", " O:O:PGKEY_o", " P:P:PGKEY_p", " _:_:PGKEY_UNDERSCORE",# "del:\b:PGKEY_BACKSPACE", " cap::::3", " A:A:PGKEY_a", " S:S:PGKEY_s", " D:D:PGKEY_d", " F:F:PGKEY_f", " G:G:PGKEY_g", " H:H:PGKEY_h", " J:J:PGKEY_j", " K:K:PGKEY_k", " L:L:PGKEY_l", " colon:colon:PGKEY_COLON", " \":\":PGKEY_QUOTEDBL",# "ret:\r:PGKEY_RETURN", " shf", " Z:Z:PGKEY_z", " X:X:PGKEY_x", " C:C:PGKEY_c", " V:V:PGKEY_v", " B:B:PGKEY_b", " N:N:PGKEY_n", " M:M:PGKEY_m", " <:<:PGKEY_LESS", " >:>:PGKEY_GREATER", " ?:?:PGKEY_QUESTION",# "shf", " ctl::::4", " #::::5", "\@::::6", ": :PGKEY_SPACE",# "/\\::PGKEY_UP",# "\\/::PGKEY_DOWN", " <-::PGKEY_LEFT", " ->::PGKEY_RIGHT", "<x|:\b:PGKEY_BACKSPACE", " ret:\r:PGKEY_RETURN");# Show the shift keys as invertedsetlgop(PG_LGOP_XOR);setcolor(0xFFFFFF);rect(0,2,9,1);#rect($width-9,2,9,1);####################################### Capslock pattern (3)initpattern;# Shift modifier, of course$defaultmods = PGMOD_SHIFT;drawgrid(" ->|:\t:PGKEY_TAB", " Q:Q:PGKEY_q", " W:W:PGKEY_w", " E:E:PGKEY_e", " R:R:PGKEY_r", " T:T:PGKEY_t", " Y:Y:PGKEY_y", " U:U:PGKEY_u", " I:I:PGKEY_i", " O:O:PGKEY_o", " P:P:PGKEY_p", " -:-:PGKEY_MINUS",# "del:\b:PGKEY_BACKSPACE", " cap::::1", " A:A:PGKEY_a", " S:S:PGKEY_s", " D:D:PGKEY_d", " F:F:PGKEY_f", " G:G:PGKEY_g", " H:H:PGKEY_h", " J:J:PGKEY_j", " K:K:PGKEY_k", " L:L:PGKEY_l", " ;:;:PGKEY_SEMICOLON", " ':':PGKEY_QUOTE",# "ret:\r:PGKEY_RETURN", " shf::::1", " Z:Z:PGKEY_z", " X:X:PGKEY_x", " C:C:PGKEY_c", " V:V:PGKEY_v", " B:B:PGKEY_b", " N:N:PGKEY_n", " M:M:PGKEY_m", " ,:,:PGKEY_COMMA", " .:.:PGKEY_PERIOD", " /:/:PGKEY_SLASH",# "shf::::1", " ctl::::4", " #::::5", "\@::::6", ": :PGKEY_SPACE",# "/\\::PGKEY_UP",# "\\/::PGKEY_DOWN", " <-::PGKEY_LEFT", " ->::PGKEY_RIGHT", "<x|:\b:PGKEY_BACKSPACE", " ret:\r:PGKEY_RETURN");# Show the caps lock as invertedsetlgop(PG_LGOP_XOR);setcolor(0xFFFFFF);rect(0,1,7,1);####################################### Control pattern (4)initpattern;$defaultpat = 1;$defaultmods = PGMOD_CTRL;drawgrid(" ->|:\t:PGKEY_TAB", "^q:#17:PGKEY_q", "^w:#23:PGKEY_w", "^e:#5:PGKEY_e", "^r:#18:PGKEY_r", "^t:#20:PGKEY_t", "^y:#25:PGKEY_y", "^u:#21:PGKEY_u", "^i:#9:PGKEY_i", "^o:#15:PGKEY_o", "^p:#16:PGKEY_p", " -:-:PGKEY_MINUS",# "del:\b:PGKEY_BACKSPACE", " cap::::3", "^a:#1:PGKEY_a", "^s:#19:PGKEY_s", "^d:#4:PGKEY_d", "^f:#6:PGKEY_f", "^g:#7:PGKEY_g", "^h:#8:PGKEY_h", "^j:#10:PGKEY_j", "^k:#11:PGKEY_k", "^l:#12:PGKEY_l", " ;:;:PGKEY_SEMICOLON", " ':':PGKEY_QUOTE",# "ret:\r:PGKEY_RETURN", " shf::::2", "^z:#26:PGKEY_z", "^x:#24:PGKEY_x", "^c:#3:PGKEY_c", "^v:#22:PGKEY_v", "^b:#2:PGKEY_b", "^n:#14:PGKEY_n", "^m:#13:PGKEY_m",# To send a CTRL-ALT-m# "^m:#13:PGKEY_m:PGMOD_CTRL | PGMOD_ALT", " ,:,:PGKEY_COMMA", " .:.:PGKEY_PERIOD", " /:/:PGKEY_SLASH",# "shf::::2", " ctl", " #::::5", "\@::::6", ": :PGKEY_SPACE",# "/\\::PGKEY_UP",# "\\/::PGKEY_DOWN", " <-::PGKEY_LEFT", " ->::PGKEY_RIGHT", "<x|:\b:PGKEY_BACKSPACE", " ret:\r:PGKEY_RETURN");# Show the ctrl as invertedsetlgop(PG_LGOP_XOR);setcolor(0xFFFFFF);rect(0,3,6,1);####################################### Numbers pattern (5)initpattern;# Control keysbar(6,0,4);slab(0,1,6);slab(0,2,6);slab(0,3,6);drawkey(0,0,6," ins::PGKEY_INSERT");drawkey(0,1,6," ->|:\t:PGKEY_TAB");drawkey(0,2,6," <x|:\b:PGKEY_BACKSPACE");#drawkey(0,3,7," ret:\r:PGKEY_KP_ENTER");drawkey(0,3,6," abc::::1");setcolor (0x0);# Number gridbar(6,0,4);bar(12,0,3);bar(18,0,4);bar(24,0,4);slab(6,1,18);slab(6,2,18);slab(6,3,18);drawkey(6,0,6," 7:7:PGKEY_KP7");drawkey(12,0,6," 8:8:PGKEY_KP8");drawkey(18,0,6," 9:9:PGKEY_KP9");drawkey(6,1,6," 4:4:PGKEY_KP4");drawkey(12,1,6," 5:5:PGKEY_KP5");drawkey(18,1,6," 6:6:PGKEY_KP6");drawkey(6,2,6," 1:1:PGKEY_KP1");drawkey(12,2,6," 2:2:PGKEY_KP2");drawkey(18,2,6," 3:3:PGKEY_KP3");drawkey(6,3,12," 0:0:PGKEY_KP0");drawkey(18,3,6," .:.:PGKEY_KP_PERIOD");# Arithmetic keysbar(27,0,4);bar(31,0,4);bar(35,0,4);slab(27,1,8);slab(27,2,8);slab(27,3,8);drawkey(27,0,4," +:+:PGKEY_KP_PLUS");drawkey(27,1,4," -:-:PGKEY_KP_MINUS");drawkey(27,2,4," colon:colon:PGKEY_COLON");drawkey(27,3,4," =:=:PGKEY_KP_EQUALS");drawkey(31,0,4," *:*:PGKEY_KP_MULTIPLY");drawkey(31,1,4," /:/:PGKEY_KP_DIVIDE");drawkey(31,2,4," ^:^:PGKEY_6:PGMOD_SHIFT");drawkey(31,3,4," %:%:PGKEY_5:PGMOD_SHIFT");# Hex keysbar (35, 0, 4);bar (40, 0, 4);bar (45, 0, 4);slab (35, 1, 15);slab (35, 2, 15);drawkey(35,0,5," a:a:PGKEY_a:PGMOD_SHIFT");drawkey(40,0,5," b:b:PGKEY_b:PGMOD_SHIFT");drawkey(45,0,5," c:c:PGKEY_c:PGMOD_SHIFT");drawkey(35,1,5," d:d:PGKEY_d:PGMOD_SHIFT");drawkey(40,1,5," e:e:PGKEY_e:PGMOD_SHIFT");drawkey(45,1,5," f:f:PGKEY_f:PGMOD_SHIFT");# Navigation gridslab (35, 3, 15);drawkey(35,2,5," pu::PGKEY_PAGEUP");drawkey(40,2,5," /\\::PGKEY_UP");drawkey(45,2,5," pd::PGKEY_PAGEDOWN");drawkey(35,3,5," <-::PGKEY_LEFT");drawkey(40,3,5," \\/::PGKEY_DOWN");drawkey(45,3,5," ->::PGKEY_RIGHT");#bar (46, 0, 4);#slab (46, 1, 4);#slab (46, 2, 4);#slab (46, 3, 4);#drawkey(46,0,4," h::PGKEY_HOME");#drawkey(46,1,4," pu::PGKEY_PAGEUP");#drawkey(46,2,4," pd::PGKEY_PAGEDOWN");#drawkey(46,3,4," e::PGKEY_END");####################################### Symbols pattern (6)initpattern;$defaultpat = 1;drawgrid(" esc:\e:PGKEY_ESCAPE", " 1:1:PGKEY_1", " 2:2:PGKEY_2", " 3:3:PGKEY_3", " 4:4:PGKEY_4", " 5:5:PGKEY_5", " 6:6:PGKEY_6", " 7:7:PGKEY_7", " 8:8:PGKEY_8", " 9:9:PGKEY_9", " 0:0:PGKEY_0", " |:|:124",# "\\:\\:PGKEY_BACKSLASH", " ~:~:126", " !:!:PGKEY_1:PGMOD_SHIFT", "\@:\@:PGKEY_2:PGMOD_SHIFT", " #:#:PGKEY_3:PGMOD_SHIFT", " \$:\$:PGKEY_4:PGMOD_SHIFT", " %:%:PGKEY_5:PGMOD_SHIFT", " ^:^:PGKEY_6:PGMOD_SHIFT", " &:&:PGKEY_7:PGMOD_SHIFT", " *:*:PGKEY_8:PGMOD_SHIFT", " (:(:PGKEY_9:PGMOD_SHIFT", " ):):PGKEY_0:PGMOD_SHIFT", " `:`:PGKEY_BACKQUOTE",# "ret:\r:PGKEY_RETURN", " shf::::2", " {:{:123", " }:}:125", " [:[:PGKEY_LEFTBRACKET", " ]:]:PGKEY_RIGHTBRACKET", " +:+:PGKEY_PLUS", " =:=:PGKEY_EQUALS", " ?:?:PGKEY_QUESTION", " ,:,:PGKEY_COMMA", " .:.:PGKEY_PERIOD",# "/:/:PGKEY_SLASH", " \\:\\:PGKEY_BACKSLASH",# "shf::::2", " ctl::::4", " #::::5", "\@", ": :PGKEY_SPACE",# "/\\::PGKEY_UP",# "\\/::PGKEY_DOWN", " <-::PGKEY_LEFT", " ->::PGKEY_RIGHT", "<x|:\b:PGKEY_BACKSPACE", " ret:\r:PGKEY_RETURN");# Show the symbol button as invertedsetlgop(PG_LGOP_XOR);setcolor(0xFFFFFF);rect(10,3,4,1);### The End ###
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -