• Stars
    star
    217
  • Rank 182,446 (Top 4 %)
  • Language
  • Created almost 7 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Blackberry Q10 Keyboard

This document tries to summarize all the findings about the Blackberry Q10 keyboard, which seems interesting for DIY projects. The keyboard has a nice feel to it, is just the right size for typing and is fairly cheap (around 3 USD on Aliexpress).
It's available in black and white, there are versions with other letters like Arabic and Russian in addition to Latin. See [6] for details.
It also has a 4 LED backlight and a built-in MEMS microphone which can come in handy.

Reversing on the pinout

Most of the work was done by others in [2] and [1], but after discovering the microphone, I was curious to see how it was connected and get the complete pinout of the keyboard. The flex PCB inside the keyboard is covered with a black film, but it is possible to remove the film by lifting a edge with a scalpel and slowly peeling it off, it might break mid-way but you can just lift the corner and continue.

A high resolution scan of the flex is available in this respository in flex_scan.png

Pinout:


    GND   1 | 28  GND
MIC_VDD   2 | 27  ROW7
    MIC   3 | 26  LEDA 1 & 2
   AGND   4 | 25  LEDK 1 & 4
    GND   5 | 24  LEDA 3 & 4
   ROW1   6 | 23  LEDK 2 & 3
   COL1   7 | 22  ROW6
   ROW2   8 | 21  ROW5
   COL2   9 | 20  ROW4
   COL3  10 | 19  COL5
    GND  11 | 18  ROW3
    GND  12 | 17  COL4
    GND  13 | 16  GND
    GND  14 | 15  GND

Since the numbering can be confusing (is it the plug or the receptacle?), see footprint below for clarification.

KiCad resources

NOTE: These are not yet tested and while they are based on other people's working prototypes, I can't give a 100% guarantee these are correct, once I receive my board and verify everything, I will modify the document to reflect my findings.

Here is the final schematic symbol with the complete pinout, only one GND is visible, the rest is stacked under it and set to be invisible.

The receptacle for the keyboard connector is the Hirose BM14B(0.8)-24DS-0.4V(53), the datasheet is freely available and Hirose even offers a 3d model of the connector, if you like it.

There's also a 3d model of the keyboard itself which I took from [4] and converted to wrl.

I have a outline of the keyboard with the holes for tabs, but I haven't created a proper footprint file for it yet, will add in the near future:

Column/Row to key matrix

Copied from [3]

Regular keys:

COL1 COL2 COL3 COL4 COL5
ROW1 Q E R U O
ROW2 W S G H L
ROW3 sym D T Y I
ROW4 A P R ⇧ ↵ ⌫
ROW5 alt X V B $
ROW6 spac Z C N M
ROW7 🎤 L ⇧ F J K

Alternative keys:

COL1 COL2 COL3 COL4 COL5
ROW1 # 2 3 _ +
ROW2 1 4 / : "
ROW3 5 ( ) -
ROW4 * @
ROW5 8 ? ! 🔊
ROW6 7 9 , .
ROW7 0 6 ; '

Blackberry UX

This part describes the way the Blackberry phone used the keyboard, might be a good reference and starting point for implementing a custom UX. Based on [7].

  • Pressing the space twice adds a period and capitalizes the next letter
  • Pressing and holding a letter key inserts capitalizes the letter
  • Alt + R ⇧ turns on Caps Lock, pressing either shift turns it off
  • Alt + L ⇧ turns on Num Lock, pressing either shift turns it off
  • Pressing Alt will make the next key pressed insert a symbol from the alternative keys matrix
  • Pressing Shift will make the next key pressed be capitalized

Acknowledgements / Thanks

Huge thanks to JoeN for doing the initial reversing of the keyboard and finding the proper connector, and to WooDWorkeR for finding the backlight pinout and indirectly getting me interested in this keyboard in the first place.
Also thanks to ccadic for providing the 3d model of the keyboard.

Sources

[1] https://hackaday.io/project/27520-pimp-personal-information-manager-pager
[2] https://www.eevblog.com/forum/beginners/how-to-connect-to-a-very-very-challanging-blackberry-q10-keyboard-connector/
[3] https://forum.arduino.cc/index.php?topic=355709.0
[4] https://grabcad.com/library/blackberry-q10-keyboard-shape-1
[5] https://www.hirose.com/product/en/products/BM14/BM14B%280.8%29-24DS-0.4V%2853%29/
[6] https://help.blackberry.com/en/blackberry-q10/10.3.1/help/mar1396885531697.html
[7] https://help.blackberry.com/en/blackberry-q10/10.3.1/help/mba1343750483597.html

More Repositories

1

kicad-banana

KiCad Banana footprint - for scale!
91
star
2

bbq10kbd_breakout

60
star
3

awesome-pmod

A curated list of Open Source PMOD boards
44
star
4

bbq10kbd_i2c_sw

Repository moved to https://github.com/solderparty/bbq10kbd_i2c_sw
C
41
star
5

keyboard_featherwing_hw

34
star
6

serpente_hw

32
star
7

tinyuf2

An open source cross-platform UF2 bootloader based on the TinyUSB library
C
27
star
8

kicad-modules

A repository with all my custom footprints and 3d models for KiCad
22
star
9

arduino_bbq10kbd

C++
22
star
10

pmod_bbq10_keyboard

Moved to https://github.com/solderparty/pmod_bbq10_keyboard
HTML
21
star
11

kicad-library

A repository with all my custom symbols for KiCad
16
star
12

bbq10pmod_module

Kernel module for the bbq10pmod
C
15
star
13

pmod_rgb_oled_0.95in

HTML
14
star
14

keyboard_featherwing_sw

Moved to https://github.com/solderparty/keyboard_featherwing_sw
Python
13
star
15

lectronizer

A client for the lectronz.com maker marketplace.
C++
11
star
16

GT-USB-7010

10
star
17

arturo182_CircuitPython_BBQ10Keyboard

Moved to https://github.com/solderparty/arturo182_CircuitPython_BBQ10Keyboard
Python
8
star
18

stusb1600_breakout

HTML
7
star
19

type-c_splitter

5
star
20

SansaManager

My most successful Delphi app. For your own sake, don't look inside.
Pascal
5
star
21

cnc_featherwing

HTML
4
star
22

air602

4
star
23

TrayBrowser

A simple tool that sits in your system tray and offers a menu structure of all your mounted storage
C++
4
star
24

Encapsulation

QtCreator encapsualtion plugin
C++
4
star
25

AsmEmu

A simple assembly language emulator written in Qt for my x86 programming classes. http://i.imgur.com/FrIpZub.png
C++
4
star
26

Framework

A software designed as a framework to test and experiment with different logic and electronic circuit i.e. logic gates, segment displays, etc. Easy plugin API for creating additional components. (http://i.imgur.com/LAls8Pc.png).
C++
4
star
27

feather_mimxrt1011

HTML
3
star
28

QLibTwitter

A Twitter API library written in Qt.
C++
3
star
29

samd51_breakout

HTML
3
star
30

pmod_sgtl5000_breakout

HTML
3
star
31

IS31FL3741_breakout

HTML
2
star
32

kicad-repository

2
star
33

QLibOA

A OAuth library written in Qt.
C++
2
star
34

msgpack.solder.party

HTML
2
star
35

serpente_docs

CSS
2
star
36

strange_leds_hw

1
star
37

BattleTanks

A game for SCRUM course.
C++
1
star
38

QtCraft

A rewrite of the MiniCraft game by Notch into C++. Just for fun.
C++
1
star
39

mosfet_breakout

HTML
1
star
40

fuel_gauge_charger_breakout

1
star
41

pmod_ov2640_camera

1
star
42

sama5d27c_breakout

HTML
1
star
43

tinyjava

TinyJava compiler and interpreter written for Compiler Construction course.
Java
1
star
44

samd09_breakout

1
star
45

bbq10kbd_kit

1
star
46

arturo182_CircuitPython_ltr303als

Python
1
star
47

rp2350_minimal_kicad

1
star
48

pypicotool

Python
1
star