Use o comando xev. Quando você pressionar enter, o xev será iniciado. O xev leva todas as informações de entrada e informações sobre a chave para a linha de comando. Eu recomendo colocar o mouse sobre a tecla exit da janela do xev, pressionar caps lock (ou qualquer outra tecla que você queira descobrir) e sair imediatamente do xev. As linhas relevantes no meu sistema, para caps lock, são algo como:
KeyPress event, serial 36, synthetic NO, window 0x4400001,
root 0x27a, subw 0x0, time 19164277, (16,-9), root:(1156,46),
state 0x2, keycode 66 (keysym 0xffe5, Caps_Lock), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
KeyRelease event, serial 36, synthetic NO, window 0x4400001,
root 0x27a, subw 0x0, time 19164397, (16,-9), root:(1156,46),
state 0x2, keycode 66 (keysym 0xffe5, Caps_Lock), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
Observe keycode
(66) e keysym
(0xffe5).
Agora, você também pode obter dados para outra chave - uma que você realmente não usa e que, no contexto em que deseja usar o botão caps lock, não faz nada. Portanto, se você quiser que o caps lock ative a caixa de pesquisa do Unity (como o super costuma fazer), talvez use `, por exemplo. Na minha máquina:
keycode 49 (keysym 0x60, grave)
Ligue a função da nova tecla ao botão Caps Lock, usando xmodmap. Tenho certeza que você deseja usar um comando como:
xmodmap -e "keycode 66=0x60"
Agora, se você pressionar o botão de bloqueio de maiúsculas e minúsculas em uma caixa de texto, o caractere grave (`) aparecerá. Mas se você mapear uma tecla de atalho, ela fará outra coisa. Se você quiser usá-lo em uma caixa de texto, talvez substitua caps lock por shift esquerdo ou f10 ou qualquer outra coisa que não pareça interferir no comando que você deseja usar.