QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2485|回复: 0
打印 上一主题 下一主题

使用html画一个键盘

[复制链接]
字体大小: 正常 放大

1189

主题

4

听众

2934

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-4-27 10:42 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
  1. <!DOCTYPE html>0 r- b* @4 ]2 @9 ?9 Z6 k8 u1 t
  2. <html lang="en">; x2 B\" ^. y6 L* L% D9 z/ B$ A
  3. <head>: n$ d: I, E3 ?- J\" D4 Z
  4.   <meta charset="UTF-8">8 V$ Q0 F$ i% `! z\" e, p
  5.   <meta http-equiv="X-UA-Compatible" content="IE=edge">
    ; ]1 w* x' C, S; E- g
  6.   <meta name="viewport" content="width=device-width, initial-scale=1.0">
    5 R# h  k' U8 l. ]6 c: o
  7.   <link rel="stylesheet" >
    2 F+ {( S  k* I0 g3 c\" j
  8.   <title>vector examples Keyboard</title>
      [: P% X/ D$ `0 ~3 \
  9. </head># f+ i9 ]/ t* Z% h# J& v
  10. <body>
    / ~  H% P6 c' g# M) k
  11.   <div id="keyboard"></div>; o, Z* L\" J  F' u: V7 q
  12.   <!-- <script type="module" src="./Keyboard.js"></script> -->7 s$ O( L2 {$ N% E; z' ?
  13.   <script type="module" src="./temp.js"></script>+ e9 D8 v8 C0 w* _; c+ r+ c' ]1 V
  14. </body>
    2 O) B' l+ ~, k- e0 d% K  u
  15. </html>
    ! a8 O0 L2 V- A. ^( I\" P
复制代码
  1. import Interactive from "https://vectorjs.org/interactive.js";8 }, k% F* D( ?) v
  2. console.log("Interactive", Interactive);\" b; o3 v) q- k\" i, C\" k' i
复制代码
  1. /**$ o5 a5 \1 }# O% Q0 ?! g8 N6 m& S
  2. * [url=home.php?mod=space&uid=634908]@title[/url] Keyboard
    9 s' v1 D+ u, `# {* \
  3. * @description This interactive demonstrates how key board input can be used to add interactivity.
    & l: v# c% A1 g
  4. * @tags [input]% Z6 `! W# v) g) H( Y# z; h- D
  5. */
    , U3 N0 A' Q; b' o2 z  C& d/ C
  6. // import { Interactive, getScriptName } from "../../index.js";
    / G# |. L\" p3 s3 I: k
  7. // let interactive = new Interactive(getScriptName());
    ' `: b0 X; j7 p& O. V* D
  8. import Interactive from "https://vectorjs.org/interactive.js";! d  o( q3 ^4 R) o! P6 v& j
  9. let interactive = new Interactive("keyboard");# G\" j* ]3 _8 O$ ]! f+ o
  10. interactive.width = 768;
    1 e& X3 p& v& v) d+ y
  11. interactive.height = 300;3 k; {& ~/ ~- A\" w3 B) A
  12. interactive.border = true;
    * Q: b  l# c+ |
  13. let buffer = "";! ]; g% [8 l# }\" b
  14. let keys = [* Y+ ^/ J. t' s. Q
  15.   [
    - T+ _8 e3 b( M* n
  16.     "`",# [4 a0 H/ O1 m
  17.     "1",
    6 ]; o& M7 T5 z0 x- g# m- X
  18.     "2",
    ) F! ?% K/ l4 B1 I
  19.     "3",
    . o, f\" i$ d6 Z4 I
  20.     "4",  y2 Z/ i+ F+ ?+ u  s+ B
  21.     "5",+ X9 j$ D9 ~; N4 Q) L; X\" F
  22.     "6",
    + B  q& J+ |0 S$ p2 a
  23.     "7",
    : D) S' p* D# _/ K7 Y
  24.     "8",/ V* \% I8 f; g/ C) u# }+ C2 @6 x; I
  25.     "9",3 F( v8 G% \& I8 r8 \$ U# ?
  26.     "0",' p. r5 S+ e5 p1 {- B
  27.     "-",9 i0 ?. ?0 d4 r6 L, n
  28.     "=",0 u) S1 E' F- A4 ~& w0 `
  29.     "Backspace",, `2 h& @; ]4 x7 v& l
  30.   ],
    4 \0 t# W2 C% |1 d1 q& b2 n
  31.   ["tab", "q", "w", "e", "r", "t", "y", "u", "i", "o", "p", "[", "]", "\\"],) B3 q/ b6 P* T7 M; B) y: C
  32.   ["CapsLock", "a", "s", "d", "f", "g", "h", "j", "k", "l", ";", "'", "Enter"],
    6 ~* U0 }, ?3 X/ I
  33.   ["Shift", "z", "x", "c", "v", "b", "n", "m", ",", ".", "/", "Shift"],# ^' o3 T8 f( ?! ?, Q
  34.   [# h0 p. N  \. |: ^+ H- L9 e: _4 X$ F
  35.     "fn",
    / K7 Z) T& k, F  u: Y* V3 Z' j
  36.     "Control",
    ; X4 w$ D. f% |$ F* q
  37.     "Alt",8 E2 L+ k; I\" e0 {5 o7 p* B
  38.     "Meta",
    # f% l- a4 q: |+ v5 K
  39.     " ",' k1 q4 g; a8 y
  40.     "Meta",
    ( z/ a( H  w! D0 a3 B* b$ Z# F7 V
  41.     "Alt",/ w6 x  `1 q7 S: |3 f( b
  42.     "ArrowLeft",
    7 s2 C* B/ L9 C1 |7 M& `8 V3 A, J
  43.     "ArrowUp",
    , X/ s; N  L( d* w& ^* ]& E
  44.     "ArrowDown",
    . ^# b  m% D+ Y* z* v' M
  45.     "ArrowRight",
    6 ]; M+ l% y( p, ^: _6 w
  46.   ],
    % @/ }# E  m8 W2 e$ f
  47. ];8 m+ s3 f  `- }3 R1 M4 H
  48. let buttons = [];, ], {8 e& ^4 Z5 r* b
  49. let keycodes = {6 X6 U  W) {5 s' s\" H
  50.   0: { Symbol: 0, Shift: ")" },
    0 o0 |+ i6 }% @
  51.   1: { Symbol: 1, Shift: "!" },8 i# ~0 j; Q7 g; k* g: x. g
  52.   2: { Symbol: 2, Shift: "@" },
    # [0 o) R5 r6 G, K$ t
  53.   3: { Symbol: 3, Shift: "#" },
    1 Z( J& K5 K3 J5 K$ p
  54.   4: { Symbol: 4, Shift: "$" },5 a; Z9 U5 H( s) C( ^7 q
  55.   5: { Symbol: 5, Shift: "%" },
    9 ?- @4 ~7 D' J$ @  |# \8 P# P- C
  56.   6: { Symbol: 6, Shift: "^" },
    . [* Z6 a) o  h\" V2 F
  57.   7: { Symbol: 7, Shift: "&" },4 U7 T! M$ n5 I: n( V$ ~9 d
  58.   8: { Symbol: 8, Shift: "*" },
    3 z' E# T2 }/ h2 d, Y3 E$ |6 T
  59.   9: { Symbol: 9, Shift: "(" },
    0 L8 _/ l9 V) y* y; q0 K6 Z
  60.   a: { Symbol: "a", Shift: "A" },: Z9 ]( K- ^\" t1 e: K& a/ ^  L2 q* K
  61.   b: { Symbol: "b", Shift: "B" },
    8 Q, b\" {! X4 L9 r
  62.   c: { Symbol: "c", Shift: "C" },4 Y' Y5 }  U3 f2 }
  63.   d: { Symbol: "d", Shift: "D" },
    # t+ H% j. {- }( B, q, C: p
  64.   e: { Symbol: "e", Shift: "E" },
    5 v/ U6 s7 c7 f- T\" {+ q\" k
  65.   f: { Symbol: "f", Shift: "F" },
    0 I+ p3 h( y0 N6 T9 c& N: i2 I
  66.   g: { Symbol: "g", Shift: "G" },4 I2 A$ e6 e; I1 r9 p% g
  67.   h: { Symbol: "h", Shift: "H" },3 L8 t9 R$ R4 U/ T
  68.   i: { Symbol: "i", Shift: "I" },( V7 Z2 I8 V1 ?. P$ k
  69.   j: { Symbol: "j", Shift: "J" },
    , M& B2 M% L3 k  [
  70.   k: { Symbol: "k", Shift: "K" },+ b% T: Z: ]0 d$ A% D! K' C
  71.   l: { Symbol: "l", Shift: "L" },
    6 @3 p  F1 X# I
  72.   m: { Symbol: "m", Shift: "M" },; b/ l7 z' A- L
  73.   n: { Symbol: "n", Shift: "N" },
    ' I# q4 G6 \9 u* |7 }7 j
  74.   o: { Symbol: "o", Shift: "O" },
    5 Y0 Q\" P; ?* w) V; O, ^$ R
  75.   p: { Symbol: "p", Shift: "P" },
    6 D+ ]+ ?\" e4 g& X$ L6 \' p
  76.   q: { Symbol: "q", Shift: "Q" },
    ; o4 @8 s2 n* U& a0 S6 h+ C: I: @
  77.   r: { Symbol: "r", Shift: "R" },
    ' z& F8 Q* A+ p( w+ z3 k- }
  78.   s: { Symbol: "s", Shift: "S" },
    9 |  {6 U$ m9 b7 {# L
  79.   t: { Symbol: "t", Shift: "T" },
    ( t, I  d  w* b# D0 J& Q+ u
  80.   u: { Symbol: "u", Shift: "U" },
    1 E& c( P% R3 k, [( N3 z
  81.   v: { Symbol: "v", Shift: "V" },
    ' L5 D7 j0 Q9 ~/ z
  82.   w: { Symbol: "w", Shift: "W" },
    3 {0 X3 R4 n0 k4 `# Q. m\" o# C  g
  83.   x: { Symbol: "x", Shift: "X" },
    . f; U2 |; A1 \  r0 o
  84.   y: { Symbol: "y", Shift: "Y" },7 y% m, b- H8 w: o8 k
  85.   z: { Symbol: "z", Shift: "Z" },& b- L$ C6 g3 {' Y6 T% o; S/ b
  86.   "`": { Symbol: "`", Shift: "~" },! S$ c# u# N0 L# y* \
  87.   "-": { Symbol: "-", Shift: "_" },; Q( L* N: r3 ]2 G4 q2 y  P
  88.   "=": { Symbol: "=", Shift: "+" },
    8 C0 @; X1 ?) Y, [4 R! f
  89.   ";": { Symbol: ";", Shift: ":" },
    7 K: m4 c% H\" c\" g9 c+ J- [: c
  90.   "'": { Symbol: "'", Shift: '"' },
    / }4 X2 g\" {. F\" G& ^
  91.   "[": { Symbol: "[", Shift: "{" },
    # y. K( x# \  @* ^: Z. g! Y
  92.   "]": { Symbol: "]", Shift: "}" },! W0 R0 ~6 Y+ |! \) }
  93.   "\\": { Symbol: "\\", Shift: "|" },
    $ @4 I% T- |0 o+ @8 V; N
  94.   ",": { Symbol: ",", Shift: "<" },, t; D  C- r4 p2 C
  95.   ".": { Symbol: ".", Shift: ">" },# b4 u4 {. _7 |( H
  96.   "/": { Symbol: "/", Shift: "?" },; p% L# N3 s5 }8 m0 K
  97.   Backspace: { Symbol: "⌫", Shift: "" },5 \, w/ u: y0 F: T( U) y3 N
  98.   tab: { Symbol: "  ", Shift: "" },
    - g$ C/ P2 o  _! \
  99.   CapsLock: { Symbol: "⇪", Shift: "" },
    ! m- B/ ^( b/ Z4 u& l
  100.   Shift: { Symbol: "⇧", Shift: "" },  L\" z1 N6 O, P9 m4 g
  101.   Enter: { Symbol: "⏎", Shift: "" },/ L$ w: r: R9 [- ?* S
  102.   Control: { Symbol: "⌃", Shift: "" },+ ]# S\" I\" \4 R# g$ _
  103.   Alt: { Symbol: "Alt", Shift: "" },
    ; K6 h9 [1 x) j4 S0 d6 y9 K4 Y
  104.   Meta: { Symbol: "⌘", Shift: "" },2 }3 K- K6 ]9 m; [7 Q5 \
  105.   ArrowLeft: { Symbol: "←", Shift: "" },
    4 ]. n' O- w1 T2 i8 e
  106.   ArrowUp: { Symbol: "↑", Shift: "" },$ G4 S/ B' y\" L) G. Y7 S5 H
  107.   ArrowDown: { Symbol: "↓", Shift: "" },
    + S9 w. C1 j8 L: ~
  108.   ArrowRight: { Symbol: "→", Shift: "" },
    # W( j7 M  D3 y  N7 G7 G
  109.   " ": { Symbol: " ", Shift: "" },5 x) v$ {6 m* c0 s+ S7 r5 M- Y
  110. };
    3 D* V* P7 D\" f4 F& G& t$ ~2 J: h
  111. let buttonMap = new Map();
      d; C\" p/ h/ V
  112. let height = 32;' i! H* N$ Z; K0 ^7 C
  113. let margin = 8;, B4 G4 P- n! i  k+ }+ W6 b
  114. let capslock = interactive.button(0, 0, keycodes["CapsLock"].Symbol);3 l& z. t& c  C8 P2 |; v* T0 M/ N
  115. let shift = interactive.button(0, 0, keycodes["Shift"].Symbol);
    + k: E$ t  ^& z# S1 r/ B5 t
  116. for (let row = 0; row < keys.length; row++) {
    3 L3 c9 Q2 W# s\" r7 T. v
  117.   let x = 32;2 \7 a1 {6 o& ?. S) X
  118.   let prev;8 C\" n  V( z: n9 f
  119.   for (let i = 0; i < keys[row].length; i++) {$ ~; ?* e$ a, C
  120.     let key = keys[row][i];: s2 |3 g* h$ g5 ^% ^
  121.     let width = 32;
    ! a, D, `8 k6 P6 ~; t# i2 U5 t3 f
  122.     let button;
    \" S0 m% }2 b/ a) F
  123.     switch (key) {- T/ V- J: Z' J3 f, G, `( q
  124.       case "CapsLock":
    \" y& U: G& J1 z7 j9 _
  125.         button = capslock;
    ) X6 \5 l3 ?5 @
  126.         width = 64;5 B2 J1 K* [8 Q/ N6 y2 a
  127.         break;' S/ D+ |, A! E. c, j7 K9 {
  128.       case "Shift":) ~4 i* Z1 Q# h3 ~; l* x
  129.         if (shift.x === 0) {# i% J) \* i; a% T  m8 ]7 i2 l
  130.           button = shift;& h, M' w  Q2 G, h- ~7 t
  131.         } else {
    0 h- ?6 s) j$ U+ ^8 k
  132.           button = interactive.button(, U- q$ O$ \( o6 a7 {5 D6 m& d0 x
  133.             0,
    \" p5 e8 k7 n3 w& z; Q) H
  134.             0,
    0 l4 X3 d- r% u. [
  135.             keycodes[key] != undefined ? keycodes[key].Symbol : key
    # \' X! @2 |' s4 ]) l- M) K
  136.           );  n0 ~9 c6 g( D( ^) J* r6 d0 [: I
  137.         }# [, u3 A8 s# I9 t
  138.         width = 90;$ Y# o5 W5 B( [, j: k
  139.         break;
    & x8 b5 b+ ^- R# ~* P3 s6 ]6 G
  140.       case "tab":* ~/ R( T* S( H$ }& @. s
  141.         width = 50;- N; `6 ~3 p9 Z+ R9 f, f. P: {7 v4 R
  142.         button = interactive.button(
    / K/ s3 i& g, j# N: a' J4 a8 T; ~4 V
  143.           0,
    / ^5 R8 @# I) {0 b! [\" [5 V, O9 z, }
  144.           0,
    4 v, S2 [4 Y7 m% [
  145.           keycodes[key] != undefined ? keycodes[key].Symbol : key3 s( _6 |6 @\" U% D, I
  146.         );( X7 a4 K. }+ E* g, q+ N: T* N
  147.         break;. i( N! ~, x; n. B& u1 ?1 h0 J
  148.       case " ":% W. u7 p$ z3 \& Z+ m% ]- s
  149.         width = 176;: I8 w* J/ v\" j: t
  150.         button = interactive.button(
    0 a1 B7 e, N+ o% H+ t
  151.           0,
    2 B& ^. Y) p  M9 G\" E8 s6 f
  152.           0,2 m) e/ p! U3 W/ V8 p
  153.           keycodes[key] != undefined ? keycodes[key].Symbol : key- ]+ L# t1 M8 u  ^2 T/ f' {$ k
  154.         );
    . J7 Q, S\" h) `* @) d+ M
  155.         break;$ c9 }0 T& \+ W/ G8 w! h8 z5 a8 f: \/ k
  156.       case "Meta":
    0 i9 |% @5 m/ @% e( B) k
  157.         width = 50;
    8 F\" R3 a$ P% ?* @- m; D4 y
  158.         button = interactive.button(
    8 \) Z& e( A& G\" |
  159.           0,- M* K0 Q# e  c
  160.           0,% @+ z5 A\" P0 F4 Y; r: e$ h
  161.           keycodes[key] != undefined ? keycodes[key].Symbol : key; z  B6 X- J( \; R2 j% V
  162.         );7 e, d6 v( L: Y- T\" a
  163.         break;+ r1 l% o9 Q; z& k# G4 w. d
  164.       default:1 I4 e3 F4 ^$ I8 W2 I- U
  165.         button = interactive.button(3 K# s! i9 i# ]\" f- E0 v
  166.           0,
    7 d% {8 q2 [* o2 I0 h
  167.           0,- G6 k! ^  j, d+ e  \
  168.           keycodes[key] != undefined ? keycodes[key].Symbol : key  S: e# e$ [/ g+ D\" `$ M* I
  169.         );3 a' z# |6 W- x5 y
  170.         if (keycodes[key] != undefined) {: \% Q+ Z$ s# V4 ~8 }
  171.           if (keycodes[key].Shift != "") {
    : @) J( I$ [2 C
  172.             button.addDependency(shift, capslock);
    4 M5 ?+ H5 n, X7 g
  173.             button.update = () => {! S! J1 Y8 X7 H4 {  `7 [
  174.               if (shift.active || capslock.active) {& j2 v' h2 g. B) L! F1 \
  175.                 button.label.contents = keycodes[key].Shift;
    1 i# [5 T. j6 x! G. F7 j' D
  176.               } else {% W5 X( i) p8 J0 x! q
  177.                 button.label.contents = keycodes[key].Symbol;% Q# E: I8 |8 C
  178.               }. a: V, {* ?9 K
  179.             };
    6 x  d7 N* R3 O8 ]3 _- ~
  180.           }9 b9 g0 b9 _  @$ [, N1 `\" q0 P
  181.         }
    0 W7 T& o. m# Q6 a. U, F
  182.     }* r9 }9 l; n. A; b1 T
  183.     button.x = x;
    ( W' J7 c\" `: p' R* l) ]% `' X
  184.     button.y = 64 + row * (height + margin);* I1 S! P0 B9 F# R4 [
  185.     if (button.box.width < width) {
    5 @/ _$ _6 O* C- w) p  f) q2 x
  186.       button.box.width = width;9 T9 E( ]& _* ^, X- U' N
  187.     }
    $ W9 W5 x( x; b% h
  188.     let bbox = button.root.getBBox();* z1 O3 w2 u4 i5 U! w
  189.     x += bbox.width + margin;
    ) G  X\" \% s: P; Z4 k
  190.     buttons.push(button);
    # ~# M* C. i5 ~$ \
  191.     prev = button;$ R% U% ]5 d9 _# }) l4 D
  192.     buttonMap.set(key, button);\" T  ?+ R+ Y( @: J3 I/ x3 u5 d
  193.     if (key === "ArrowUp") {
    # o/ ~4 k0 {7 z% S  G* @
  194.       button.box.height = 16;( H9 Q% |8 l' B3 M$ p2 U\" K
  195.       button.label.root.style.display = "none";
    : i& S0 c% g2 S# }3 K4 G# u\" k/ N
  196.     } else if (key === "ArrowDown") {
    7 ?% R\" }$ n+ Y! O
  197.       button.box.height = 16;* a- }: X* r) Y! Z/ @8 e3 a# M
  198.       button.x -= 32 + margin;5 P* E0 k$ Y- C4 p/ P
  199.       button.y += 16;
    1 }+ J0 F, }5 X9 [
  200.       button.label.root.style.display = "none";# s5 _: A, g$ t) l3 J
  201.       x -= bbox.width + margin;
      w4 l) X$ U( \& ~5 V
  202.     }
    1 V) m: w' b0 _# c' e0 ^2 \
  203.   }
    9 q! W; `\" ]( t, j0 ]
  204.   let right = prev.x;# f/ P) r& L. G: p6 x9 j
  205.   if (right < 630) {% o+ ^1 \* g9 ~8 G* _( Z- i8 Y
  206.     prev.box.width = 630 - right;
    ; j+ X6 d# s; k# u2 k
  207.   }; Z5 J2 h2 G( t+ b4 X$ n; E  `. S
  208. }9 ?9 t( O- Z- A6 y9 H
  209. // console.log(keycodes["0"], shift, capslock);
    + \8 X( `/ O4 t) Q, Q5 k0 U
  210. let active = [];  @# b5 B& p- n, [
  211. window.onkeydown = function (event) {* W$ n. i+ _$ F5 |; b1 l\" ^: G5 y
  212.   for (let i = 0; i < buttons.length; i++) {$ A. |7 z9 D8 w  j- y
  213.     let button = buttons[i];
    ! C4 Q! i! b. Y8 d
  214.     if (\" B2 f9 E8 q* K
  215.       button.label.contents === event.key ||( U& R: E3 t# u$ j
  216.       (keycodes[event.key] != undefined &&
    ) E% I: j, Z6 H% ^4 O
  217.         button.label.contents === keycodes[event.key].Symbol)) {3 i7 N- s4 [( [\" ^5 p+ ]
  218.     ) {# R( n* z1 `0 [; V1 x
  219.       button.box.style.fill = "#f8f8f8";- ]6 \4 D\" v$ ?6 ]( k; b# Y7 I
  220.       button.label.style.fill = "#404040";
    7 h! U; ?* l- c# G1 O  b; c7 R/ [
  221.       button.active = true;
    \" [. o/ C5 {6 K2 l/ B* v8 l
  222.       active.push(button);, F0 K( a2 Q8 k- [+ \8 r9 r2 h) Z
  223.     }* |. t9 u2 ?% W1 c* M
  224.   }( w4 u5 v$ \9 W& T
  225.   buffer += `'${event.key}',`;% L. F2 e$ _% O$ {
  226. };
    6 @& T* d% M# I! U0 n5 {7 \2 [
  227. window.onkeyup = function (event) {
    4 D9 K  {3 j# f* O' L
  228.   let newActive = [];
    3 Y  I! {- L) ~\" n& p- G; n' [
  229.   for (let button of active) {0 B+ `8 _  z$ `8 N+ B; T
  230.     if (
    : h# Y8 h& ~$ K  g# ~& F: r5 J. f
  231.       button.label.contents === event.key ||
    , i/ u& g0 S5 U/ w3 c
  232.       (keycodes[event.key] != undefined &&
    ! I: P\" G, z9 V
  233.         button.label.contents === keycodes[event.key].Symbol)5 ~9 ?8 K7 `3 Z9 s/ @& v8 S3 ~: h
  234.     ) {
    6 `2 Z& O5 w' z: |
  235.       button.box.style.fill = "";\" K6 }& y  w7 f  B
  236.       button.label.style.fill = "";
    / Y/ e% ~. \1 k) G: T- {
  237.       button.active = false;
    8 j7 Z, T& A/ V5 V, d: P! Y6 W9 ^
  238.     } else {
    5 o6 Q/ t( q( R/ G) X$ W
  239.       newActive.push(button);1 f4 Z/ f! @9 V
  240.     }6 z( I# j! ~# W0 J  e2 c0 N8 Q
  241.   }' U: M/ f% T5 s2 \2 |& h* I$ p
  242.   active = newActive;
    + P- l! e9 N( Z- n- r1 _\" I) [3 i
  243. };2 r( w1 V+ t! c9 x5 k
  244. let bbox = interactive.input.root.getBBox();& k+ K. p: U7 b! s
  245. interactive.setViewBox(+ r+ b5 g! `; v$ Y2 Y; G) w
  246.   bbox.x - margin,
    ' X; y7 {# |/ {: x1 R2 [8 f
  247.   bbox.y,; v+ u5 d, r4 B2 g2 H
  248.   bbox.width + 2 * margin,+ B3 g& N/ x( E# @& A, Y
  249.   bbox.height
    ! A5 n9 ~5 @$ e4 ^; `
  250. );
    4 S) }5 F: g4 v) _5 A
  251. //# sourceMappingURL=keyboard.js.map
    : C$ {- e- ^/ p1 g. k0 G$ w

  252. ; Z: Z+ M  N+ |5 F! ?
复制代码

" L4 K. X9 V7 M1 U/ |2 E  @
zan
转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
您需要登录后才可以回帖 登录 | 注册地址

qq
收缩
  • 电话咨询

  • 04714969085
fastpost

关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

手机版|Archiver| |繁體中文 手机客户端  

蒙公网安备 15010502000194号

Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

GMT+8, 2026-8-7 08:50 , Processed in 0.487769 second(s), 51 queries .

回顶部